Guides
Practical, working answers to Zebra and ZPL problems, from the team behind the open-source converter with 27,000+ installs.
How to find your Zebra printer's IP address
Five ways to find a networked Zebra's address, from a sweep that needs nothing installed to the SGD query that actually works, including why the obvious ip.addr command returns 0.0.0.0 on a printer that is plainly online.
Zebra printer prints the ZPL code as text instead of the label
You send ^XA...^XZ and the printer prints those characters instead of the label. Three causes (diagnostic mode, printer language, and a driver sending it as a document), how to ask the printer which one you have, and the one-line fix for each.
Zebra printer prints blank labels
The printer feeds, the label comes out empty. Usually the media and the print method disagree, and the printer has no way to tell you. How to read that off ~HS, plus darkness, media loaded upside down, and content placed off the label.
Zebra printer not responding on port 9100
Refused, timed out and silent-but-connected are three different faults with three different fixes. How to tell which one you have, why only one program can hold 9100 at a time, and why a working printer goes quiet mid-job on purpose.
ImageMagick won't open your PDF ("not allowed by the security policy")
The policy.xml rule that stops Imagick reading PDFs, why your distro added it, how to check whether you are actually hitting it, and four ways past it including one that needs no root and no Ghostscript.
Zebra label prints cut off (only half the label appears)
Content past the right edge or below the fold, silently dropped. The three causes are ^PW wider than the printhead, ^LL shorter than the design, and a 6x4 layout on a 4-inch printer, which no setting can fix.
Why your Zebra barcode won't scan (and how to prove it will)
Fractional-dot modules, invaded quiet zones, X-dimensions below spec, speed and darkness damage: the physical reasons thermal barcodes fail scanners, and how to verify a label before a chargeback does it for you.
Why international labels won't generate as ZPL (customs forms)
Carriers happily return ZPL for domestic labels, then hand you a PDF the moment a customs form is involved. Why that happens with USPS, Endicia and friends, and how to keep your thermal-printer workflow anyway.
Zebra label prints sideways? Rotation, ^PO, and the printhead
Why Zebra labels come out sideways or clipped (print orientation, rotated ZPL, and the physical printhead-width limit), with the fix for each, in the order to try them.
How to print ZPL to a Zebra printer (every platform)
Send raw ZPL to a Zebra over the network from Linux, macOS, Windows, or code (port 9100, the nc one-liner, PowerShell, Windows RAW shares), plus the timeout and buffer traps that bite everyone once.
How to open a .zpl file (and actually see the label)
A .zpl file is not an image; it's printer code. How to read it, preview it as a real label in your browser, convert it to PNG or PDF, and print it to a Zebra printer.
How to test ZPL without a Zebra printer
Render ZPL to an image, or point your code at a virtual Zebra printer that speaks TCP 9100 and ~HS like real firmware, including in CI, where label bugs should fail the build instead of the warehouse.
What is ZPL? Zebra Programming Language explained
ZPL is the 1980s command language that still drives most of the world's label printers. How it works, what the commands mean, a dissected real example, and the tooling that makes it bearable.
How to print Arabic and Russian on Zebra printers
Zebra printers can't shape Arabic and choke on Cyrillic. Selective rasterization fixes it: the unprintable text becomes a bitmap at printhead resolution, everything else stays native ZPL.
How to convert PDF to ZPL
Three working ways to convert a PDF shipping label to ZPL (free online tool, open-source PHP library, or REST API), plus the dpmm math that makes the output actually print right.