Labels and barcodes over REST

Labels in, barcodes out. No printer required.

Render Zebra ZPL to PNG or PDF, or generate any of 38 barcode symbologies from a single URL. Two endpoints, one engine, no SDK to install.

Free to try, no sign-up. Both tools run in the browser.

Capabilities at a glance

Symbologies supported
38

Symbologies supported

Print densities
6–24 dpmm

Print densities

One request, either format
PNG · PDF

One request, either format

Physical printers required
0

Physical printers required

38 symbologies

29 linear and 9 two-dimensional, each with its own input rules and check digits. Plus 14 content types that format the payload — contacts, Wi-Fi, calendar events, payment requests.

  • Code 128
  • Code 39
  • Codabar
  • Interleaved 2 of 5
  • ITF-14
  • SSCC-18 / NVE-18
  • PZN8
  • EAN-13
  • EAN-8
  • UPC-A
  • Code 39 Extended
  • Code 11
  • MSI
  • Pharmacode
  • Pharmacode Two-Track
  • Industrial 2 of 5
  • IATA 2 of 5
  • Matrix 2 of 5
  • Code 93
  • UPC-E
  • ISBN-13
  • ISBN-10
  • ISSN
  • JAN
  • PZN7
  • USPS PostNet
  • USPS PLANET
  • Royal Mail 4-State
  • KIX (Netherlands)
  • Data Matrix
  • Aztec Code
  • Aztec Compact
  • PDF417
  • Compact PDF417
  • Micro QR Code
  • Swiss QR Code
  • UPN QR
  • QR Code
Which options each one takes

Drawn by the API, on this page load

  • Code 128 barcode encoding ARKA-4417
    Code 128
  • QR Code barcode encoding https://arkalabel.io
    QR Code
  • EAN-13 barcode encoding 590123412345
    EAN-13
  • Data Matrix barcode encoding ARKA-4417
    Data Matrix
  • PDF417 barcode encoding ARKA-4417
    PDF417
  • Aztec barcode encoding ARKA-4417
    Aztec

Built for label work

Debug templates without a printer

See what a label actually looks like before it reaches a print server, including barcode geometry and field wrapping.

Linter warnings, not failures

An unsupported command is reported and skipped rather than failing the render, so one odd field never costs you the whole label.

Options that apply, and only those

A bar width ratio means nothing to Code 128, and guard bars exist only on retail codes. Ask for one anyway and it is ignored and reported, never refused — so a shared link survives a change of symbology.

Check digits computed, not assumed

EAN, UPC, ITF-14, SSCC and PZN all calculate their own check digit, and the printed line shows it. Over-long input is refused rather than quietly truncated into a different product code.

Content types, not forty barcode types

A vCard QR is a QR code; so is a Wi-Fi credential or a payment request. Pick a content type and the payload is built and escaped for you.

Stored formats

Download a format once with ^DF and recall it per parcel with ^XF and ^FN field data, exactly as a printer would.

Two calls

A whole label, from ZPL

curl -X POST --data-binary @label.zpl \
     -H "Accept: image/png" \
     https://api.arkalabel.io/v1/printers/8dpmm/labels/4x6/0/ \
     -o label.png

One barcode, from a URL

curl "https://api.arkalabel.io/v1/barcodes\
?type=code128&data=ARKA-123456789" \
     -o barcode.png

Ready to see it render?

No account needed to try either tool. Paste ZPL, or pick a symbology and type.