Label Designer · labels

Show the label before it prints

A ZPL II renderer that draws labels dot for dot using Zebra's rules, so the preview shows what the printer will print, plus a label designer your users get inside your software.

The label editor with a shipping label A GS1 pallet label rendered from ZPL

Two products, one install

Render labels, and let your users design them

Viewer

ZPL → PNG

Over HTTP from your back end, or in the browser with <zpl-viewer> and the same renderer. The same POST-to-PNG route as Labelary, so moving existing calls is mostly a host change.

Editor

A label designer in your app

<zpl-editor>: canvas with rulers and snapping, toolbox, properties and the ZPL kept in sync. Your app loads and saves the templates in its own database.

Use cases

What vendors build with it

Preview before printing

Show the shipping label on screen, the way the printer will print it.

Labels on orders and e-mails

Attach label images to orders, tickets or customer notifications.

User-designed templates

Customers design their own carton and pallet labels without filing a change request.

Merge and print

Fill a template with order data and send printer-ready ZPL straight to a network Zebra.

Template tests in CI

Render labels in automated tests and catch layout regressions before release.

Air-gapped sites

Runs with no internet access at all; the license key is checked locally.

What it renders

The ZPL your customers actually print

Barcodes

  • Code 128
  • GS1-128
  • Code 39
  • Code 93
  • EAN / UPC
  • 2 of 5
  • Codabar
  • DataBar
  • QR
  • Data Matrix
  • PDF417
  • MicroPDF
  • Aztec
  • MaxiCode
  • Codablock F
  • Postal

Labels

  • 152, 203, 300 and 600 dpi printheads
  • Any size from 0.1 to 15 inches per side
  • Graphics, downloaded fonts, serialization (^SN, ^PQ)
  • Unknown commands warn instead of failing the render
  • Barcodes are decoded by a scanner library in automated tests; positioning rules were spot-checked against Zebra ZM400 prints
  • Zebra fonts are close substitutes: text widths can differ by a dot or two

Integration

An API call and an HTML element

From your back end

curl -X POST --data-binary @label.zpl \
  https://labels.your-company.example/v1/printers/8dpmm/labels/4x6/0/ \
  -o label.png

Also POST /v1/render (every label, JSON) and POST /v1/merge (template + data → ZPL). OpenAPI 3.1 included.

In your front end

<script type="module"
  src="https://labels.your-company.example/sdk/1.0.1/labelviewer-elements.min.js"></script>
<zpl-editor theme="light"></zpl-editor>

Guides for plain HTML, Angular, React, Vue and Next.js. Typed, themable with CSS tokens, works under a strict CSP.

Label Designer runs as the labelviewer service: its API, SDK and developer docs use that name.

Deployment and licensing

Deployment

  • One self-contained executable: Linux, macOS, Windows
  • Dockerfile included; the executable writes nothing at runtime
  • Stateless: add instances to add throughput
  • Label data never appears in the logs

Licensing

  • Viewer and Editor licensed separately
  • Offline, signed license key; nothing phones home
  • Evaluation builds include a license (images marked TRIAL)
  • The API has no authentication: run it inside your network

How licensing works

See it render your labels

Paste your own ZPL into the live demo, or ask for an evaluation license for your environment.