ZPLServer for Windows, macOS & Linux installs as a local service/daemon and allows you to Convert, Preview and Render raw ZPL (Zebra Programming Language) commands to well known image and document formats like PNG, JPG, PCX & PDF. It also can be configured to forward the ZPL output rendering to any other server/services (webhook)!
zplserver --settings) or through a JSON payload.
zplserver --settings) or through a JSON payload.
ZPLServer listens on a single TCP port 47321 and accepts ZPL commands in two ways:
You can check the port currently in use under the Settings web UI tab (zplserver --settings), or run zplserver --port from the command line.
ZPLServer exposes two HTTP endpoints on the same port used by the web interface.
| Endpoint | Method | Body | Response |
|---|---|---|---|
/render |
POST | JSON payload (see below) | Rendered image/PDF binary (or ZIP for multi-label jobs) |
/render |
POST | JSON payload with "action": "writetofile" |
Saves the output to disk; same binary response |
/render |
POST | JSON payload with "action": "forward" |
Forwards output to the URL in forwardTo; same binary response |
/render endpoint always returns the rendered bytes directly to the caller.
The action field controls whether the output is also saved to disk or forwarded — it does not suppress the HTTP response.
Send Content-Type: application/json with a body like the example below. All fields are optional and fall back to the values configured in the Settings web UI tab (zplserver --settings).
| Field | Type | Default | Description |
|---|---|---|---|
zplCommands | string | — | ZPL II command string. Required. |
zplCommandsCodePage | number | 850 | Code page used to encode the ZPL string (e.g. 850, 1252, 65001 for UTF-8). |
isZplCommandsBase64 | bool | false | Set to true if zplCommands is Base64-encoded. |
dpi | number | 203 | Label printer DPI (203 or 300 are typical values). |
labelWidthInchUnit | number | 4 | Label width in inches. |
labelHeightInchUnit | number | 6 | Label height in inches. |
forceLabelWidth | bool | false | Force the rendered output to exactly the specified width. |
forceLabelHeight | bool | false | Force the rendered output to exactly the specified height. |
antiAlias | bool | false | Enable anti-aliasing for smoother output. |
labelBackColorHex | string | #ffffff | Label background color as a hex string (e.g. #ffffff). |
ribbonColorHex | string | #000000 | Ribbon/ink color as a hex string. |
compressionQuality | number | 100 | JPEG/PNG compression quality (1–100). |
action | string | writetofile | writetofile saves output to disk; forward POSTs output to forwardTo. |
fileFolder | string | {Temp}/label_{Ticks} | Output folder path. Supports {ServiceData}, {Temp}, {Ticks} placeholders. |
fileFormat | string | PNG | Output format: PNG, JPG, PDF, PCX, PCL, GRF, EPL, FP, NV. |
forwardTo | string | " | Webhook URL to POST the rendered output to when action is forward. |
ZPLServer listens on the same port for raw TCP connections. You can write either:
^XA...^XZ) — the server uses the settings from the Settings web UI tab (zplserver --settings).This mode is compatible with any tool or language that can open a TCP socket: Zebra printers, legacy applications, scripts, etc.
On Windows you can configure ZPLServer as a Standard TCP/IP printer port. Any application that prints to this virtual printer will have its ZPL stream captured and processed by ZPLServer automatically.
127.0.0.1ZPLServer_localZPLServer.exe --port.
Run zplserver from a terminal with the following flags:
| Command | Description |
|---|---|
zplserver | Start the background service (normal mode). |
zplserver --settings | Open the Settings page in the default browser. |
zplserver --logs | Open the Logs page in the default browser. |
zplserver --port | Print the port ZPLServer is currently listening on. |
zplserver --device-id | Print the unique Device ID for this installation (used for licensing). |
zplserver --health | Check whether the service is running. Exits with code 0 (OK) or 1 (FAIL). |
zplserver --set-port <port> | Change the listening port (hot-reload if running) |
zplserver --set-license <key> | Set the license key (hot-reload if running) |
zplserver --doc | Show the doc page in the default browser. |
zplserver --help | Show this summary in the console. |
sc or the Services MMC snap-in, so it starts automatically at boot without any user logged in.launchd or systemd respectively — ZPLServer natively supports UseSystemd().
ZPLServer rendering engine supports most of the ZPL formatting and control commands. The following table lists the supported commands. Not listed or unsupported commands will be skipped in the parsing stage.
| Status | ZPL Command | Notes |
|---|---|---|
| ^A Scalable/Bitmapped Font | ||
| ^A@ Use Font Name to Call Font | .FNT extension is not supported | |
| ^B0 Aztec Bar Code Parameters | ECICs and Structured Appended format are not supported | |
| ^B1 Code 11 Bar Code | ||
| ^B2 Interleaved 2 of 5 Bar Code | ||
| ^B3 Code 39 Bar Code | ||
| ^B4 Code 49 | Starting mode is not supported | |
| ^B5 Planet Code bar code | ||
| ^B7 PDF417 Bar Code | ||
| ^B8 EAN-8 Bar Code | ||
| ^B9 UPC-E Bar Code | ||
| ^BA Code 93 Bar Code | ||
| ^BB Codablock | Codablock-F supported only | |
| ^BC Code 128 Bar Code (Subsets A, B, and C) | ||
| ^BD UPS MaxiCode Bar Code | ||
| ^BE EAN-13 Bar Code | ||
| ^BF MicroPDF417 Bar Code | ||
| ^BI Industrial 2 of 5 Bar Codes | ||
| ^BJ Standard 2 of 5 Bar Code | ||
| ^BK ANSI Codabar Bar Code | ||
| ^BL LOGMARS Bar Code | ||
| ^BM MSI Bar Code | ||
| ^BO Aztec Bar Code Parameters | ECICs and Structured Appended format are not supported | |
| ^BP Plessey Bar Code | ||
| ^BQ QR Code Bar Code | Model 1 and Data Encoding Switches are not supported | |
| ^BR GS1 Databar | ||
| ^BS UPC/EAN Extensions | ||
| ^BT TLC39 | ||
| ^BU UPC-A Bar Code | ||
| ^BX Data Matrix Bar Code | Quality Level < 200 is not supported | |
| ^BY Bar Code Field Default | ||
| ^BZ POSTAL Bar Code | ||
| ^CC Change Caret | ||
| ^CD Change Delimiter | ||
| ^CF Change Alphanumeric Default Font | ||
| ^CI Change International Font/Encoding | Character remapping is not supported | |
| ^CT Change Tilde | ||
| ^CW Font Identifier | ||
| ~DB Download Bitmap Font | ||
| ^DF Download Format | ||
| ~DG Download Graphics | ||
| ~DU Download Unbounded TrueType Font | ||
| ~DY Download Objects | AR-compressed format and bitmap, .pcx, .nrd, .pac, .wml, .htm, .get extensions are not supported | |
| ~EG Erase Download Graphics | ||
| ^FA Field Allocate | ||
| ^FB Field Block | ||
| ^FC Field Clock | ||
| ^FD Field Data | ||
| ^FH Field Hexadecimal Indicator | ||
| ^FL Font Linking | ||
| ^FM Multiple Field Origin Locations | ||
| ^FN Field Number | ||
| ^FO Field Origin | ||
| ^FP Field Parameter | ||
| ^FR Field Reverse Print | ||
| ^FS Field Separator | ||
| ^FT Field Typeset | ||
| ^FV Field Variable | ||
| ^FW Field Orientation | ||
| ^FX Comment | ||
| ^GB Graphic Box | ||
| ^GC Graphic Circle | ||
| ^GD Graphic Diagonal Line | ||
| ^GE Graphic Ellipse | ||
| ^GF Graphic Field | ||
| ^GS Graphic Symbol | ||
| ^ID Object Delete | ||
| ^IL Image Load | ||
| ^IM Image Move | ||
| ^IS Image Save | ||
| ~JR Power On Reset | ||
| ^LH Label Home | ||
| ^LL Label Length | ||
| ^LR Label Reverse Print | ||
| ^LS Label Shift | ||
| ^LT Label Top | ||
| ^MC Map Clear | ||
| ^MU Set Units of Measurement | ||
| ^PA Advanced Text Properties | ||
| ^PM Printing Mirror Image of Label | ||
| ^PO Print Orientation | ||
| ^PQ Print Quantity | ||
| ^PW Print Width | ||
| ^RF Read or Write RFID Format | Only Write mode is supported | |
| ^RQ Quick Write EPC Data and Passwords | ||
| ^SF Serialization Field | ||
| ^SL Set Mode and Language (for Real-Time Clock) | ||
| ^SN Serialization Data | ||
| ^SO Set Offset (for Real-Time Clock) | ||
| ^ST Set Date and Time (for Real-Time Clock) | ||
| ^TB Text Blocks | ||
| ^TO Transfer Object | ||
| ~WC Print Configuration Label | ||
| ^XA Start Format | ||
| ^XF Recall Format | ||
| ^XG Recall Graphic | ||
| ^XZ End Format | ||
| ^WF Encode AFI or DSFID Byte | ||
| ^WT Write (Encode) Tag |