What Code 39 is
Code 39 is a self-checking linear symbology standardized as ISO/IEC 16388, encoding uppercase letters, digits, and the symbols - . $ / + % and space.
Generate it now
Enter your data to see a live Code 39 preview, then export PNG or SVG.
Valid input
Only the Code 39 character set is accepted; lowercase letters and unsupported symbols are rejected unless you use Code 39 Extended instead.
Key options
Supported options include includecheck (adds an optional Modulo-43 check digit), includetext, height, and scale.
Output and printing
Export PNG or SVG; Code 39's wider bars mean it needs more label width than Code 128 for the same data length.
Common uses
Code 39 remains common for asset tags, inventory labels, and industrial/automotive/defense identification systems with legacy scanner fleets.
Example
See the live preview above, seeded with a bwip-js-verified valid value.
Size guidance
Code 39 requires a clear quiet zone on both sides, and its lower density means labels need to be wider than Code 128 for equivalent data.
Troubleshooting
If input is rejected, check for lowercase letters or symbols outside - . $ / + % and space; switch to Code 39 Extended for full ASCII.
Related formats
Related formats: Code 39 Extended (full ASCII), Code 93, and Code 128.
FAQ
Is a check digit required for Code 39?
No -- the Modulo-43 check digit is optional in Code 39; enable includecheck if your downstream system expects one.