Code 39 Barcode Generator

Encode letters, digits and seven symbols. Vector SVG, PDF or PNG. No signup, no watermark.

Free — no accountCode 39 & Code 93Vector SVG & PDFUp to 500 at once

Uppercase letters, digits, and - . $ / + % space.

Customize

Preview

Enter data to see preview

Runs in your browser. Nothing to install.

The picker above also holds Code 93, Code 128, UPC, EAN and nine other symbologies. All fourteen live on the barcode generator.

How it works

How a Code 39 Barcode Works

Code 39 draws every character as nine elements — five bars and four spaces — of which exactly three are wide. Three out of nine. That is where the name comes from, and it is also why the symbology behaves the way it does.

Self-checking, by construction

Because every character has the same three-wide-of-nine shape, a single misprinted or misread element produces a pattern that is not a character at all rather than a different valid one. The scanner rejects the read instead of returning the wrong data — which is why the standard leaves the check digit optional.

Asterisks at both ends

The * character marks the start and the stop, and tells the reader which direction it is scanning in. The generator adds them to the bars for you and leaves them out of the human-readable line, so you type the value and nothing else.

One character at a time

There are no shift codes, no mode switches and no compaction. Each character is drawn independently, which makes the symbology trivial for a cheap decoder to handle — and makes it the widest of the common linear formats.

The forty-three characters, in full

Code 39 has one alphabet and it is short. This generator accepts these characters and refuses everything else:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

0 1 2 3 4 5 6 7 8 9

-   .   $   /   +   %  (space)

Twenty-six letters, ten digits, seven symbols. No lowercase, no underscore, no colon, no hash, no brackets, no accented letters. Enter one of those and the tool says Code 39 supports: A-Z, 0-9, - . $ / + % and space rather than drawing a symbol that would not scan. Worth knowing if your values come out of a spreadsheet: a tab or a line break inside a cell is outside the alphabet too, even though it looks like blank space. Everything is encoded in your browser as you type — nothing you enter is sent anywhere to be turned into a barcode. For how linear barcodes compare with 2D codes in general, see our QR code vs barcode comparison.

An honest weakness

Code 39 Is Wide. Here Is Exactly How Wide.

Every Code 39 character costs sixteen modules — sixteen narrow-bar widths. Code 93 costs nine, and Code 128 costs eleven for a letter but only five and a half for a digit, because it packs two digits into a single character when the data is numeric. That is why twelve digits come to 101 modules in the table below rather than the 132 you would get by counting eleven apiece. These are measurements from the encoder that draws the barcode at the top of this page, not figures from a textbook.

DataCode 39Code 93Code 128
ABC-1234160 modules109 modules112 modules
123456789012224 modules145 modules101 modules
Each extra character+16 modules+9 modules+11 modules for a letter, +5.5 for a digit

Turn that into millimetres. At the 0.25 mm narrow bar this tool advises as a floor, and with the twenty modules of quiet zone all three symbologies need, twelve digits come to about 61 mm in Code 39 and about 30 mm in Code 128. Same data, same minimum bar, double the label. On a small carton or an asset tag that is the difference between fitting and not fitting, and shrinking the bar to compensate is exactly what pushes a barcode below the width a scanner can resolve.

Choose Code 39 when

  • A specification, a customer or a regulator names it. This is the usual reason, and it is a complete reason.
  • The scanners in the building are old, cheap, fixed-mount or of unknown vintage. Code 39 is the safest bet in linear barcodes; support for it is close to universal.
  • Your data is short, uppercase and alphanumeric — an asset tag, a rack location, a work-order number.
  • You want the simplest symbology that can carry letters, with nothing to configure at either end.

Choose something else when

  • You need lowercase letters or punctuation outside the seven symbols. Code 39 simply has no character for them.
  • The label is small or the value is long. Code 128 is the answer, and for numeric data it is less than half the width.
  • You are encoding a retail product for a till. That is UPC or EAN, and neither is interchangeable with Code 39.
  • You need a lot of data in a small square. That is a Data Matrix or a QR code, not a linear barcode at all.

The short version: use Code 128 unless something tells you not to. Plenty of things do tell you not to, which is why Code 39 is still here fifty years on and why this tool generates it — but density is never the argument for it.

What the tool does

Type Lowercase and Watch It Capitalise

Code 39 has a single-case alphabet: there is no lowercase a to encode, only A. A generator has three ways to deal with that, and two of them are bad. It can reject the keystroke, which makes the field feel broken. It can accept the letter and quietly encode a capital, so the label you print disagrees with the value you typed. Or it can capitalise the character in the field, in front of you.

This tool does the third. Type abc-123 into the field above and it becomes ABC-123 as you type. Nothing is refused and nothing is changed behind your back: what stands in the box is exactly what the bars carry and exactly what prints in the human-readable line underneath. The same applies to Code 93, which shares the alphabet.

If case actually matters to your data — a case-sensitive serial, a URL fragment, a password fragment — then Code 39 is the wrong symbology and no setting will change that. Switch the format picker to Code 128, which encodes the full ASCII range including lowercase, and is narrower besides. Extended (Full ASCII) Code 39 encodes lowercase as pairs of standard characters and needs the scanner configured to match; this tool does not generate it.

Check digits

No Check Digit, and Why That Is Fine

Code 39 does not require one, and this generator does not add one. The symbology’s three-wide-of-nine structure means a single element read wrongly produces an invalid character rather than a plausible wrong one, so the standard makes the mod-43 check character optional. Most Code 39 in the world does not carry it.

What we encode

Exactly the characters you type, uppercased, wrapped in the * start and stop guards. Nothing is appended, nothing is computed, nothing is inserted.

If your spec needs mod 43

Some closed systems — parts of the defence LOGMARS specification among them — mandate the optional check character. Work it out on your side and type the complete value, including the check character, into the field. It is a normal Code 39 character and encodes like any other.

Code 93 is different

Switch the picker to Code 93 and the encoder always appends two check characters, C and K. They live in the bars only — the human-readable line still shows just your data — and they cannot be turned off.

One thing not to do: do not type *VALUE*to “add” the start and stop characters. Older software asked for that. Here it would encode two literal asterisks inside a symbol that already has its own guards, and the result will not decode to the value you meant.

The successor

Code 93: Same Characters, Smaller Symbol

Code 93 was published in 1982 explicitly to replace Code 39. It is in the format picker above, it takes exactly the same forty-three characters, and it draws them in roughly nine modules each instead of sixteen. If you like Code 39 and only want it narrower, this is the like-for-like swap.

What you gain

  • About a third off the width. ABC-1234 is 109 modules in Code 93 against 160 in Code 39.
  • Two check characters, always. The encoder computes C and K and puts them in the bars. You do not type them and you never see them, and they make the symbol materially harder to misread than a plain Code 39.
  • The same 43 characters and the same 10X quiet zone. Nothing to relearn, and the field accepts up to 48 characters here rather than 43.

What you give up

  • Universality. Code 93 is the replacement that never quite replaced. Scanners generally support it, but often with the symbology switched off by default in a fleet configured for Code 39. Test one before you print a run.
  • The specification you were handed. If a document says Code 39, Code 93 is not a substitute for it however similar the two look.
  • Full ASCII. Code 93 has an extended mode in the standard; this tool does not generate it, so lowercase is out of reach in Code 93 exactly as it is in Code 39.

Being straight about the ranking of these three. For a new system with no constraints, Code 128 is the sensible default: it is dense, it carries the full ASCII range, and support for it is as broad as Code 39’s. Code 93 is the right answer mainly when you are already committed to the Code 39 character set and need the width back. Code 39 is the right answer when something outside your control says so.

In the field

Where Code 39 Is Still the Answer

Code 39 survives because it is written into documents, and documents outlive symbologies. These are the places you are most likely to be told to use it.

Defence and government

The US defence LOGMARS marking scheme built its item and shipment labels on Code 39, and it propagated through supplier requirements for decades. Where a contract names a symbology, it is often this one — and sometimes with the optional mod-43 check character required.

Automotive

AIAG and Odette shipping-label standards grew up around Code 39 for part numbers, quantities and serials. Plenty of tier-two and tier-three suppliers still print exactly what the customer's label spec has always said.

Libraries

Barcode labels on books and borrower cards are frequently Code 39, and the catalogue system was configured for it long ago. Note that the ISBN on the back of the book is a different thing entirely — that is an EAN-13.

Asset tags and IT inventory

Short uppercase identifiers on laptops, monitors and rack equipment. The data is a handful of characters, the labels are read by a handheld, and Code 39's width costs nothing at that length.

Healthcare and laboratories

Specimen tubes, patient wristbands and internal sample tracking in systems specified years ago. Newer deployments tend towards Code 128 or Data Matrix, but the installed base is real.

Warehouse locations

Rack, bay and bin labels printed large on a wall or shelf edge, where the whole point is that a scanner reads them from a distance and the extra width is free.

Building a labelling system rather than a single barcode? Our guides on inventory tracking and printing code labels cover the parts that are the same whichever symbology you land on.

Output

Vector SVG and PDF, at the Size You Will Actually Print

Most free Code 39 tools hand you a PNG and leave the sizing to you. This one exports genuine vector and lets you state the finished dimensions up front — which matters more on a linear barcode than almost anywhere else, because the narrow bar is the whole ball game.

SVG

Real rectangles written into the file, not a traced bitmap. Opens in Illustrator, Inkscape, CAD and label software, and scales to any size without softening an edge.

PDF

Also true vector — the bars are redrawn with the PDF's own drawing primitives rather than embedded as an image, on a page sized to the barcode rather than dropped onto a letter sheet.

PNG

The raster option, at 72, 150, 300 or 600 DPI. Fine for screens and office printers; reach for SVG or PDF when the file goes to a label press or a thermal-transfer workflow.

Set the width, not a guess

Enter a target print width in millimetres, inches or pixels. The export is generated at exactly that size, so nothing has to be scaled up afterwards. The one ceiling is 10,000 pixels per axis — about 840 mm at 300 DPI — and the tool tells you on screen if a request runs into it.

A narrow-bar warning that means something

The tool works out how wide the narrow bar will be at your chosen size and warns below 0.25 mm. On Code 39 that number decides everything: too thin and the bars merge under a scanner, and the symbology's width makes the temptation to go thin unusually strong.

Quiet zone included

Ten narrow-bar widths of clear space at each end, the ISO/IEC 16388 minimum, drawn into the file. Do not crop it away when you place the barcode in a layout.

You do not need a Code 39 font. Barcode fonts are a workaround for software that cannot place an image, and they push the asterisks and the character mapping onto you. If your label software can import an SVG or a PDF, an exported vector file is the more reliable route. QRKIT does not publish a barcode font, and mark quality on the finished label — contrast, bar-width gain, verification grading — depends on your printer and stock and is not something we measure or certify. Test a real printed sample with the scanner that will read it before committing to a run.

In bulk

500 Code 39 Barcodes From One Paste

Open Generate many at once underneath the generator, paste a column of asset tags or upload a CSV, and take the whole run in one download. No account, no upgrade prompt.

Paste or upload

One value per line, or a CSV. Paste straight out of a spreadsheet and the tabs split the columns for you. In a comma file the headings are the only evidence there is: a first heading it recognises — code, serial, SKU, part number — makes row 1 a header and the most code-like heading in it wins the column, so an item,serial export encodes the serials and not the descriptions. Anything less obvious it will not guess at, and the picker above the preview shows the column it settled on and lets you change it either way.

Three outputs

A ZIP of PNGs, a ZIP of SVGs, or a single PDF with one barcode per page. Files are numbered in input order, so the archive sorts back the way your list was written.

Nothing fails quietly

Every row is trimmed and uppercased exactly as the single field is, then checked the same way. A value carrying an underscore, a colon or an accented letter is listed by its row number and left out of the download rather than becoming a label nobody can scan.

About the 500-row cap. It is a browser-memory limit and nothing else — the batch is rendered on your own machine, and 500 barcodes at 300 DPI is already tens of megabytes held in memory. It is the same number for everyone, there is no account or plan that raises it, and when it bites the tool tells you exactly how many rows were left out so you can split the list and run the rest.

Step by step

How to Create a Code 39 Barcode

Step 1

Enter the data

A part number, an asset tag, a rack location. The generator above is already set to Code 39 and draws the barcode as you type. Lowercase letters capitalise in the field as you enter them.

Step 2

Stay inside the alphabet

A–Z, 0–9 and - . $ / + % and space. Anything else is refused with a message naming the set. Do not add asterisks — the start and stop characters are added for you.

Step 3

Set the print size

Give it a target width in mm, inches or pixels, and pick 72–600 DPI for raster output. The tool reports the finished size and warns if the narrow bar falls under 0.25 mm.

Step 4

Download

SVG or PDF for anything that will be printed or scaled; PNG for screens. No signup, no account, no watermark, and the file is written by your own browser rather than fetched from a server.

Reading one back is a different job. A phone camera app will not decode a Code 39 barcode the way it decodes a QR code; you need a laser or imaging scanner, or a scanner app that lists linear symbologies. QRKIT generates Code 39 and Code 93 barcodes; it does not decode them.

Pricing

Free, and Free in the Way You Meant

“Free” usually turns out to mean free to preview. Here it means what it says: the Code 39 generator on this page asks for no account to create a barcode and no account to download the file, stamps nothing on the output, and has no paid tier above it.

Included, at no cost

Free forever
  • Code 39 and Code 93
  • Unlimited barcodes — no daily quota
  • PNG, SVG and vector PDF download
  • Print width in mm/in/px and 72–600 DPI
  • Bulk generation up to 500 at a time
  • No signup, no account, no card
  • No watermark on any export
  • The 10X quiet zone drawn into every file

Not available at any price

Be clear about it
  • No dynamic or trackable Code 39. Every barcode here is static, so it cannot be edited after printing and its scans cannot be counted.
  • No Extended (Full ASCII) Code 39. Forty-three characters, and lowercase is not among them.
  • No barcode API, font or add-in. No REST endpoint, no Zapier, no plugin, no library, no TrueType font.
  • No decoding. This page generates Code 39 barcodes; it does not read them.

Need a code you can change or measure instead? That is what a dynamic QR code is for — edit the destination after printing, and see scan counts. It is a different symbology and a different product, and unlike the barcode tool it involves an account. Learn about dynamic QR codes.

Code 39 Barcode Generator — Frequently Asked Questions

Get started

Generate Your Code 39 Barcode

Code 39 or Code 93, drawn in your browser, exported as vector SVG, PDF or PNG at the size you will print it. No signup, no watermark.

Code 39 & Code 93Vector SVG and PDFUp to 500 at oncePNG at up to 600 DPI