Make a Code 39 barcode
Capital letters, digits and a few symbols, with the start and stop asterisks added for you.
- Nothing is uploaded
- Works offline after first visit
- Open source
- No watermark, no sign-up
Make a Code 39 barcode from capital letters, digits and a few symbols, with an optional check character. It is free, and what you type is not uploaded: everything runs in your browser on your device. The barcodes are drawn on this page, and after one visit and a short wait the page works offline.
Size, colours and options
Type above and the barcode appears here.
Done
Open the network tab. Your files never appear in it.
Add files and run the tool to see every request this tab makes.
Your files are processed on this device and never sent to a server. Reload the page to clear everything from memory.
Code 39 is one of the oldest general-purpose barcodes. It holds capital letters, digits, space and the symbols - . $ / + %, 43 characters in all, and some older inventory, asset-tag and ID systems still ask for it by name.
Every Code 39 barcode starts and ends with a * character. The page adds both, so type only your own text. A * inside the text is refused, because a scanner would take it for the end.
Lowercase letters are changed to capitals as you type. This page does not use the extended version of Code 39 that spells out lowercase with pairs of characters, so anything outside the 43 characters is refused with a message that names it.
The optional check character
- Code 39 does not need one, but some systems ask for it. Tick Add check character and the page adds one character, worked out by giving every character a value (0 to 9, then A to Z as 10 to 35, then - . space $ / + % as 36 to 42), adding the values and dividing the total by 43. The remainder is the value of the check character.
- HELLO adds up to 17+14+21+21+24 = 97. 97 divided by 43 leaves 11, which is the letter B, so the barcode carries HELLOB. The extra B is shown under the bars, and the system reading it has to expect it.
Wider than Code 128
- Each Code 39 character takes more room than a Code 128 character, so the same text makes a wider barcode. When no one asks for Code 39, the Code 128 barcode generator gives a shorter barcode for the same text.
How it works
- Type capitals, digits, space or - . $ / + %. Lowercase letters become capitals.
- Tick Add check character only if the system that will read the barcode expects one.
- Save a PNG, SVG or PDF and test-scan a printed copy.
In your browser, not on a server
JsBarcode (MIT), a small open-source library, turns your number or text into the pattern of bars in this page. The page first checks the number against the rules of the type you chose and works out the check digit itself. The PNG is painted on a canvas by your browser, the SVG is written as plain rectangles, and the PDF is made by pdf-lib (MIT) in the tab.
Compared with upload-based tools: The number you type may be an unreleased product or an internal asset ID. Here the barcode is drawn on your device, so the number never leaves it.
Verify it yourself. Give the page a short while after one visit to save itself for offline use, then turn off Wi-Fi or switch to airplane mode and run the tool again. Or open your browser's developer tools (F12, or Cmd-Option-I on a Mac), pick the Network tab, and watch it while you convert. The panel above does the same count for you.
Questions
Do I type the asterisks?
No. The page adds the * at the start and the end. If you type one, the page asks you to leave it out.
Why does my scanner show an extra character at the end?
If Add check character is ticked, the last character is the check character, and a scanner that is not set to verify it passes it on with the text. Leave the box unticked if the receiving system does not use it.
Can I use lowercase letters?
Not as lowercase. Code 39 has only capitals, so the page turns them into capitals and shows you the result. Use Code 128 if case has to survive.
Should I choose Code 39 or Code 128?
Choose Code 128 unless a customer, a form or an older system names Code 39. Code 128 holds more characters and makes a shorter barcode.
Is what I type uploaded anywhere?
No. The barcode is drawn by code running in this page, so the number or text you type stays on your device. After your first visit and a short wait you can turn off your internet connection and it still works.
More image tools
Barcode generator
Type a number or text, pick the barcode type, and save the barcode as an image or a PDF. It is drawn on this page.
Favicon generator
Drop in your logo and get every icon a website needs, plus the HTML to paste. Unreleased logos stay on this device.
Remove background
Cut out people, pets and products at full resolution. The photo never leaves this device.
Passport photo maker
Crop a photo to passport size with the head at the right height, and get a sheet to print at any photo counter.
Other conversions
- BMP to JPG
- PNG to BMP
- TIFF to JPG
- TIFF to PNG
- PSD to JPG
- PSD to PNG
- WebP to GIF
- PNG to GIF
- JPG to GIF
- JPG to TIFF
- UPC barcode generator
- Code 128 barcode generator
- ISBN barcode generator
- ITF-14 barcode generator
- EAN-13 barcode generator
- Color palette from image
- HEX color from image
- Blur text in image
- PNG compressor
- Reduce PNG size
- GIF compressor
- Reduce GIF size