Skip to content

Code 93 Barcode Generator for Internal Identifiers

A denser, self-checking step up from Code 39: type an uppercase code and get a symbol with both check characters already calculated.

  • 100% free
  • No sign-up
  • Never expires
  • No watermark
Loading generator…

How to use the Code 93 generator

  1. 1

    Type the value in capitals

    Enter the part number, ticket or asset code. Lowercase letters and anything outside the 47-character set are flagged rather than encoded, so correct them before exporting.

  2. 2

    Fit it to the label

    Nudge the bar width and height until the symbol suits the space you have. Code 93 is narrower than Code 39 but wider than Code 128, so check it against a real label.

  3. 3

    Export and scan-test

    Download SVG or PDF for the label template, or PNG for documents. Scan the printed result with the handheld you actually deploy, with Code 93 enabled in its settings.

Features

  • Accepts 0-9, A-Z, the space and the six symbols - . $ / + %
  • Both modulo-47 check characters calculated and appended automatically
  • Bar width, height and colours adjusted while you type
  • Human-readable line under the bars, shown or hidden as you prefer
  • SVG, PNG or PDF saved locally, with no sign-up and no watermark

A tighter, self-checking step up from Code 39

Code 93 was designed as the denser, self-checking successor to Code 39, and it still sits between Code 39 and Code 128 on width. Each character occupies nine modules spread over three bars and three spaces, with a narrow gap between neighbours. That is fewer elements per character than Code 39 spends, so the same ticket number prints shorter while remaining readable by any scanner that has the symbology switched on.

The other half of the design is the checksum. Two check characters are added to every symbol: the C character, computed over the data with weights counting down from 20 to 2, then the K character, computed over the data plus C with weights counting down from 15 to 1. Both are taken modulo 47. This generator appends them without being asked and offers no switch to suppress them, which is deliberate: a truncated print or a dropped bar then fails the checksum instead of quietly handing your system a wrong number.

The trade-off is that Code 93 is not a GS1-registered symbology. There is no company prefix behind it and no catalogue that recognises it, so it belongs where one organisation controls both the label and the reader - stock rooms, library items, work-in-progress tickets, logistics sub-labels - rather than on products that scan at a till.

What the 47-character set lets you type

The Code 93 code table holds 47 values: ten digits, twenty-six uppercase letters, the space, and the six symbols - . $ / + %. This page accepts exactly those and nothing else. Lowercase letters, accented characters and punctuation such as commas, brackets or underscores produce an error rather than being silently remapped, so capitalise a value before you paste it.

The standard does reach further than 47 characters, using four shift symbols that encode an outside character as a pair; the table exists in the code we bundle, but the shift path is not exposed here. For mixed case or arbitrary ASCII, Code 128 is the simpler answer.

InputWhat this page does
0-9, A-Z, space, - . $ / + %Encodes it as typed
a-zRejects it; capitalise the value first
Other punctuation, accents, control charactersRejects it and shows an error
Mixed case such as "part-94820-a"Rejects it; the format has no lowercase

How the symbol is laid out

Every element in the symbol is a multiple of one narrow measurement, so the bar width control scales the whole code instead of only the bars. The symbol opens with a start pattern, carries your characters and the two check characters, then closes with a stop pattern and a final terminating bar. Because the check characters are derived from your data, they cannot disagree with it - only with a bad print.

One detail saves people confusion at sign-off: the line printed under the bars mirrors what you typed, while the bars themselves carry your data plus the two check characters. A scanner verifies those internally and normally strips them before the value reaches an application, so if the scanned output ends in two odd extra characters, the setting to change is on the reader.

PropertyDetail
Modules per characterNine, across three bars and three spaces
Values in the table47: digits, A-Z, space, - . $ / + %
Check charactersTwo, modulo 47, C first then K, always added
Lowercase and full ASCIINot available on this page
Start, stop and terminatorHandled by the format; you do not type them
Text under the barsOptional, follows your typed value
Diagram of a Code 93 barcode structure: quiet zone, start pattern, data characters, two modulo-47 check characters, stop pattern and a terminating bar
Code 93 spends nine modules per character and adds a second check character.

Frequently Asked Questions

Why is my lowercase text refused?

Code 93 has no lowercase in its 47-value table, and this generator will not shift-encode it for you. Capitalise the value, or move to Code 128 if the data genuinely has to keep its case.

Can I turn the check characters off?

No. The pair of modulo-47 check characters is always appended and there is no override on this page. They are what makes the format self-checking, and readers normally strip them after verifying the sum.

Is Code 93 a GS1 code?

It is not a GS1-registered symbology, so there is nothing to register and it cannot stand in for EAN-13 or UPC-A on retail packaging. It suits internal identifiers, library items, sub-labels and any label where you also set the scanner.

Should I just use Code 128 instead?

If your system does not specifically require Code 93, Code 128 is the usual choice: it is denser and handles full ASCII. Code 93 is worth keeping where an existing installation expects it and you want a stricter, easier-to-verify numeric-and-uppercase scheme.