What EAN-13 Composite is
EAN-13 Composite pairs a standard EAN-13 linear barcode with a linked 2D composite component carrying supplementary GS1 data (a batch/lot number, best-before date, or similar). bwip-js draws this by parsing the pipe-delimited "<EAN-13 digits>|<composite AI data>" payload, delegating linear-component drawing to the already-covered EAN-13 encoder and composite-component drawing to its own internal GS1 Composite Component encoder -- confirmed directly. Unlike the GS1 DataBar family's own composite capabilities, EAN-13 Composite forces no separate "linkage" flag of its own (confirmed directly reading the complete function body).
Generate it now
Enter a value in the form "<13-digit EAN>|<composite AI data>" -- for example "9520123456788|(99)1234-abcd" -- to see a live preview.
Valid input
A pipe character must separate the linear component from the composite component (bwipp.missingCompositeComponent rejects a value with no pipe). The linear half must be a valid 13-digit EAN-13 value, and the composite half must be valid GS1 Application Identifier data with each companion AI value wrapped in parentheses.
Key options
Supported options include includetext and height, both real EAN-13 options genuinely reaching this capability because it forwards the caller's live options into its own internal EAN-13 call. Real, literal defaults: includetext false (no human-readable digit line beneath the bars), height -1 (bwip-js auto-computes a bar height). This bcid also declares its own real "guardwidth"/"guardheight" options, but both are confirmed to have zero effect on the rendered output at this capability's own example -- neither is a genuinely working control.
Output and printing
Export SVG for vector-precise label artwork or PNG for a quick proof.
Common uses
EAN-13 Composite is used on retail items that need both a standard EAN-13 for point-of-sale scanning and supplementary GS1 data (batch/lot, best-before date) carried by the linked composite component -- typically fresh or perishable goods.
Example
See the live preview above, seeded with a bwip-js-verified valid value.
Size guidance
The composite component's own row count scales with the data supplied; a fixed height only affects the linear EAN-13 component's own bar height.
Troubleshooting
A rejected value usually means the pipe separator is missing, the linear half is not a valid 13-digit EAN with a correct check digit, or a companion AI value in the composite half is not wrapped in parentheses.
Related formats
Related formats: the separately-covered plain EAN-13 generator (no linked composite component) for when only the linear component's own data is needed.
FAQ
Do the guardwidth/guardheight options do anything?
No -- confirmed empirically, these two declared options have zero effect on the rendered output at this capability's real committed example; they are not exposed as controls in this generator for that reason.