Stripy Horse
Stripy Horse

HTML → ZPL converter

Design labels in HTML/CSS: every warehouse dev knows HTML, nobody knows ZPL. Rendered at exact print resolution. Barcodes are declared with <zpl-barcode type="code128|qr" data="…"> and emitted as native ZPL fields at their exact position; they print at printhead precision, never as rescaled pixels.

Output carries a light watermark. Sign in and create a free API key; then every run here is watermark-free (500 credits a month, no card).

preview appears here

About the HTML → ZPL

HTML to ZPL lets you design a label the way you design a web page. The markup is rendered by a headless Chromium at the label's exact size and density, and the result is rasterized into ZPL. Fonts, flexbox, tables and CSS positioning all work, because a real browser is doing the layout.

Barcodes are the exception to rasterizing: a <zpl-barcode> element in your HTML holds its space in the layout and is emitted as a native ZPL barcode command (Code 128, QR and the rest), so it scans as well as one written by hand rather than as a picture of bars.

The rendering browser is isolated: it cannot fetch anything from the network, so external images, fonts and scripts are blocked and the fonts you get are the ones the platform ships. This is what makes the same HTML print identically on every run and in the API.

Density and label size in dots

ZPL positions are printer dots, so the same label is a different number of dots at each density. Match the printer.

Printerdpidots / mm4 x 6 in label2 x 1 in label
Most desktop Zebras (GX, GK, ZD, LP)2038812 x 1218406 x 203
Industrial and healthcare (ZT, ZD 300)300121218 x 1827609 x 304
High resolution (ZT 600)600242436 x 36541218 x 609

Your data: Your HTML is rendered in an isolated headless browser with network access blocked, in memory, and discarded when the response is sent; nothing is stored. Anonymous runs carry a small stripyhorse.io logo in the corner; sign in for clean output. Details in the privacy policy.

Questions

Can I use CSS and web fonts?

CSS yes, including flexbox, grid and absolute positioning. Web fonts no: the renderer blocks network fetches so output never depends on a third-party server. The platform's bundled fonts (DejaVu and Noto families) cover Latin, Greek, Cyrillic, Arabic, Hebrew, symbols and emoji.

How do I add a barcode in HTML?

Use <zpl-barcode type="code128" data="..."> with CSS for its position and size. It reserves the box in the layout and is emitted as a native ZPL barcode, so it scans like any printer-drawn code.

Why does the label look different from my browser?

The renderer uses the printer's resolution and a 1-bit black-and-white output. Thin grey lines and anti-aliased text become solid or vanish; use black text at label sizes and borders at least one dot wide.

Can I call this from my application?

Yes. POST the same HTML to /v1/convert with an API key and you get the ZPL back; the SDKs wrap it for PHP, Python, C#, Java and Go.

The same engine is behind the API and the guides; every tool here is also an API call.