ZPL validator

Paste your ZPL code and instantly see whether it's well-formed: start/end tags, balanced fields, unsupported commands and parse errors.

About ZPL validation

What this validator checks

It confirms your label opens with ^XA and closes with ^XZ, that those tags are balanced, and that every field (^FD) is terminated with ^FS. It also parses the code to surface unsupported commands and errors, and reports the detected print width (^PW) and label length (^LL).

Why ^XA, ^XZ and ^FS matter

^XA starts a label format and ^XZ ends it; without them the printer ignores or merges your data. Every ^FD field must be closed with ^FS — an unterminated field swallows the commands that follow it, a very common bug.

Unsupported commands

If you paste ZPL that uses commands this engine doesn't render, they're listed as warnings. The label may still print on a real Zebra — the warning just means our preview can't render that command.

Privacy

Validation runs entirely in your browser. Your ZPL is never uploaded to a server.

Frequently asked questions

Does a valid result guarantee it prints?

It means the structure is sound (tags, fields, parseable). Physical printing also depends on media, DPI and printer settings, but most 'nothing prints' issues are structural — exactly what this catches.

What does 'fields not closed' mean?

You have more ^FD than ^FS. An ^FD data block must end with ^FS; if it doesn't, the printer keeps reading the following commands as data.

Why are some commands marked unsupported?

Our renderer supports the common ZPL command set. Less common or printer-specific commands are flagged as warnings; they may still work on your printer.

Is my ZPL sent anywhere?

No. Everything runs locally in your browser.

Can I then preview or edit it?

Yes — use the ZPL viewer to render it, or open it in the editor to fix and re-export.