Skip to main content

    Code 39 Barcode Generator

    Make a Code 39 barcode for asset tags, ID cards and simple labels. Type uppercase letters, digits and a few symbols, then download a PNG or SVG, or print it.

    Code 39 needs no registration, and many older scanners and systems read it, which is why it is still common on equipment tags.

    The number or text you type is encoded in your browser and is not sent to a server. See the privacy policy.

    A to Z, 0 to 9, space and - . $ / + %. Lowercase letters become uppercase. Example: ASSET-0042

    Optional. Turn it on only if the system reading the barcode expects it.

    2 px
    100 px
    12 modules
    20 px
    PNG size

    Enter a valid value to see the PNG size.

    Scan test: print the barcode at the size you will use and test it with the scanner or app you will actually use before you print a batch.

    How it works

    1. Type the value. Lowercase letters are converted to uppercase, because standard Code 39 has no lowercase.
    2. Turn on the mod 43 check character only if the system reading the barcode expects one.
    3. Download a PNG or SVG, or print just the Code 39 barcode.

    Characters Code 39 can encode

    Code 39 encodes 43 characters: the digits 0 to 9, the uppercase letters A to Z, space and the symbols - . $ / + %. The asterisk is reserved as the start and stop character. The JsBarcode library adds it at both ends for you, so you do not type it.

    The optional mod 43 check character

    Code 39 does not require a check character, but some systems use one. With the switch on, each character gets a value (0 to 9 for digits, 10 to 35 for A to Z, then 36 to 42 for - . space $ / + %), the values are added up, and the remainder after dividing by 43 picks the check character, which goes on the end. For example, ABC adds up to 33 and gets the check character X.

    Code 39 compared with Code 128

    • Code 39 is wider. Each character takes 16 modules here, including the gap between characters, against 11 per symbol for Code 128.
    • Standard Code 39 has no lowercase letters, while Code 128 does.
    • Code 128 always includes a check character. In Code 39 it is optional.
    • This tool limits Code 39 values to 40 characters.

    Good uses for Code 39

    • Asset tags for laptops, furniture and tools.
    • Lending items, such as books or kit, in a system you run yourself.
    • ID badges and room or shelf labels.
    • Matching an existing system that already prints Code 39 labels.

    Printing Code 39 labels

    • Code 39 is commonly specified with a quiet zone of at least 10 modules on each side. The default here is 12.
    • For small tags, keep the value short rather than shrinking the bars too far.
    • Check a printed tag with your scanner before printing a whole sheet.

    More barcode formats

    Frequently asked questions

    Can Code 39 encode lowercase letters?

    Not in standard Code 39. This tool converts lowercase to uppercase, so asset-42 becomes ASSET-42.

    Do I need to type the asterisks?

    No. The asterisk start and stop characters are added automatically, and typing * gives an error because it is reserved.

    Should I add the mod 43 check character?

    Only if your scanner or software expects it. If it does not, the scanner may return the check character as part of the value.

    Does Code 39 need a registered number?

    No. You choose the values, and nothing is registered with GS1 or anyone else, which suits internal labels.

    Why is my Code 39 barcode so long?

    Each character is wide in Code 39. Shorten the value, lower the bar width, or use the Code 128 barcode generator, which fits more into the same space.

    Related Tools