Published:
On a computer, ZPL needs no driver: you send the bytes and the printer's firmware does the rendering (see printing ZPL without a driver). Phones and tablets make that harder in one specific way: their built-in Print button sends a document, not raw commands. AirPrint on iPhone and iPad delivers finished pages, and on Android the printing framework asks the app for a PDF. So the question is never "which driver?" but "which route carries my ZPL bytes unchanged?"
Zebra's free Printer Setup Utility exists for iOS (App Store)
and Android (Google Play). Its Files feature sends a file to the
printer — Zebra lists ZPL scripts among the file types — so a
.zpl saved on the device prints as-is. Discovery looks on
the same subnet; if the printer is elsewhere, enter its IP address by
hand. The iOS version needs Link-OS 5.2 or newer on the printer.
Writing your own app? The network route is the same one desktop tools use: open a TCP connection to the printer on port 9100 and write the ZPL — Zebra's own Android print app uses port 9100 for network printing. The commands and the "nothing prints" checklist are in how to send ZPL to a network printer.
If what you have is a shipping-label PDF, not ZPL, the document route is the right one. On Android, Zebra's Zebra Print service plugs into the system print dialog and prints PDFs and images to supported Link-OS printers (Android 10 or newer, Link-OS 5.2 or newer; Zebra lists the ZQ, ZD, ZT and ZR families). On Apple devices, Zebra documents AirPrint for its ZSB series on the same Wi-Fi network; for industrial Link-OS models we found no official AirPrint list, so do not plan on it. Either way the printer receives a picture of the page — any ZPL inside a document is printed as text, not executed.
The Printer Setup Utility for iOS connects over Bluetooth Classic and
Bluetooth Low Energy; a Classic connection is paired once in the iOS
Settings app first. If you build an iOS app that talks to a Zebra
Made for iPhone printer over Bluetooth, Zebra's SDK documentation
uses Apple's ExternalAccessory framework with the protocol string
com.zebra.rawport.
A phone on mobile data cannot reach a printer behind the warehouse router. Two patterns avoid opening ports:
1. Weblink (Link-OS). The printer itself opens an outbound,
TLS-encrypted WebSocket connection to a server you configure, and
reconnects if it drops; the Printer Setup Utility can set the Weblink
server address. You still need that server — a device-management
product or your own service — which then forwards jobs.
2. A small agent on a computer next to the printer. Labelixa's
DirectPrint agent runs on Windows, macOS and Linux (not on phones); it
collects jobs from the cloud and prints them to a USB or network
printer. The phone only calls the API or uses the panel. Details:
printing
to a USB Zebra printer from the cloud.
A web page cannot open a raw TCP connection to port 9100, on a phone or anywhere else. Zebra's Browser Print helper is published for Windows, macOS and Android — there is no iOS version. The working patterns (relay through a server, a local helper, or a document print) are in printing ZPL from a browser.
Whatever the route, a raw path has no undo: check the label in the online viewer first — it works in the browser on a phone, too.
AirPrint and the Android print framework send documents, not raw commands. ZPL inside a document is printed as text. Send the file with Zebra's Printer Setup Utility (Files) or over port 9100 instead.
On the same Wi-Fi, yes: Zebra's Printer Setup Utility for iOS can send a ZPL file to a Link-OS printer (Link-OS 5.2 or newer), and your own app can write to port 9100.
No. Zebra publishes Browser Print for Windows, macOS and Android; there is no iOS version, and a web page cannot open port 9100 itself.
A browser cannot open a socket to port 9100. The three patterns that actually deliver ZPL from a web app, and what each one costs.
Printing ZPL Without a Printer DriverWhy ZPL needs no driver, three ways to send it raw — direct socket, CUPS raw queue, Windows Generic/Text Only — and when a driver helps.
Printing ZPL on macOS and Linux with a CUPS Raw QueueSet up a raw CUPS queue with lpadmin, send ZPL with lp, and avoid the classic trap: a filtering queue that prints your ZPL code as plain text.
How to Send ZPL Directly to a Network PrinterZebra network printers accept raw ZPL on TCP port 9100. How to send a file from Windows, macOS or Linux, from code, and what to check when nothing prints.