- What is a Code 39 barcode?
- Code 39 (also called Code 3 of 9) is a linear barcode that encodes uppercase letters A–Z, digits 0–9, and seven special characters (space, $ + − . / %). It was one of the first alphanumeric barcodes and remains widely used in industries requiring compatibility with older scanning hardware.
- What is the difference between Code 39 and Code 128?
- Code 128 is more space-efficient and can encode the full 128-character ASCII set, including lowercase letters. Code 39 is limited to 43 characters (uppercase only) and produces physically wider barcodes for the same data. Code 39 is preferred when you need guaranteed compatibility with older or specialized scanners that may not support Code 128.
- Does Code 39 require a check digit?
- No. A check digit is optional in Code 39 and rarely used in practice. Our generator creates standard Code 39 barcodes without a check digit by default, which is compatible with all Code 39 scanners.
- What industries still use Code 39?
- Code 39 is standard in the US Department of Defense (MIL-STD-1189), US automotive industry (AIAG standard), healthcare (blood bank labeling), and government asset tracking. Many legacy warehouse management systems were designed around Code 39 and still require it.
- Can I generate Code 39 barcodes from an Excel or CSV file?
- Yes. Upload your Excel or CSV file, select the column with your values (uppercase letters, numbers, and symbols only — lowercase letters are not supported by Code 39), and generate all barcodes in one batch.
- How many characters can a Code 39 barcode store?
- Code 39 has no defined maximum length, but practical reliability is best at 10–15 characters. Longer values produce physically wide barcodes that can be harder to scan with narrow-beam scanners. For longer alphanumeric codes, Code 128 is a better choice.
- Should I use Code 39 or Code 128 for a new project?
- Code 128, unless something downstream specifically requires Code 39. Code 128 handles the full ASCII set including lowercase, packs roughly 30 % narrower for the same data because it is continuous rather than discrete, and includes a mandatory check character. Code 39 remains the right answer when you are feeding an existing system built around it — AIAG automotive labels, DoD LOGMARS, HIBC healthcare labelling, or library circulation software configured decades ago.
- Why does my Code 39 barcode show asterisks around the value?
- The asterisk is Code 39's start and stop delimiter, and it is part of the symbol rather than your data. Our generator adds it automatically, so you should never type asterisks into your input. If your scanner reports the value wrapped in asterisks, that is a scanner setting — it has been configured to transmit the delimiters — and you can turn it off in the device's configuration rather than changing the barcode.
- Does Code 39 need a check digit?
- Not usually. Code 39 is self-checking: because each character uses exactly three wide elements out of nine, a single misread element cannot produce a different valid character, so most substitution errors fail structurally. An optional modulo-43 check character exists for applications that mandate it, notably some healthcare and defence specifications. If you add one, the scanner must also be configured to expect it, or it will report the check character as a trailing character in your data.