EAN-13 check digit calculator
Merchandisers, developers, and packaging teams often have an 11- or 12-digit GTIN fragment from a spreadsheet, ERP export, or supplier list and need the correct 13th check digit before the code can be printed or entered into a system -- a different job than generating from a code you already know is complete.
A calculator, not just a renderer
This experience is built around the check-digit workflow itself: type a 12-digit payload and it computes the standard GTIN mod-10 check digit and shows the resulting 13-digit code before rendering it, or type a full 13-digit code to confirm whether its own check digit is already correct.
Example data
The generator is seeded with a 12-digit GTIN fragment (distinct from the primary experience's example) so you can see bwip-js compute the 13th check digit before replacing it with your own payload.
Workflow
Enter your 12-digit GTIN fragment, confirm the calculated 13th digit against your product master data (or enter all 13 digits to validate an existing code), then export SVG or PNG once it's correct.
Job-specific settings
The optional rendering preset sets bar height to 20mm ("height": 20). This is a tool setting, not a claim that 20mm is compliant for every retail application.
Scanning notes
bwip-js reserves EAN-13's mandatory quiet zone unconditionally; cropping the exported image into that margin during packaging layout is a common cause of point-of-sale scan failures.
Common mistakes
The most common error is providing a 13th digit that does not match the computed Modulo-10 check digit -- often from a transcription mistake or a supplier list that dropped a digit.
Standard
EAN-13/GTIN-13 numbering, check-digit calculation, and symbol requirements are defined by GS1 and ISO/IEC 15420.
Related
For small packages, see the EAN-8 generator; for North American legacy retail, see UPC-A (which uses the same check-digit calculation over 11 digits).
FAQ
Can I use this to validate a 13-digit code I already have, not just complete a 12-digit fragment?
Yes -- entering all 13 digits runs the same Modulo-10 check rather than skipping it, so an incorrect 13th digit is rejected the same way it would be on the primary generator.