Open it here, in this tab
The converter on this page is a ZPL renderer that runs in your browser. It reads the commands the same way a printer would and paints the result, so you see the label without owning the printer.
- 1Drop the .zpl file onto the area below — or click to browse for it. The file is read locally; nothing is uploaded.
- 2Pick the density your printer uses. 8 dpmm (203 dpi) is the usual one for shipping labels; 12 dpmm is 300 dpi.
- 3If the file holds more than one label, step through them with the pager under the preview. One file routinely holds a whole day of orders.
- 4Export what you need: a PDF at the label's true physical size, a PNG at printer resolution, or a ZIP of PNGs.
Nothing installs and nothing uploads
The rendering engine is JavaScript running in this tab. Addresses, names and barcodes in the label stay on your machine — worth knowing before pasting a customer's shipping label into any online tool.
What is actually inside the file
ZPL stands for Zebra Programming Language. A .zpl file is plain text, and every label in it is a block that starts with ^XA and ends with ^XZ. Between those, each command begins with a caret and two letters, followed by its parameters.
So a line like ^FO50,50^A0N,40,40^FDACME Ltd^FS means: move to x=50, y=50; use scalable font 0 at 40 dots; the text is “ACME Ltd”; end of field. Read a few of them and the wall of symbols turns back into a label.
- ^XA … ^XZ — the start and end of one label. Two blocks means two labels.
- ^FO — field origin: where on the label the next thing is drawn.
- ^FD — field data: the actual text or barcode payload.
- ^FS — field separator: the end of the current field.
- ^A, ^CF — which font, and how big.
- ^BC, ^BQ, ^B3 — Code 128, QR and Code 39 barcodes.
- ^GB, ^GF — boxes and lines, and embedded graphics.
- ^PW, ^LL — the label's width and length in dots, which is how the renderer knows how big it is.
Why a text editor looks like gibberish
It isn't gibberish and the editor isn't failing — a text editor opens a .zpl file perfectly correctly. It just has no reason to know that ^BCN,100,Y,N,N means a barcode, so it shows you the instructions instead of the picture.
The same content also travels under other extensions. A .prn file is very often ZPL captured from a print queue, and plenty of systems write ZPL into a .txt. If the contents start with ^XA, it is a ZPL label whatever the file is called — and this page will open it.
One extra step catches people out: several carrier APIs return the label base64-encoded inside a JSON response. Decode that field first, save it as .zpl, and you have an ordinary label file.
Where .ZPL files come from
Almost nobody writes ZPL by hand. If you have a file, something in your stack produced it — and knowing which changes what you can do about it.
- Carrier APIs. UPS returns a thermal label when the request asks for the ZPL image format, delivered base64-encoded alongside the shipment response; FedEx and USPS integrations offer the same choice.
- ShipStation. ZPL is not a per-store toggle — support switches the whole account over, after which every label it produces is ZPL rather than PDF.
- EasyPost, Shippo and similar. The label file format is a parameter on the request, with ZPL sitting next to PDF and EPL2.
- A WMS or ERP. SAP, NetSuite and warehouse systems generally emit ZPL straight to a print queue, which is why the file you find is often a .prn nobody meant you to read.
- Your own code. String templates that were never rendered by anything except the printer they were aimed at.
- In Brazil, marketplaces. Shopee, Mercado Livre and Magalu hand ZPL directly to sellers, which is a market of its own — see the Portuguese guides.
The other .ZPL, which has nothing to do with printers
If the file is small, opens as XML and lists song titles, you have a Zune playlist. Microsoft's Zune software used the same three letters, and it is the reason generic “file extension” sites give such confusing answers for .zpl.
Zebra label files are the ones that begin with ^XA. That single check settles which kind you have.
Opening it without a browser
There are offline routes, and they are worth knowing if the label is confidential enough that you would rather not use any website — though rendering here already happens on your machine.
- ZebraDesigner and Zebra Setup Utilities open and send ZPL, on Windows.
- Any text editor shows the source, which is enough to check an address or a barcode payload.
- If you own the printer, the file is already a finished print job — send it raw and skip rendering entirely. The next guide covers both cases.