Make a Code 39 barcode, with the optional modulo 43 check character
Runs in your browser. Nothing you type is sent anywhere. Updated on 25 Oct 2026.Code 39, also called Code 3 of 9, is the old workhorse of defence, automotive and library systems. It holds capital letters, digits and a handful of symbols, and every scanner ever made can read it without configuration. The trade-off is width: it uses about three times the space of Code 128 for the same data.
Open the page with Code 39 already selected as the Barcode type.
Type digits, capital letters or the symbols - . space $ / + %.
Turn on "Add the modulo 43 check character" if your scanner or system expects one.
Use the wide bars switch to choose 2 or 3 times the narrow bar, then press SVG or PNG.
This barcode generator makes the six one-dimensional symbologies people actually need: EAN-13, EAN-8, UPC-A, Code 128, Code 39 and ITF-14. Type the data, get the barcode, and download it as SVG for print or PNG for a document. Bar width, height, margin and the human-readable text underneath are all adjustable.
Check digits are handled properly. For EAN-13, EAN-8, UPC-A and ITF-14 you can enter the data without the final digit and it is calculated, or with it and it is verified; if it is wrong you are told the digit it should be, rather than being handed a barcode that scans as the wrong product. Code 39 can add its modulo 43 check character. Code 128 always carries a check character inside the bars, which is why it is never printed.
The encoding is written out in this tool rather than pulled in from a library, so every table can be read and every symbol is tested against published examples: 5901234123457, 96385074, 036000291452, 15400141288763 and the Code 39 check character W for CODE39. Quiet zones follow the GS1 specification, and ITF-14 can print bearer bars for corrugated cardboard.
The rest of the article, and all 6 questions about Barcode Generator, are on the Barcode Generator page.
Pick the symbology and type the data without the final digit: 12 digits for EAN-13, 11 for UPC-A, 7 for EAN-8, 13 for ITF-14. The check digit is calculated and shown. If you paste the complete number instead, it is verified, and a wrong check digit is named rather than silently accepted.
For a retail product sold outside North America use EAN-13, inside it use UPC-A. For a shipping carton use ITF-14. For anything internal, such as an asset tag, a bin or an order number, use Code 128: it holds letters as well as digits and is the most compact of the six.
No, and it does not pretend to. QR is a two-dimensional code with Reed-Solomon error correction, which is a different job from drawing bars. The QR Code Generator on this site makes QR codes for links, WiFi, contacts and UPI payments.
Three usual causes. The quiet zone, the blank space at each end, was cropped away; increase the margin. The bars are too narrow for the printer, so raise the module width. Or the image was a small PNG stretched to fit, which blurs the edges; use the SVG instead.
Still stuck? Ask about Barcode Generator and anybody who knows can answer. No account needed.
Same job, other tools: GUID Generator – Generate GUIDs for .NET, SQL Server and Windows, in brace format · ULID Generator – Sortable 26-character ULIDs, monotonic within a millisecond, with a time decoder · SHA-256 Generator – SHA-256 hash of any text or file, in hex or Base64 · Cron Expression Generator – Generate a cron expression by choosing when the job should run.
On the related tools: Sitemap Index Generator – Split a large site into numbered sitemaps with an index file.
In the collection Barcode and QR Code Tools.