Code 39 Extended Generator

Generate Code 39 Extended 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 Code 39 Extended is

Code 39 Extended ("Full ASCII Code 39") layers a 2-character shift-code scheme on top of plain Code 39's own 43-character alphabet so it can represent all 128 ASCII values -- lowercase letters, punctuation, and control characters that base Code 39 cannot encode directly. bwip-js maps every input byte through its own 128-entry shift-code table, then delegates the actual bar-pattern drawing to its Code 39 encoder -- confirmed directly: bwipp_code39ext builds the shift-encoded string itself and calls bwipp_code39().

Generate it now

Enter any ASCII text (letters of either case, digits, punctuation) to see a live preview.

Valid input

Up to 500 characters is accepted, and every character must be plain ASCII (byte value 0-127) -- bwipp.code39extBadCharacter rejects anything outside that range ("Code 39 Extended must contain only ASCII characters"). Because each ASCII byte can expand to 1 or 2 Code 39 characters once shift-encoded, the effective symbol length can be up to twice the input length.

Key options

Supported options include includetext and hidestars (this bcid's own real options), plus includecheck (Code 39's own real option, genuinely reaching the underlying delegate because code39ext forwards the caller's options unchanged). Real, literal defaults: includetext false, hidestars false (the leading/trailing "*" start/stop markers are shown whenever includetext is on), includecheck false (no Modulo-43 check character is computed or drawn unless requested).

Output and printing

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

Common uses

Code 39 Extended is used where an existing Code 39 reader/label workflow needs to encode data outside base Code 39's own 43-character alphabet -- serial numbers or asset tags with mixed-case letters or punctuation, for example -- without switching to a different symbology entirely.

Example

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

Size guidance

The rendered width grows with the shift-encoded length, not the raw input length -- characters outside base Code 39's own alphabet (lowercase letters, most punctuation) each cost 2 encoded characters instead of 1.

Troubleshooting

A rejected value usually means it contains a byte outside plain ASCII (128 and above) -- Code 39 Extended cannot represent extended/non-ASCII byte values at all.

Related formats

Related formats: the separately-covered Code 39 generator (the base 43-character alphabet only, no shift codes).

FAQ

How is this different from the regular Code 39 generator?

Both use the identical underlying Code 39 encoder for the actual bar patterns; this generator additionally shift-encodes any character outside Code 39's own 43-character alphabet (lowercase letters, most punctuation) into a 2-character Code 39 sequence first, so it can represent the full ASCII range.

Why is my rendered symbol wider than the number of characters I typed?

Every character outside base Code 39's own alphabet expands to 2 encoded characters instead of 1 once shift-encoded -- mixed-case or punctuation-heavy input renders wider than the same-length all-uppercase, all-digit input would.