GS1 DataBar Omnidirectional Composite Generator

Generate GS1 DataBar Omnidirectional Composite barcodes in your browser with live preview, validation, and PNG/SVG export.

Advanced options
Enter a value to see a live preview.
Options

These map directly to real generator options; anything not listed here is available under Advanced options above.

What GS1 DataBar Omnidirectional Composite is

GS1 DataBar Omnidirectional Composite pairs a GS1 DataBar Omnidirectional linear symbol (already covered separately in this catalog) with a linked 2D composite component printed directly above it, so a single label can carry a GTIN plus supplemental Application Identifier data (a batch/lot number, best-before date, or similar) that would not fit -- or would not print reliably -- as part of the linear symbol alone. Confirmed directly: bwipp_databaromnicomposite parses the pipe-delimited "<linear>|<composite>" payload with its own internal bwipp_gs1process() call, then delegates the linear-component drawing to bwipp_databaromni() and the composite-component drawing to a second, separate internal bwipp_gs1_cc() call -- the same composite-pairing shape already established for upcacomposite/gs1-128composite.

Generate it now

Enter the linear GTIN payload and a composite-component payload separated by a pipe character, e.g. "(01)00012345678905|(10)ABC123" -- the companion Application Identifier in the composite half must be parenthesized.

Valid input

A pipe character must separate the linear payload from the composite-component payload (bwipp.missingCompositeComponent rejects a missing pipe). The linear half follows GS1 DataBar Omnidirectional's own rules: it must begin with the (01) Application Identifier followed by a 13 or 14-digit GTIN with a valid Mod-10 check digit. The companion Application Identifier in the composite half must be parenthesized -- an unparenthesized value (e.g. "10ABC123" instead of "(10)ABC123") is rejected with bwipp.GS1valueTooLong because the parser cannot tell where the prior AI's value ends without it. A bad checksum on the linear GTIN is independently rejected with bwipp.GS1badChecksum.

Key options

Supported options include height (a real, pass-through option reaching the underlying databaromni delegate). Real, literal default is the sentinel -1 (auto-computed). "linkage" is a real databaromni option too, but this bcid unconditionally forces it to true regardless of any caller-supplied value, since a linked composite component is always present here by definition.

Output and printing

Export SVG for vector-precise label artwork or PNG for a quick proof.

Common uses

Retail and healthcare items that need to carry a GTIN plus supplemental data (lot/batch, expiration, or a serial number) on a single, size-constrained label use this composite pairing when the plain GS1 DataBar Omnidirectional symbol alone cannot fit that extra data.

Example

See the live preview above, seeded with a bwip-js-verified valid value.

Size guidance

The composite component's own size (CC-A or CC-B, chosen automatically) sits above the linear component; a fixed height changes the linear component's own bar height without affecting the composite component's row layout.

Troubleshooting

A rejected value usually means either the pipe separator is missing, the linear GTIN's own check digit is wrong, or the composite-component's own companion Application Identifier is missing its parentheses.

Related formats

Related formats: the separately-covered plain GS1 DataBar Omnidirectional generator (no composite component), and GS1 DataBar Stacked Omnidirectional Composite / GS1 DataBar Truncated Composite for other DataBar variants paired with a composite component.

FAQ

Why was my companion Application Identifier rejected?

The companion AI in the composite half must be parenthesized -- e.g. "(10)ABC123", not "10ABC123". Without the parentheses, the parser cannot tell where the linear GTIN's own value ends, and rejects it as too long.

Is the composite component always drawn?

Yes -- this capability always draws a real composite component from the data you provide after the pipe character, and its internal linear-component flag is permanently on by definition. There is no way to render just the linear half from this page; use the separate plain GS1 DataBar Omnidirectional generator for that.