EAN Check.comEAN Check.com

Changelog

Every release of eancheck, newest first, with what was added, changed and fixed.

v1.6.0

+Added

  • Barcode Generator at /barcode-generator, with type pages for UPC-A, EAN-13, ITF-14, Code 128, Code 39 and Data Matrix. 14 barcode types drawn by BWIPP (bwip-js) in the browser, at the GS1 size with the size in millimetres shown live. SVG, EPS, PDF and PNG (300, 600 or the label printer's dpi). Missing check digits are added and wrong ones named with the right digit
  • Bulk mode: paste a list, upload a CSV or build a numbered sequence, up to 5 000 codes, as a ZIP (with failed-rows.csv) or an Avery or grid label sheet PDF. GTIN lists can mix UPC-A, EAN-13, EAN-8 and ITF-14; each row gets its type by length
  • "Printing on" presets for office printers, print shops, Amazon and thermal label printers at 203, 300 and 600 dpi (bars snap to whole printer dots), a print test page with a 100 mm ruler, a share link, and settings remembered in the browser and shown as chips under the preview
  • More settings: text under the bars (digits, own text or none), EAN-2 and EAN-5 add-ons, rotation, rectangular Data Matrix, bar and background colours with a red-light scanner contrast check, units in mm, inches or mils, and bar width reduction
  • WebMCP tools for browser agents on every tool page (lib/agent-tools.ts), loaded only where the browser supports WebMCP
  • "Make a barcode" links from the check digit calculator, barcode identifier, repair tool and ISBN converter
  • InfoTip help on every generator control

~Changed

  • /llms.txt is generated: all tools, the agent tools per page, and standards facts
  • Structured data: entities have their own @ids and Wikidata sameAs, which fixes two pairs of merged nodes; HowTo blocks removed (Google stopped showing them in 2023); the dead site search action removed; header, footer and the site graph come from one tool list
  • Every page keeps og:site_name, og:locale and a share image; the generator has its own share image drawn by the barcode engine
  • Sitemap: QR Code Recovery added; article pages report their real modified date
  • Next 16.3.8, React 19.3, TypeScript 7, shadcn/ui components mapped onto the site tokens

v1.5.1

+Added

  • Callout component now supports `error` and `success` variants alongside the existing tip, warning, insight, and checklist. Both new variants use the semantic colour tokens (`--color-error-*` and `--color-success-*`) so they will pick up dark mode automatically when the rest of the app is retrofitted. Per-variant label text colour, so the heading reads cleanly against the tinted background on the two new variants

v1.5.0

+Added

  • ISBN Converter at /isbn-converter, single-input ISBN-10 to ISBN-13 and back tool. Side-by-side output cards with per-card copy buttons, automatic kind detection (10-char vs 13-char), X check digit handling, graceful 'not convertible' state for 979-prefixed ISBN-13 values that have no ISBN-10 equivalent, and invalid-check-digit surfacing with the expected character so broken inputs are not silently converted into broken outputs
  • ~2000 words of research-backed content covering the 1966 Gordon Foster 9-digit SBN origins at Trinity College Dublin, ISO 2108 in 1970, the 2007 transition to the 13-digit GS1-compatible form, full ISBN-10 and ISBN-13 structural breakdowns, worked examples of both the mod-11 and mod-10 check digit algorithms, the 978 vs 979 Bookland prefix story, and real-world use cases in MARC library catalogues, ONIX metadata feeds, used-book marketplaces, and academic citation systems
  • lib/isbn.ts top-up: detectIsbnKind, canConvertIsbn13To10, and normalizeIsbn convenience predicates for the converter UI
  • lib/isbn-converter-examples.ts with 8 curated examples spanning English, German, Japanese, and French (979-10) ISBNs plus one X check digit and one intentionally broken value
  • Entities for iso-2108 and international-isbn-agency in lib/entities.ts

~Changed

  • Header tools dropdown, related-tools section, footer Tools column, sitemap, site-wide JSON-LD (Organization.makesOffer, SiteNavigationElement.hasPart, ItemList #tool-list 9 → 10 items), and home-page significantLink/relatedLink arrays all extended with the new tool
  • Cross-link added from /barcode-identifier to /isbn-converter via the related-reading block
  • .gitignore extended with preventative rules for Playwright and Chrome DevTools MCP artifacts (test-results, playwright-report, playwright/.cache, trace.zip, traces, and root-level screenshot*.{png,jpg,jpeg,webp}) so generated files never leak into source control

v1.4.0

+Added

  • Barcode Identifier at /barcode-identifier, single-input "what is this code?" detector. Recognises GTIN-8/12/13/14, ISBN-10/13, ISSN, SSCC-18, GLN-13, ITF-14, GS1-128 paren and FNC1 strings, GS1 Digital Link URLs, 17-character VIN (ISO 3779), 15-digit IMEI (Luhn), and Amazon ASIN. Primary plus secondary "Also matches" hints handle ISBN-13 vs GTIN-13 and GTIN-13 vs GLN-13 overlaps honestly. Inline Application Identifier breakdown for GS1-128 inputs, path-segment breakdown for Digital Link inputs, VIN segmentation into WMI/VDS/VIS. Live detection with 200ms debounce, transparent normalization notes that show every transformation applied, invalid-check-digit path that routes to the repair tool
  • lib/isbn.ts with calculateIsbn10Check, isValidIsbn10, isValidIsbn13, isbn10To13, isbn13To10, formatIsbn10Display, formatIsbn13Display (mod-11 engine reusable by the future /isbn-converter tool)
  • lib/issn.ts with calculateIssnCheck, isValidIssn, formatIssnDisplay (8-character mod-11 with X)
  • lib/imei.ts with calculateImeiCheck, isValidImei (15-digit Luhn)
  • lib/vin.ts with isVinFormat, calculateVinCheck, isValidVin, segmentVin (ISO 3779 transliteration table and weighted mod-11)
  • lib/asin.ts with isAsinFormat, isLikelyNonBookAsin (format-only validation for the Amazon namespace)
  • lib/barcode-identifier.ts dispatcher with normalized pipeline and priority dispatch, returning a structured IdentificationResult with primary, secondary, normalizationNotes, and whatWeTried
  • lib/barcode-identifier-examples.ts with 14 preloaded examples covering every supported type plus one intentionally broken GTIN-13 and one deliberate no-match
  • FeedbackBox primitive at components/shared/feedback-box.tsx, reusable across tools, submits to a new API route with honeypot plus 3-second bot gate and always surfaces a prefilled mailto fallback
  • First API route on the site at app/api/feedback/route.ts, accepts feedback submissions from allowlisted contexts and forwards them to contact@eancheck.com via the Resend HTTP API. Env vars RESEND_API_KEY, FEEDBACK_TO_EMAIL, FEEDBACK_FROM_EMAIL. No database, email is the store
  • Entities for isbn, issn, gtin, vin, imei, asin, and iso-3779 in lib/entities.ts

~Changed

  • Header tools dropdown, related-tools section, footer Tools column, sitemap, site-wide JSON-LD (Organization.makesOffer, SiteNavigationElement.hasPart, ItemList #tool-list 8 → 9 items), and home-page significantLink/relatedLink arrays all extended with the new tool
  • Cross-links added from /gs1-128-parser, /gs1-digital-link, and /barcode-repair to the new identifier via their related-reading blocks

v1.3.0

+Added

  • GS1-128 Parser at /gs1-128-parser, single-input educational tool. Accepts paren notation, FNC1-delimited scanner output, and GS1 Digital Link URLs in the same input. Rich per-AI breakdown cards with category-coloured borders, interactive anatomy widget, three-format export block, QR code, ~1700-word explainer
  • Bulk GS1-128 Parser at /gs1-128-parser-bulk, implementer workflow tool. TanStack table with dynamic AI columns, inline cell editing, sort + per-column filter, column visibility toggle, row selection, bulk edit dialogs (Edit AI, Find & Replace, Shift Date), row actions menu, QR preview dialog with 24-at-a-time lazy rendering, PNG/SVG ZIP exports
  • Full GS1 Application Identifier registry (~580 AIs) in lib/gs1-ai-registry.ts with hand-written validators for GTIN/SSCC/GLN check digits and YYMMDD dates, programmatic generation for the 3xxx measurement family
  • lib/gs1-ai-parser.ts with unified parser for paren, FNC1, and Digital Link URL formats plus round-trip serializers
  • Shared QrBlock primitive at components/shared/qr-block.tsx, extracted from DigitalLinkPreview with a new minimal render mode for grid contexts, and a new copy-as-image button using the Clipboard API
  • Shared QrPreviewDialog primitive with Radix Dialog grid, batched rendering, and in-dialog PNG/SVG ZIP downloads
  • Semantic colour token system (--color-error/warning/success/info with bg/border/text variants and dark-mode equivalents), retrofitted across barcode-repair-form, check-digit-animator, and the warning section class
  • @radix-ui/react-dialog dependency

~Changed

  • lib/gs1-qualifiers.ts refactored to a thin adapter that filters the new AI registry to the 12 Digital Link qualifiers and reshapes each into the legacy Qualifier type; existing QualifierPicker, DigitalLinkForm, DigitalLinkAnatomy, and QualifierReference consumers work unchanged
  • DigitalLinkPreview slimmed from 249 to 100 lines, now delegates the entire QR code block to the shared QrBlock primitive
  • Header tools dropdown, related-tools section, footer Tools column, sitemap, site-wide JSON-LD (Organization.makesOffer, SiteNavigationElement.hasPart, ItemList #tool-list 6 → 8 items), and home-page significantLink/relatedLink arrays all extended with the two new tools
  • Cross-links added from /gs1-digital-link and /gs1-digital-link-bulk to the new GS1-128 pages (and vice versa) via the related-reading blocks

v1.2.0

+Added

  • Barcode Repair Tool at /barcode-repair, recovers smudged or partially unreadable GTINs by marking unknown digits with `?` or `*` and brute-forcing the GS1 mod-10 check digit. Supports GTIN-8/12/13/14 with up to 3 unknown positions, strict and tolerant input modes, candidate filter, and one-click validation in the main calculator
  • CheckDigitAnimator widget: live mod-10 visualiser with per-digit weight/contribution grid and a "what if" panel showing the resulting check digit for every alternative digit at any focused position. Drop-in component, reusable across future barcode tool pages
  • URL parameter support on the main barcode calculator: `?validate=<code>` or `?calculate=<code>` (comma/newline separated for bulk) pre-fills the input and auto-runs the matching action, used by cross-tool links

~Changed

  • Reading time chip removed from the visible article byline; the data still flows into JSON-LD as `timeRequired` so search engines and AI agents can surface it
  • Em dashes removed app-wide in favour of commas, colons, periods, and semicolons
  • Article copy across all rich pages humanised: comma-splice fixes, fewer puffery words, more direct phrasing
  • Header tools dropdown, related-tools section, sitemap, site-wide JSON-LD (Organization.makesOffer, SiteNavigationElement.hasPart, ItemList #tool-list) and home-page significantLink/relatedLink all extended with the new tool

v1.1.0

+Added

  • GS1 Digital Link Generator at /gs1-digital-link, turn any GTIN into a canonical Digital Link URL and QR code with optional batch, expiry, serial and other GS1 Application Identifier qualifiers
  • Bulk GS1 Digital Link Generator at /gs1-digital-link-bulk, convert a whole product catalogue from a single paste with auto-detected newline/TSV/CSV formats, sortable results table, CSV export, and one-click QR ZIP export
  • Three GTIN input modes (Manual, Auto-complete, Tolerant) with animated help chips and localStorage persistence
  • Custom resolver domain support for production Digital Link deployments
  • Reusable article content system: article primitives, interactive widgets (Digital Link anatomy, qualifier reference, classic vs Digital Link comparison, inline mini demo), and interlinked JSON-LD @graph builder with auto-populated TechArticle.mentions
  • Radix UI primitives (Select, Popover, Collapsible, ToggleGroup) for accessible interactive controls
  • Lazy-loaded qrcode and jszip libraries on the bulk page so they never enter the base bundle

~Changed

  • Related tools section refactored into two grouped categories ("More Barcode Tools" and "Other Utilities") on every page
  • Header tools dropdown extended with both new Digital Link tools
  • Site-wide JSON-LD (Organization.makesOffer, SiteNavigationElement, ItemList #tool-list) extended to cover the new pages
  • Sitemap extended with the new URLs

v1.0.1

~Changed

  • Removed card backgrounds and padding on mobile for a cleaner, space-efficient layout
  • Hidden output textarea spacer on mobile where textareas stack vertically

!Fixed

  • Input and output textareas not vertically aligned on desktop due to description text

v1.0.0

~Changed

  • Migrated from WordPress to Next.js 16 on Vercel
  • Rebuilt barcode calculator from jQuery to React with centralized GS1 mod-10 algorithm
  • Replaced 4 separate check digit functions with a single unified implementation
  • All pages statically prerendered for maximum performance
  • Modern responsive design with Tailwind CSS

+Added

  • Vercel Analytics and Speed Insights
  • Changelog page at /changelog
  • JSON-LD structured data on all pages

v0.9.1

!Fixed

  • Password eye toggle icon not rendering on Safari iOS
  • Strength meter color not updating when clearing the input field

~Changed

  • Updated About Passwords section with advice on using password managers

v0.9.0

+Added

  • Password strength checker tool with 5-criteria scoring (lowercase, uppercase, special characters, min 8, min 13)
  • Visual strength meter with Poor/Weak/Better/Strong levels
  • Show/hide password toggle

~Changed

  • Updated navigation to include all three tools under the Tools dropdown

v0.8.2

!Fixed

  • Sentence counter miscounting lines ending with abbreviations (e.g. "Dr.", "Inc.")
  • Custom search field not escaping regex special characters in user input

+Added

  • Additional FAQ entries covering word counters in Notepad++, VSCode, and WordPress

v0.8.1

+Added

  • How Counters Are Used section with practical examples for each counter type
  • External links to word processing software references

!Fixed

  • Paragraph counter returning 1 for empty input instead of 0

v0.8.0

+Added

  • Character & word counter tool at /character-counter
  • Real-time counting of characters, words, sentences, paragraphs, and spaces
  • Custom text occurrence search field
  • Comprehensive FAQ section with FAQPage schema markup

!Fixed

  • Corrected contact email typo in privacy policy

v0.7.1

+Added

  • Link to barcode tools on [Lime Convert](https://limeconvert.com) in the About Us section
  • Link to barcode validator on [Aarrange.com](https://aarrange.com)

!Fixed

  • GA4 events not firing when input contained only whitespace
  • Open Graph meta tags missing on the homepage

v0.7.0

+Added

  • Google Analytics GA4 tracking (G-0E14F3K3FL)
  • Event tracking for calculator and validator usage (input lines and length)
  • Privacy policy page

~Changed

  • Switched from Universal Analytics to GA4

v0.6.1

!Fixed

  • Ad consent banner not dismissing on mobile Chrome
  • Footer widget columns collapsing on tablet viewports

~Changed

  • Improved ad placement spacing to reduce layout shift

v0.6.0

+Added

  • Google AdSense integration with in-article fluid ads
  • Consent management platform for GDPR compliance

~Changed

  • Page layout adjusted to accommodate ad placements between calculator and buttons

v0.5.1

+Added

  • Barcode images showing visual examples of UPC, EAN-13, and GTIN-14 codes
  • 8-digit barcodes section under Supported Barcode Standards

!Fixed

  • GTIN-14 check digit calculation using wrong weight pattern for the first digit

v0.5.0

+Added

  • GTIN-14 barcode support for both calculate and validate modes
  • Bulk input now accepts comma-separated values in addition to newlines
  • Supported Barcode Standards section with detailed descriptions of each format

~Changed

  • Updated educational content with EAN and UPC explanations

v0.4.1

!Fixed

  • Validator incorrectly rejecting valid 12-digit UPC-A barcodes
  • Output textarea not scrolling to bottom after processing large batches

+Added

  • About Barcodes section explaining EAN and UPC history and structure

v0.4.0

+Added

  • Bulk barcode validation mode confirming check digits against GS1 standards
  • Validate button alongside the existing Calculate button
  • Output messages showing barcode type (GTIN-8 OK, GTIN-13 OK, etc.)

!Fixed

  • Edge case where trailing whitespace in input caused invalid results

v0.3.1

!Fixed

  • Browser freezing when processing inputs over 5 million lines without warning
  • Line breaks not preserved correctly when pasting from Excel

~Changed

  • Warning notice now specifies the 10 million line threshold for potential browser slowdown

v0.3.0

+Added

  • Bulk processing support for calculating check digits on multiple barcodes at once
  • Input area accepts one barcode per line
  • Output preserves input order

~Changed

  • Increased verified capacity to 1 million lines per call
  • Added warning notice about very large inputs

v0.2.1

!Fixed

  • Check digit calculation returning NaN for inputs with leading zeros
  • Input field not clearing previous results when recalculating

+Added

  • Footer with smooth-scroll anchor links to page sections

v0.2.0

+Added

  • GTIN-12 (UPC-A) barcode support
  • GTIN-8 barcode support
  • Error handling for non-numeric and invalid-length inputs

~Changed

  • Refactored check digit calculation into separate functions per barcode type

v0.1.1

!Fixed

  • Calculator not working on Internet Explorer 11
  • Incorrect check digit for barcodes starting with zero

+Added

  • How to Use section with step-by-step instructions
  • Scope section describing the tool's capabilities

v0.1.0

+Added

  • Single GTIN-13 (EAN-13) check digit calculator
  • Basic input field and output display

v0.0.1

+Added

  • Initial launch of eancheck.com on WordPress with GeneratePress theme
  • Single-page barcode calculator concept
  • Basic site structure and branding