What Code 39 is
Code 39, also called Code 3 of 9, was one of the first alphanumeric barcodes, introduced in 1974. Each character is nine elements (five bars and four spaces), three of which are wide. It encodes the capitals A to Z, the digits 0 to 9, space and six symbols: - . $ / + %. It is self-checking, so a check digit is optional, and every scanner reads it.
When to choose it
Code 39 is wider than Code 128 for the same data, so for a new system Code 128 is usually better. Choose Code 39 when a system, a customer or a standard asks for it: US defence (MIL-STD-129 LOGMARS), automotive industry labels, many asset-management packages, and older warehouse and library systems. Some ID badge and access systems also expect it.
Size and quiet zone
Code 39 tolerates printing variation well because its wide and narrow elements differ by a ratio of 2 to 3 times. Use a narrow element of at least 0.19 mm for close scanning and larger for distance; the quiet zone is at least 10 narrow elements on each side. Set the width and bar height and the tool reports the resulting module size.
Characters
Lower-case letters are converted to capitals, and any other character is rejected with an explanation. The human-readable line shows the start and stop asterisks, which is the common convention; turn the text off if your label design prints its own.
Printing tips
- Print at 100%. In the print dialog choose "Actual size" or 100%, never "Fit to page". Scaling changes the bar widths, and a barcode printed at 94% can fall outside the reader's tolerance.
- Use vector files where you can. The SVG and PDF downloads are vector: bars stay sharp at any size and the PDF page is exactly the barcode's size. Use PNG for software that only takes images, at 300 dpi for office printers and 600 dpi for thermal label printers.
- Dark bars, light background. Black on white scans best. Dark blue and dark green work; red, orange and yellow bars are invisible to red-light laser scanners. The tool warns when the contrast is low.
- Keep the quiet zone. The clear margin either side of the bars is part of the symbol. Do not let text, a box edge or a label edge into it.
- Test before a print run. Print one, then scan it with the scanner your customers or staff will actually use, and with a phone app, before printing hundreds.
Why barcodes fail to scan
- Too small or scaled. Bars printed narrower than the reader can resolve, or a file squashed in one direction when it was placed in artwork.
- No quiet zone. Text, a border or the edge of the label too close to the first or last bar.
- Low contrast. Grey on grey, coloured bars on a coloured background, or bars printed on a shiny or transparent surface.
- Ink spread and blur. Inkjets on absorbent paper and worn thermal printheads widen the bars. Print a test and check the bars look crisp; for thermal printers, use 600 dpi or the printer's native resolution.
- Curved or creased surfaces. Bars wrapped around a narrow bottle or across a fold. Turn the barcode so the bars run with the curve (picket fence across a flat face, ladder around a cylinder).
- Wrong data. A check digit that does not match, or a number with the wrong length. This tool checks both before it draws anything.
Which download to use
- SVG for designers and packaging artwork. It is a vector file sized in millimetres, so it opens at the right size in Illustrator, Inkscape, Affinity and Canva, and stays sharp when printed. Do not stretch it in one direction.
- PDF when you send a file to a printer or place it in a print layout. The page is exactly the size of the barcode, quiet zone included, so it can be placed at 100% without measuring.
- PNG for software that only accepts images: label printer apps, spreadsheets, online stores and word processors. Choose 300 dpi for office printers and 600 dpi for thermal label printers. The tool rounds each module to a whole number of pixels so the bars stay crisp, which can make the PNG slightly smaller or larger than the millimetre size; the size line under the preview shows the result. Tick "transparent" to drop the background for placing on coloured artwork, but keep a light background behind the bars when printed.
To make many at once, use the ZIP option below the generator: paste one value per line or load a CSV and download PNG or SVG files named after each value.
How this tool works
Barcodes are drawn in your browser with bwip-js, an open-source (MIT) port of Barcode Writer in Pure PostScript, and PDFs are written with pdf-lib. Nothing you type is uploaded, and the page works offline after the first visit. Single barcodes are free in every format with no watermark. Paid licences cover print-ready label sheets and large batches; see the box above.