Published: · Updated:
Paste code or load the sample — the result appears below, with the line and severity of each finding.
Every print job ejects one good label — and one blank behind it. Over a shift that is a full roll wasted. The habit is to recalibrate and hope; the faster path is to read two numbers in the file first, because two of the four causes live in the ZPL — and the other two live in one number the printer itself will print for you.
ZPL measures length in dots. If the file says ^LL1218 — six
inches at 203 DPI — and the physical label is four inches, the printer
dutifully renders a six-inch canvas and feeds media until it has covered it:
your four-inch label plus most of the next one, which comes out blank (or
worse, carries the bottom of the layout). The check is one division:
^LL ÷ your printer's DPI must equal the physical label length.
A file converted from a different DPI without rescaling fails this check by
exactly 1.5× — the same mismatch that clips labels horizontally.
One measured limit on this cause. ^LL only
rules on continuous media. On gap or notch stock the printer uses
the length it calibrated, and the file's value is ignored — we sent
^LL800 to a Zebra GK420d on gap media whose stored length was
410 dots, and nothing changed. So if your printer is in gap mode and the
^LL division comes out right, do not stop here: the number that
actually decides is the one in cause 4.
^PQ sets the copy count. A leftover ^PQ2 from a
template prints every label twice — and when the duplicate's data fields are
empty (a serial that incremented away, a variable that only fills once), the
second copy looks like a "blank". The tell: the extra label is not fully
blank under strong light, or appears only for certain jobs.
Only after the file checks out is it a media-tracking problem: the sensor
misreading the gap between labels, the wrong tracking mode for the stock
(gapped vs. continuous vs. black-mark — selected by ^MN or the
printer menu), or a sensor that needs recalibrating after a media change.
That is physical: run the printer's calibration routine and confirm the mode
matches the stock. No file edit fixes a sensor that has never seen your
labels.
This one does not look like an extra label. It looks like a label whose
lower part is missing: the top prints, then white, and the printer
reports no error at all. We measured it on a Zebra GK420d with 100 mm
labels: the printer's configuration label read LABEL LENGTH 0410
— 410 dots, 51 mm, half the physical label. Everything the file placed
below row 410 was silently dropped: a Code 128 at row 280 printed, an
EAN-13 at row 450 never appeared. The file was correct; the preview was
correct; the printer's stored number was wrong.
The diagnostic is one printout. Send ^XA^WC^XZ (or hold the
feed button) to print the configuration label and read the
LABEL LENGTH line. Compare it with the physical label: at
203 DPI a 100 mm label is 800 dots, at 300 DPI 1181. A stored
value far below that is this cause. The fix is a media calibration —
~JC, then ^XA^JUS^XZ to save it — after which the
same printer read 0828: the label plus its gap, which is what a
correct calibration looks like. The same stored number in the other
direction (longer than the label) is the physical twin of cause 1 and
produces the extra-label symptom the rest of this page describes.
If you do not send ZPL at all — the label comes out of a Windows driver,
BarTender, NiceLabel or a shipping app — the file's ^LL is
whatever the driver writes from its page setup. The page height must be
the label alone, not label plus gap: a 4 × 6 label with a
3 mm gap set up as 6.12 inches tall overruns every label by exactly
that gap, and the printer feeds the next one to cover it. Turn off scaling,
"fit to page" and margins while you are there; the same page setup is behind
labels that print too
small. Print one label from the printer's own Feed button: if that comes
out right and the job from the computer does not, the fault is in the page
setup, not the printer.
The one thing every printer needs after a new roll, a new label size or a switch between gap and black-mark stock is a media calibration; after a roll of the same stock, one or two presses of Feed re-synchronise the labels. The button sequences below are Zebra's documented ones; our own measurements on this page are from a GK420d.
| Model | Calibration |
|---|---|
| GK420d / GK420t / GC420 | Hold Feed; release after the second group of flashes (auto calibration). Release at the seventh group for manual calibration on pre-printed stock. |
| ZD220 / ZD230 / ZD420 | Printer ready (solid green), hold Pause + Cancel for two seconds; blank labels feed until the sensor has learned the gap. |
| ZD421 / ZD621 | Hold Feed + Cancel for two seconds. |
| ZT411 / ZT421 / ZT230 | Menu: Print → Sensors → Manual
Calibration, or send the calibration command from cause 4 over the
network and save with the ^JU write. |
The sequence varies by model and firmware; the ZPL route is the same on all of them. If you would rather not press buttons, the calibration assistant builds the exact command sequence for your printer and tells you which line of the configuration label to read afterwards.
Divide ^LL by your DPI — wrong length on continuous media,
cause 1. Search for ^PQ — copies >1, cause 2. Both
clean → print the configuration label and read LABEL LENGTH: far
too short, cause 4; roughly the label plus its gap, then it is the
sensor, cause 3. A preview draws exactly the canvas the file declares,
so an oversized ^LL is visible on screen as a label taller than
your stock; what no preview can see is your physical roll or the number
stored in the printer — those two comparisons are the steps that stay
yours. Still wrong after all five? The wider
why a ZPL label prints
incorrectly checklist covers the rest.
Check the file first: a ^LL longer than the physical label makes the printer feed into the next label to cover the declared canvas, and an unintended ^PQ prints near-blank duplicates. Only when both are clean is it media tracking — run the printer's calibration.
Divide ^LL by the printer's DPI: ^LL1218 at 203 DPI is six inches. If your labels are four inches, the file overruns them by definition. A file converted from another DPI without rescaling misses by exactly 1.5x.
Only when the file is right. Calibration teaches the sensor where labels start and end; it does not shrink an oversized ^LL and does not remove a ^PQ. Fix the file first, then calibrate if the symptom remains.
Almost always a calibrated label length that is too short. Print the configuration label (^XA^WC^XZ) and read LABEL LENGTH: on a 100 mm label at 203 DPI it should be about 800 dots plus the gap. We measured 0410 on a GK420d — half the label — and everything below that row was dropped without an error. ~JC recalibrates it; ^XA^JUS^XZ saves it.
Two usual causes. The printer was not recalibrated after a new roll or a new label size, so the sensor still expects the old gap; or, when printing through a Windows driver or a shipping app, the page height was set to label plus gap instead of the label alone. Calibrate with the sequence for your model, then fix the page height.
A format with several ^GB boxes prints only the final one on a mobile printer. The file is usually innocent: check the active printer language first.
ZPL prints a blank labelA completely empty label usually has a structural cause: a format that never opens or closes, fields swallowed by a missing ^FS, or data with no position.
ZPL special characters print wrongUmlauts and accents printing as garbage is an encoding mismatch: the printer decodes your UTF-8 bytes with a legacy code page. ^CI28 fixes it — here is how.
ZPL label prints upside downA rotated ZPL label has three switches: ^PO flips the whole label, ^FW sets the default for every field, and each ^A rotates one field. Find which one is set.