Fonts for Barcode Text in ZPL: Human-Readable Lines Done Right

October 8, 2026 · 4 min read · By ZPLFONTS.com

barcodesfonts

The numbers printed under a barcode seem like an afterthought, until a scanner fails on a busy loading dock and somebody has to type the code in by hand. That small line of text is the backup plan, and it’s worth getting right.

What the human-readable line is for

Barcodes are for machines. The line of characters beneath is for people, so that when a scan fails, damaged label or no, a person can read the value and enter it manually. It also helps during setup and troubleshooting, because you can see at a glance what the code was supposed to say.

Because it’s a fallback, it needs to be legible rather than pretty. Clear characters, enough size and a sensible gap from the bars matter more than style.

Let the printer draw it, usually

Most ZPL barcode commands include a parameter that turns the text line on or off, and another that puts it above or below the bars. When it’s on, the printer draws the text in a built-in font, centred under the code, at a size that it picks for you. For the majority of labels, that’s what you want. It’s aligned, consistent and one less thing to calculate.

^XA
^BY3,3,90
^FO40,40^BCN,90,Y,N,N^FD0123456789^FS
^XZ

In this example the Y after the height asks for the interpretation line. You can preview the result in the live preview, which draws Code 128 barcodes with their text.

When to draw your own

There are good reasons to turn the built-in line off and place text yourself. Maybe you want a bigger or bolder font. Maybe the code needs spaces or hyphens for readability, such as grouping a long number in blocks. Perhaps the text should say something different from the encoded data, like a formatted version with a check digit shown separately. Or you want the text to the side rather than underneath.

In that case set the interpretation line to N, and add a separate field, positioned below the barcode with its own font command. You’ve taken on responsibility for alignment and spacing, so check it with real values of different lengths.

Choosing a font for it

You want characters that can’t be confused. Zero and the letter O, one and lowercase L, and eight and B are classic troublemakers. Font 0 is acceptable. The OCR-B style font E was designed to avoid ambiguity, and it’s a natural choice when the text is read by humans who need to be accurate. A monospaced font also helps, because spacing stays even and digits are easy to count.

Avoid thin, light or condensed faces for this job, particularly at small sizes. A label that has to survive a dirty warehouse, a rough surface and a hurried reader needs sturdy text. Our guide to fonts for barcodes and small labels lists sizes by resolution.

Size and spacing

As a starting point, at 203 DPI the text line should be around 20 to 30 dots tall. At 300 DPI, think 28 to 40 dots. These aren’t hard rules, since your barcode width and label space will shape the choice. If the text is wider than the barcode, shrink it or break it into groups.

Spacing matters just as much. Leave a clear gap between bars and text so the two don’t visually merge. And keep text out of the quiet zone, the blank margin at each end of the barcode that scanners need to find where it starts and stops. Any text or border inside that margin can cause read failures.

The thing that matters more than text

The most important barcode setting isn’t the font at all. It’s the width of the narrowest bar, set with ^BY in dots. If bars are too thin for your printer’s resolution or your scanner, the code won’t read, however nicely the text under it is set. Scale it when you change printer resolution, as explained in why text looks different on 203 and 300 DPI printers. And whenever you change anything in a barcode label, scan a printed sample with the scanner used in production.

Common mistakes

Putting the text too close to the bars. Using a font so small it’s illegible. Forgetting that custom text doesn’t update itself when the data changes, so a label can show one number and encode another. Truncating long values silently. Placing text so wide it runs off the label. The last one is covered under text cut off or wrong size.

Quick recipe

Let the printer draw the line unless you have a reason not to. If you draw your own, use font 0 or E at a legible size, keep it clear of the bars, and test with the longest value. Then scan it. A barcode that looks perfect but doesn’t scan has failed, so the scan is the real test. For other tips on layout, see our post on designing small labels.

All articles