What GS1 DotCode is
GS1 DotCode is the GS1-structured sibling of the plain DotCode symbology: bwip-js enforces GS1 Application Identifier structure and checksum rules on the payload, then delegates the actual dot-matrix drawing entirely to its DotCode encoder. Confirmed directly: bwipp_gs1dotcode calls bwipp_gs1process() (the same shared GS1-processing step gs1dlqrcode/gs1datamatrix/databarexpanded already use in this catalog) before ever reaching its bwipp_dotcode() drawing delegate.
Generate it now
Enter GS1 Application Identifier data (e.g. (01)... for a GTIN) to see a live preview.
Valid input
The payload must be structured as GS1 AI data (parenthesized Application Identifiers) up to 2000 characters ("The input data is too long" beyond that). GTIN and other checksummed AI values are validated by BWIPP itself at render time -- a GTIN with a deliberately corrupted check digit is rejected outright ("AI 01: Bad checksum"), not merely flagged by a separate validator.
Key options
Supported options include columns (5 to 200, the same real, generic DotCode layout option already used by the plain DotCode capability, passed straight through to gs1dotcode's own dotcode delegate) and parse (decodes BWIPP's own caret-escape syntax inside an AI value before GS1 linting runs -- not exposed as a typed control here, matching the identical precedent already set for gs1dldatamatrix/gs1datamatrix/gs1qrcode/swissqrcode). bwip-js's own real default for columns is the sentinel -1 (auto-size).
Output and printing
Export SVG for vector-precise label artwork or PNG for a quick proof.
Common uses
GS1 DotCode is used for high-speed package and case marking where a dot-matrix printhead is the established print technology and GS1 Application Identifier structure (GTIN, batch/lot, dates) is required.
Example
See the live preview above, seeded with a bwip-js-verified valid GS1 AI payload.
Size guidance
Overall symbol size is driven by rows/columns together; fixing columns explicitly changes the auto-computed layout bwip-js would otherwise select from the payload length.
Troubleshooting
A rejected render is usually malformed GS1 AI structure, a checksummed AI (like GTIN) whose check digit is wrong ("AI 01: Bad checksum"), or a caret-escape sequence in the payload with parse left off.
Related formats
Related formats: DotCode (the plain, non-GS1-structured sibling already in this catalog) and GS1-128/GS1 DataBar Expanded (other GS1-structured linear/2D carriers).
FAQ
Does bwip-js validate the GTIN checksum in a GS1 DotCode payload?
Yes -- unlike D3 AQR (a different capability in this catalog whose GS1 Digital Link semantics are checked only by a separate application-layer validator), GS1 DotCode's GS1 Application Identifier structure and checksums are enforced by BWIPP itself at render time. A corrupted GTIN check digit is rejected outright.