EAN Check.comEAN Check.com

Changelog

What's new in EAN Check. Every release documented.

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