Codabar barcode generator
Codabar is older than almost everything else still in daily use — it dates from 1972 — and it survives for one reason: the systems that adopted it never had a reason to change. Blood banks, libraries and courier networks built their numbering around it, and equipment that works is not replaced for elegance. Its distinguishing feature is the pair of letters at each end: a symbol starts with A, B, C or D and ends with one too, and those letters are part of the data. Which pair you use is not a style choice — it is a convention of whoever reads the code, and getting it wrong is the most common way a Codabar label is rejected by a system that can read it perfectly well.
Appearance
322 × 237 px in the PNG
Specification
- Character set
- letters and digits
- Length
- from 3 to 60 characters
- Check digit
- not used by this symbology
Generate Codabar barcodes in bulk
Got a whole list of values rather than one? Generate Codabar barcodes in bulk
Where it is used
- Blood bank labelling, where Codabar carried donation numbers for decades and remains in service alongside newer standards
- Library circulation: borrower cards and item barcodes in systems whose catalogues were built around it
- Courier and air waybills, where the number is numeric, the length varies and the readers are already deployed
- Photo processing envelopes and film sleeves, an application that has outlived most of the labs that started it
How it compares
Codabar is chosen today almost entirely because something already expects it. Compared with Code 39 it encodes a narrower character set — digits and six punctuation marks, no letters in the payload — but produces a slightly denser symbol and, unlike Code 39, allows four distinct start and stop pairs that a system can use to distinguish label types without parsing the number. Compared with Code 128 it loses on every technical measure: Code 128 is denser, encodes the full character set and has a mandatory check character. The honest summary is that a new system should not choose Codabar, and an existing one should not abandon it lightly, because the label stock, the readers and the numbering conventions all assume it.
Common mistakes
- Dropping the start and stop letters. They are not delimiters the software adds around your number — they are encoded characters, and many systems match on them. A blood bank that expects A…B will reject a symbol that arrives as A…A even though the digits between are correct.
- Assuming the pairs are interchangeable. A, B, C and D exist so that different label types can be told apart at a glance by the reader. Which pair means what is decided by the system, not the symbology, so the answer to which one to use is always found in the receiving specification, never in a general reference.
- Expecting a check digit. Codabar has none by definition. Some industries add one — the modulo 16 variant is the usual choice — but it is a convention layered on top, not part of the symbology, and a reader that is not configured for it will hand the check character back as data. Whether your number carries one is something the receiving system decides.
- Putting letters in the payload. The four letters live only at the ends. The data itself is digits and the six characters minus, dollar, colon, slash, full stop and plus — nothing else. Attempting to encode a letter inside the number is not a formatting problem to work around; the symbology has no representation for it.
- Reusing a number across label types. Because Codabar carries no structure beyond the digits, nothing in the symbol says what kind of thing it identifies. Systems that use the start and stop pair for that purpose depend on it entirely, and a batch of labels printed with the wrong pair will identify the right number as the wrong kind of record.
Frequently asked questions
- What do the letters at the beginning and end mean?
- They are the start and stop characters, and they are part of the encoded data. Four are available — A, B, C and D — which lets a system distinguish label types without reading the number. What each pair signifies is defined by whoever specified your labels; the symbology itself attaches no meaning to them.
- Does Codabar have a check digit?
- Not as part of the symbology. Several industries add one by convention, most often a modulo 16 check character, but it is an agreement between the printer and the reader rather than something built in. If your specification calls for one, it has to be included in the data you encode and the reader has to be configured to strip it.
- Can I encode letters or spaces?
- No. The payload is limited to the ten digits and six punctuation characters: minus, dollar, colon, slash, full stop and plus. Letters appear only as the start and stop characters at the ends. If the number you need to carry contains anything else, Codabar is the wrong symbology for it.
- Should I use Codabar for a new system?
- Almost certainly not. Code 128 is denser, carries the full character set, and has a mandatory check character that Codabar lacks. Codabar is the right answer when existing readers, existing label stock or an existing specification require it — which, in blood banking and libraries, is often exactly the situation.
- Why do my labels scan but get rejected by the system?
- Check the start and stop pair before anything else. A symbol with the correct digits and the wrong letters reads perfectly at the hardware level and is then refused at the application level, because many systems use those letters to decide what kind of record the number belongs to. It is the single most common Codabar complaint.