DotCode Generator

Generate DotCode 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 DotCode is

DotCode is a 2D symbology made of dots rather than continuous bars or cells, designed for high-speed inkjet/laser printing on packaging lines.

Generate it now

Enter your data to see a live DotCode preview, then export PNG or SVG.

Valid input

DotCode encodes up to 2000 characters ("The input data is too long" beyond that, confirmed directly against the pinned encoder). If you set both rows and columns explicitly, each must be from 5 to 200 and their sum must be odd -- bwip-js enforces this parity rule directly ("Sum of rows and columns must be odd").

Key options

Supported options include columns (a fixed column count instead of letting bwip-js auto-size the layout from your data). bwip-js's own real default leaves this unset and auto-computes both rows and columns.

Output and printing

Export SVG for vector-precise dot placement or PNG for digital previews.

Common uses

DotCode suits high-speed printing, packaging, and applications where a dotted 2D symbol tolerates print-head variability better than solid bars.

Example

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

Size guidance

As a dot-based symbol, DotCode tolerates minor dot placement variation from high-speed printers better than continuous-line symbologies.

Troubleshooting

If generation fails, the most common cause is exceeding the 2000-character capacity, or an explicit rows/columns choice outside the 5-200 range or with an even (rows + columns) sum.

Related formats

Related formats: GS1 DotCode, Data Matrix, and QR Code.

FAQ

Does a fixed print height change DotCode's rendered size the way a fixed column count does?

Yes -- DotCode itself computes a natural height from the row count and a fixed dot pitch, but bwip-js's shared rendering step still honors an explicitly supplied height and overrides that computed value, changing the rendered geometry. This works even though DotCode's own encoder never declares a height option itself.