ZPL viewer

Zebra label formats, drawn at print size · updated 18 October 2026

Paste a ZPL format — ^XA … ^XZ — into the viewer and it is drawn at the size it will come out of the printer. The viewer reads two languages and picks by itself: ^XA is ZPL, ~XA is the Paxar PCL used by SNAP printers. You can also force one in the language list.

No account is needed to look at a label.

Pick the resolution

A ZPL format does not say which printer it is for, and the measurements inside it are in printer dots, not millimetres. The same file prints at four inches wide on a 203 dpi printer and at 2.7 inches on a 300 dpi one. So the viewer asks: choose 203, 300 or 600 dpi and the drawing resizes. If a label looks the wrong size, that selector is almost always the reason.

What is drawn

CommandWhat it doesStatus
^XA ^XZstart and end of the formatdrawn
^PW ^LLlabel width and length, in dotsdrawn
^LH ^LSorigin and shift applied to every fielddrawn
^FO ^FTfield position — ^FO from the top of the character, ^FT from the baselinedrawn
^A ^CFfont, size and orientation; ^CF sets the defaultdrawn
^FD ^FSfield data and end of fielddrawn
^GBbox and line, with thickness and roundingdrawn
^BYmodule width and default bar heightdrawn
^B3 ^BC ^BE ^B8 ^BU ^B2Code 39, Code 128, EAN-13, EAN-8, UPC-A, Interleaved 2 of 5 — with the human readable linedrawn
^PQ ^PR ^FXquantity, speed, commentread
^FBtext block: wraps on the block width, honours the line limit, left/centre/right; \& forces a breakdrawn
^GFgraphic embedded in the format, hexadecimal, with the ZPL repeat compressiondrawn
^GF binary or compressed, ^XGother graphic encodings, and graphics recalled from printer memorynot yet
^BQ ^BXQR Code and Data Matrixnot yet
^FRreversed fieldread, not drawn

Anything else is listed as an unrecognised command instead of being silently ignored, so you always know what was left out of the drawing.

How close is the drawing

Zebra's own typefaces are licensed and cannot be redistributed — the default scalable font is CG Triumvirate Bold Condensed, from Monotype. Labelisk substitutes free equivalents: TeX Gyre Heros Condensed Bold, which like Triumvirate is a Helvetica derivative, and a monospaced face for the OCR fonts.

To know what that costs, the same formats were rendered here and in a reference ZPL renderer, and the ink measured column by column:

ElementDifference
Box and line ^GBidentical on all three axes
Barcode ^B3identical on all three axes
Embedded graphic ^GFidentical
Text block ^FBbreaks on the same words, lines within 14 dots
Text ^A0starts on the same column, 4% wider
Human readable linewithin 4%

In other words the geometry matches and the remaining difference is the shape of the letters. Good enough to check that a field fits, that a barcode has room and that nothing runs off the label — which is what a proof is for. For a bar-width tolerance audit, measure a real print.

The rendering API currently takes Paxar PCL only. ZPL renders in the browser; it is not in the API yet, because the API has no way to tell it which resolution to use. If you need ZPL through the API, say so — that is how it gets prioritised.

The other language

Labelisk started with Paxar PCL, the format language of Avery Dennison SNAP 500 and SNAP 700 printers, which has no public specification and no other viewer. That one has a rendering API with PNG and vector PDF output. ZPL came later, and the two share the same drawing engine.