ZPL Viewer

Paste ZPL II — the label language Zebra-compatible thermal printers speak — and see the label rendered instantly, without sending it anywhere or feeding a print quota. Export the result as an exact-size PDF.

🔒 Your data never leaves your browser.

What this viewer renders — and what it refuses to guess

The supported subset covers the commands real logistics labels are made of: label framing (^XA ^XZ ^PW ^LL), positioning (^FO), boxes and rules (^GB), text (^A0 ^CF ^FD) and Code 128 barcodes (^BC in modes N and A, with >;/>8 escapes) — drawn by the same encoder this site’s label generators use, which is cross-checked against two independent barcode libraries. Commands outside the subset — other symbologies, embedded images, rotated fields, the firmware-side check-digit modes U/D — are listed by name and skipped, because a wrongly-guessed barcode is worse than a missing one. The full command reference is Zebra’s official ZPL II programming guide.

Why render ZPL in the browser at all

ZPL is plain text that only turns visible on a thermal printer — so every mis-sized label normally costs a strip of label stock. Rendering locally means you proof the file before it touches the printer, whether it came from your WMS, a carrier’s API, or the logistic label generator on this site (whose ZPL round-trips through this viewer exactly).

Every check this tool runs (5 rules)

ZPV-001 Not a ZPL label

A ZPL label is delimited by ^XA … ^XZ. Without a complete block there is nothing to render.

Source: Zebra (official) — Programming Guide: ZPL II, ZBI 2 (P1099958-001)

ZPV-002 Barcode skipped, not guessed

Code 128 in modes N and A is rendered with this site's own dot-exact encoder. Modes U/D (printer-side check digits and parenthesis parsing) and unknown ^FD escapes are firmware behaviours this viewer does not emulate — those barcodes are skipped with a notice, because a wrong barcode is worse than a missing one.

Source: This is a rule of this viewer's engine — the supported subset is stated, never silently exceeded.

ZPV-003 Rotation not rendered

Only orientation N (normal) is rendered for text and barcodes; rotated fields are reported.

Source: This is a rule of this viewer's engine.

ZPV-004 Canvas size inferred

Labels without ^PW/^LL get a canvas inferred from the content bounding box.

Source: This is a rule of this viewer's engine.

ZPV-005 Unsupported commands are listed

Commands outside the supported subset (other symbologies like ^B3/^BQ/^BX, images ^GF, etc.) are counted and named — the preview says exactly what it did not draw.

Source: This is a rule of this viewer's engine — same disclosure discipline as the site's XRechnung checker ("evaluated N of M").

Rendering rules cite Zebra's official ZPL II programming guide (free PDF); the viewer's own engine limits are labelled as such.