Best ZPL Fonts for Barcodes and Small Labels
Which fonts stay legible on small labels and beside barcodes, with minimum sizes by DPI and sample ZPL.
Small labels expose every weakness of a font: thin strokes disappear, counters fill in, and similar characters (0/O, 1/l/I) get confused.
Quick picks
| Use | Font | Why |
|---|---|---|
| General small text | 0 at 20 to 30 dots |
Scalable, clean and compact |
| Smallest legible text | A (9 x 5) or B |
Designed for pixel clarity |
| Text under a barcode | Built-in (the ^BC interpretation line) or E |
Easy to read, no extra setup |
| OCR text | E (OCR-B) or H (OCR-A) |
Shapes designed for machines |
| Serial numbers and IDs | 0 or a monospaced TrueType font |
Distinguishable characters, predictable width |
| Brand look | Downloaded TrueType | Only if bold enough at the size used |
Minimum sizes
| DPI | Smallest comfortable text height | Barcode human-readable line |
|---|---|---|
| 203 | 15 to 18 dots (about 2 mm) | 18 to 24 dots |
| 300 | 24 dots | 28 to 36 dots |
| 600 | 40 to 48 dots | 56 to 72 dots |
Use the size calculator to convert target millimetres.
Barcode with a readable line
^XA
^BY2,3,60
^FO40,30^BCN,60,Y,N,N^FD123456789012^FS
^FO40,130^A0N,22,22^FDLot A-4471 Exp 2027-03^FS
^XZ
^BC parameters: orientation, height, interpretation line (Y/N), line above (Y/N), UCC check digit. ^BY sets module width, ratio and default height.
Tips for small labels
- Prefer bold-ish, wide-apertured fonts. Condensed fonts at 18 dots tend to blur.
- Set
wequal to or slightly abovehat very small sizes. - Keep a quiet zone of at least 10 modules around barcodes. Don’t let text touch bars.
- Increase print darkness a notch for thermal transfer when text fills in; reduce when it bleeds.
- Avoid reverse (white on black) below about 24 dots.
- If readability matters more than design, stay with fonts
0,A,B.
Don’t rely on appearance alone
Verify with a test print at the real DPI on your actual media. A live preview is only an approximation of dot rendering.
Why small labels are unforgiving
On a big label you can get away with almost anything. A slightly muddy font, a sloppy margin, a size that’s a few dots off, and nobody notices. Shrink the label to the size of a thumb and every flaw is magnified. Strokes only two dots wide fill in or break. Letters that look different on screen, like 0 and O or 1 and l, merge into the same blob. And whatever you do must also leave a clear area around a barcode, or it won’t scan.
The good news is that a few sensible rules go a long way. Use a plain font, give it enough height, keep the layout uncrowded, and always test with the real printer and the real media.
Choose plain over pretty
Decorative and thin fonts are the enemy of small labels. The best choices are sturdy sans-serif shapes with open counters, the enclosed spaces inside letters like a, e and 8. Font 0 fits that description reasonably well. For the very smallest text, bitmap font A or B holds together because they’re drawn dot by dot and never need to be rounded. If somebody wants a fancy brand font on a tiny label, try it at actual size before you agree. Often the answer is to use the brand font for large headings and a simple font for the small print.
A related trick is to make text slightly wider than it is tall at the smallest sizes. Extra width keeps strokes apart. It’s a counterintuitive tip that costs nothing, and you can test it in the label generator by leaving the width blank and then typing a number a few dots larger than the height.
Text beside and under barcodes
The text that mirrors a barcode’s content is called the human-readable line, and its job is to let a person type the number in when the scan fails. Most barcode commands can print it for you, and for many labels that’s the right call, since it’s aligned to the bars and sized sensibly. If you want more control, turn it off and place your own text, and use a font that distinguishes similar characters. OCR-style font E is good for that, and so is a clear monospaced face.
Whatever you do, keep text away from the bars. The clear space at either end of a barcode, called the quiet zone, is part of the barcode. Text or lines intruding into it can stop scanners reading. As a rule of thumb, leave several times the width of the thinnest bar. And the barcode’s own bar width matters more than anything else for scanning, as we discuss in our blog post on barcode text and fonts.
Check the numbers
Use these as sanity checks rather than strict rules. At 203 DPI, aim for text no smaller than about 15 to 18 dots in font 0, or use bitmap A at its native size. At 300 DPI, about 24 dots is comfortable. At 600 DPI, you have room to go finer, but the media has to cooperate. Convert from millimetres using the size calculator if the design is specified physically, and see font sizes by DPI for a lookup table.
The media and ribbon matter as much as the font
A common mistake is blaming the font when the printer settings are the issue. Too little heat and fine strokes don’t print. Too much and they bloat and bleed. Rough or uncoated paper scatters detail. If you’re printing thermal transfer, ribbon and label stock need to match. Before you change fonts, adjust the darkness a notch at a time, print a test, and look under a magnifier. It’s often the cheaper fix.
Design for the scanner and the person
Think about who reads the label and from how far. A person picking items from a shelf needs big, clear text. A scanner needs a good barcode with a clear zone. Both need contrast. Don’t print white-on-black below a fairly large size, since the black can flood the small white strokes. If you do need reverse print, use bold, simple characters and test.
Common questions
What’s the single best font for tiny labels? There isn’t one. Start with font 0 or bitmap A, and test.
Can I use a condensed font to fit more? Slightly, but readability drops quickly.
Does a higher DPI help? Yes, if the media can hold the detail. See fonts by printer model for common resolutions.
What if text is cut off? Work through text cut off or wrong size.
Last reviewed 2026-10-20