ZPL Font Sizes in Dots by Printer DPI (203, 300, 600)
Convert millimetres, inches and points to dots for 203, 300 and 600 DPI printers, with a ready-made lookup table.
ZPL measures in dots, but labels are read in millimetres. The conversion depends on your printer’s resolution.
Dots per millimetre
| Printer DPI | Dots per mm | Dots per inch |
|---|---|---|
| 203 | 8 | 203 |
| 300 | 11.8 | 300 |
| 600 | 23.6 | 600 |
Formulas
- dots = millimetres x DPI / 25.4
- dots = inches x DPI
- dots = points x DPI / 72
Skip the arithmetic with the size calculator.
Lookup: dots for common heights
| Physical height | 203 DPI | 300 DPI | 600 DPI |
|---|---|---|---|
| 1 mm | 8 | 12 | 24 |
| 2 mm | 16 | 24 | 47 |
| 3 mm | 24 | 35 | 71 |
| 4 mm | 32 | 47 | 94 |
| 5 mm | 40 | 59 | 118 |
| 6 mm | 48 | 71 | 142 |
| 8 mm | 64 | 94 | 189 |
| 10 mm | 80 | 118 | 236 |
| 12 mm | 96 | 142 | 283 |
| 1/4 inch | 51 | 75 | 150 |
| 1/2 inch | 102 | 150 | 300 |
Height is cell height, not cap height
The h in ^A0N,h,w is the height of the character cell, which includes space above and below the letters. A capital letter in font 0 is noticeably shorter than h. If you need capital letters to be exactly 3 mm tall, aim a little higher (roughly 1.3 to 1.4 times) and confirm with a test print. The exact ratio depends on the font.
Minimum legible sizes
As a rule of thumb for printed text readability:
- 203 DPI: not below about 15 to 18 dots for font 0 (roughly 2 mm); bitmap A (9 dots) is the practical minimum.
- 300 DPI: about 20 to 24 dots.
- 600 DPI: about 40 dots or more.
Thermal transfer ribbon, media and heat settings matter as much as size. Very small text on poor media blurs regardless of DPI.
Bitmap fonts at other resolutions
Fonts A to H are defined as dot grids, so their base cells differ per resolution and the same ^A multiple prints physically smaller on higher-DPI printers. Print a configuration label or test label on your own printer to see the real size, and use font 0 when you need a physical size that does not depend on resolution.
Setting the resolution correctly
If your ZPL was designed for 203 DPI and you move to 300 DPI, scale every coordinate and size by 1.478 (300/203) or use the printer’s DPI-conversion setting. Otherwise everything shrinks and shifts.
Why this page exists
Almost every font-size complaint we see comes down to one thing: somebody designed a label at one resolution and printed it at another. ZPL has no idea what a millimetre is. You hand it numbers, it draws that many dots, and the physical result depends entirely on how densely those dots are packed on the printhead. Once that clicks, a lot of puzzling behaviour stops being puzzling.
Working from millimetres
If your designer hands you a spec such as “product name in 4 mm text”, the cleanest approach is to convert that to dots once, in code, for each printer model you use. Multiply the millimetres by the DPI and divide by 25.4. For 4 mm at 203 DPI that’s about 32 dots, and at 300 DPI it’s about 47. Keep the physical size in your configuration and let a small function do the conversion. That way adding a new printer later doesn’t mean rewriting every label.
The size calculator does the same maths in the browser and prints ready-to-paste ZPL, which is handy for one-off jobs.
What “readable” means in dots
There’s no universal rule, because readability depends on the font, the media and how the label will be viewed. A few practical guidelines hold up well, though.
At 203 DPI, text below about 15 or 18 dots starts to suffer in font 0. Bitmap font A at 9 dots is readable because it was designed for that size. At 300 DPI you have more dots to work with, so the same physical height has more detail and looks smoother, but a 3 mm letter still needs around 35 dots to look the way you’d expect. At 600 DPI the numbers double again, and tiny text looks excellent as long as the ribbon and media can actually hold that much detail.
That last point matters more than people expect. A 600 DPI printhead on rough paper with a worn ribbon can look no better than 300. If small text looks muddy, consider the media and darkness setting before you blame the font. The best fonts for barcodes and small labels guide has more on this.
Moving a label between printer models
When a label has to run on both 203 and 300 DPI printers, you have two options. The simple one is to maintain two versions, each tuned for its printer. The cleaner one is to generate the ZPL from a template with all sizes and positions stored in millimetres, converted on the fly. Anything in between, like multiplying by 1.5 and hoping, gets you close but leaves small errors, especially with bitmap fonts, which can’t scale smoothly. Our blog post on why text looks different on 203 and 300 DPI printers walks through a full example.
Don’t forget the things that aren’t text. The print width ^PW, the label length ^LL, box sizes, line thicknesses and barcode module widths are all dot measurements and all need scaling.
Bitmap fonts need special care
Bitmap fonts are drawn from fixed grids, and those grids differ by resolution. The same font letter will be a different number of dots tall on a 300 DPI printer than on a 203, and it only scales in whole steps. If your layout depends on a bitmap font being a particular physical size on both printers, you’ll probably find the sizes can’t match exactly. Font 0 avoids the problem because it can be any size you specify. We discuss this trade-off in the built-in font list.
Checking your printer’s real resolution
Don’t assume. Printers get swapped, and some models come in more than one resolution. A configuration label prints the resolution along with other settings (the command is ^XA^HH^XZ). It takes a few seconds and has saved plenty of afternoons. The fonts by printer model page lists the common resolutions for each series.
Questions we hear a lot
Is a 300 DPI printer always better? Not always. It gives finer detail but prints a little slower and costs more, and for large text or plain barcodes you’ll rarely see a difference.
Can I just scale my ZPL by 1.5? For a rough port, yes. For a polished result, recalculate from millimetres and re-check anything using bitmap fonts.
How big is a dot, physically? About 0.125 mm at 203 DPI, about 0.085 mm at 300 and about 0.042 mm at 600.
What if text is cut off after I change printers? Check ^PW first, then read the text cut off or wrong size page.
Last reviewed 2026-10-20