Stripy Horse
Stripy Horse

ZPL, tamed.

The developer platform for Zebra printing

ZPL is a command language from the 1980s (no preview, no types, no test mode) and it still runs every warehouse on earth. Stripy Horse wraps it in the tooling you'd expect from a modern stack: design labels in HTML, convert PDFs and images with an engine proven on thousands of real carrier labels, preview any ZPL pixel-for-pixel, and test the whole pipeline on virtual printers. One API, SDKs for your language.

Browse real labels → API docs →

Stripy Horse: a horse being painted with zebra stripes

Stripy Horse takes a wild Zebra and makes it a tamed workhorse.

Eight labels printed on a real Zebra printer: the Stripy Horse logo being painted, frame by frame

One PDF, eight labels, a real Zebra printer, converted by the engine below.

New to Zebra printers?

Zebra makes the rugged thermal printers behind nearly every shipping label, price tag, patient wristband, and pallet tag on earth: the gray workhorses humming in every warehouse, pharmacy, and shipping dock. There's no ink: a heated printhead burns the image straight onto heat-sensitive stock, one row of dots at a time. And they don't speak PDF; they speak ZPL, a command language from the 1980s where ^FO50,50^FDHello^FS means "put Hello at x=50, y=50". No screen, no preview, no test mode: the only way to know what a label looks like is to print it. That's the gap Stripy Horse closes: preview, convert, and test ZPL like any other part of your stack. Built by a software engineer who has spent five years writing warehouse fulfillment systems (from an office inside the warehouse), fighting exactly this.

The virtual Zebra printer

Create a printer, point your existing code at its address (raw TCP 9100 or HTTPS, no code changes) and every label your system prints appears rendered in a live inbox. It answers ~HS and SGD status queries like real firmware, holds jobs when you inject a paper-out fault, and keeps everything queryable over REST. No other service offers this. Try the shared one right now →

CI without hardware

Run your fulfillment code in the pipeline, then assert on captured jobs via REST: the ZPL your system sent and the rendered PNG. Golden-diff labels so a template change that breaks a barcode fails the build, not the warehouse.

Remote developers

The Zebra is in the warehouse; your team isn't. Give every developer their own virtual printer: print from a laptop, a container, a cloud environment, no VPN to hardware, no "can someone check the printer?" in Slack.

Debugging & support

See exactly the bytes your system sent, next to what they print as. Reproduce printer jams on demand: inject paper-out or head-up faults and watch jobs hold in the buffer, then flush: the failure modes you can never trigger politely on production hardware.

Every label, saved

An automatic archive of what was printed, when, by which system, rendered and searchable. Audit a mislabeled shipment from last Tuesday instead of shrugging at a thermal printer with no memory.

Webhooks out

Every printed job can POST to your endpoint, HMAC-signed; pipe labels into review queues, QA dashboards, or archival storage.

No wasted stock

Stop burning label rolls and ribbon on test prints, and stop training new developers on a live production printer.

Design labels in HTML

Every warehouse dev knows HTML; nobody knows ZPL. Write HTML/CSS, declare barcodes with <zpl-barcode>, get ZPL; barcodes are emitted as native fields at printhead precision, never as rescaled pixels.

Try the designer

POST /v1/convert/html → ZPL

PDF & image → ZPL

The engine behind the open-source library with 27,000+ installs, rewritten in Go and cross-validated against thousands of physically-proven conversions. Bulk endpoint streams results per page; Z64 compression and experimental barcode-aware mode included.

Try PDF → ZPL · Image → ZPL

POST /v1/convert · /v1/convert/batch

Pixel-true ZPL preview

Render any ZPL at exact label size and density: what you see is what the printhead does. Multi-label streams, rotation, 6–24 dpmm. Try it on anonymized labels from real carrier APIs.

Try ZPL → PNG

POST /v1/render → PNG

Every tool, free in the browser

No account, no card; anonymous output carries a small stripyhorse.io logo that a free account removes. See what each one does.

Official SDKs, one install away

Five clients, generated from the same OpenAPI spec the handlers emit, so they cannot drift from the API:

pip install stripyhorse composer require stripyhorse/stripyhorse-php dotnet add package StripyHorse go get github.com/Stripy-Horse/stripyhorse-go com.github.Stripy-Horse:stripyhorse-java

Ready-to-paste snippets per language in the interactive docs, or generate any other client from openapi.yaml. Free tier: 500 credits a month, no card.

Drive it all from your terminal

The stripyhorse CLI converts, renders, and prints, to a virtual printer or a real Zebra on your network. Browser sign-in, pipe-friendly, one-line install.

# install
curl -fsSL https://raw.githubusercontent.com/Stripy-Horse/stripyhorse-cli/main/install.sh | sh

# sign in, then send the ZPL you just made to a real printer
stripyhorse login
stripyhorse convert label.pdf | stripyhorse print 192.168.1.50

stripyhorse-cli on GitHub →

Straight answers from the developer, not a demo booking

Plans, self-hosting, consulting, or a label that will not scan. No drip campaign, one reply from the person who wrote the code.

No newsletter, no drip: one human reply.