Stripy Horse
Stripy Horse

← All guides

Zebra label prints sideways? Rotation, ^PO, and the printhead

A label that prints sideways, upside down, or half-missing is almost always one of three different problems wearing the same costume. They have three different fixes, so the fastest route is telling them apart first.

What you see What it is Fix
Whole label rotated 180°, otherwise fine Print orientation (^PO) 1
Label rotated 90°, content clipped at one edge Design wider than the printhead 3
Some fields sideways, others fine Per-field rotation in the ZPL 2
Everything fine in preview, sideways on paper Printer default orientation 1

1. Print orientation: ^PO

^POI inverts the whole label (180°); ^PON is normal. It can hide in the job or in the printer's saved defaults — which is why the same ZPL prints fine on one printer and upside down on its neighbor. Send ^PON explicitly in the format and the neighbor's ghost setting stops mattering.

There is no ^PO for 90°. If the whole label is a quarter-turn off, that's not orientation — keep reading.

2. Rotation baked into the fields

Every text and barcode command carries its own rotation: ^A0N is normal, ^A0R rotated 90°, ^A0I inverted, ^A0B 270°. Same letters on ^BC, ^BQ and friends. A label where some things are sideways was authored that way — usually by an exporter that rotated per-field instead of rotating the canvas.

Paste the ZPL into the viewer and render at exact size: what you see is what the printhead does, so you can find the offending fields before wasting stock.

3. The one that isn't software: printhead width

A 4-inch printer physically cannot print a 6-inch-wide design. At 203 dpi a 4-inch head is 812 dots across; a 6×4 landscape label needs 1218. No command fixes physics — the printer clips at dot 812 and the bottom half of your "wide" label is simply gone, which reads as "my label printed sideways and cut off."

The fix is to emit the design rotated 90° onto the feed you actually have: a 6×4 design prints perfectly as a 4×6 job with everything rotated. That's how every carrier does landscape labels on portrait stock.

STRIPY_HORSE_API_KEY=""
curl https://api.stripyhorse.io/v1/render \
  -H "X-Api-Key: $STRIPY_HORSE_API_KEY" -H "Content-Type: application/json" \
  -d '{"zpl": "^XA...^XZ", "preset": "4x6", "rotation": 90}'

The five-minute diagnosis

  1. Render the ZPL in the viewer at your real label size and density. Correct in preview but wrong on paper → printer settings (^PON, check the saved defaults). Wrong in preview too → it's in the ZPL.
  2. Run the sizer. Content wider than your label → that's the printhead problem; use a rotated fit.
  3. Neither → per-field rotation; hunt the R/I/B suffixes.

Sideways labels are annoying; sideways barcodes are expensive — a clipped barcode stops scanning long before it stops printing. The preflight tool grades every barcode on the label so the truck finds out never.

Stripy Horse is the developer platform for Zebra printing — convert PDFs and images, design labels in HTML, preview ZPL pixel-true, and test against virtual printers in CI. Join the early access or try the free tools.

Published 2026-08-25 · Ben Faerber — software engineer, five years building warehouse fulfillment and label-printing systems; maintainer of pdf-to-zpl (26,000+ installs powering production label generation).