ZPL rendering benchmarks
Two numbers, measured separately: how long the engine takes to draw a label, and how many labels the production API serves per second. Neither is the latency you will see from your network, which adds the round trip to the server.
Engine time, without HTTP
Measured 2026-10-20 on the production server (Intel Xeon Gold 6248 at 2.5 GHz, 4 vCPU, shared with other services), API commit bfc1680. One thread, 20 warm-up renders, then the runs shown.
| Label | 크기 | 밀도 | Output | p50 ms | p95 ms | Mean ms | Runs |
|---|---|---|---|---|---|---|---|
| Code 128 barcode | 4 × 2 in | 8 dpmm | PNG | 1.5 | 1.6 | 1.5 | 300 |
| Code 128 barcode | 4 × 2 in | 8 dpmm | 1.9 | 2.0 | 1.9 | 300 | |
| Code 128 barcode | 4 × 2 in | 12 dpmm | PNG | 2.1 | 2.3 | 2.1 | 300 |
| Code 128 barcode | 4 × 2 in | 12 dpmm | 3.0 | 4.2 | 3.2 | 300 | |
| One line of text | 4 × 6 in | 8 dpmm | PNG | 2.0 | 2.6 | 2.0 | 300 |
| One line of text | 4 × 6 in | 8 dpmm | 3.0 | 3.3 | 3.1 | 300 | |
| One line of text | 4 × 6 in | 12 dpmm | PNG | 4.2 | 4.7 | 4.3 | 300 |
| One line of text | 4 × 6 in | 12 dpmm | 6.8 | 7.7 | 6.9 | 300 | |
| QR code | 4 × 2 in | 8 dpmm | PNG | 1.1 | 1.1 | 1.1 | 300 |
| QR code | 4 × 2 in | 8 dpmm | 1.6 | 1.6 | 1.6 | 300 | |
| QR code | 4 × 2 in | 12 dpmm | PNG | 1.8 | 1.9 | 1.8 | 300 |
| QR code | 4 × 2 in | 12 dpmm | 2.7 | 2.8 | 2.7 | 300 | |
| Shipping label (demo) | 4 × 6 in | 8 dpmm | PNG | 13.0 | 15.0 | 13.2 | 300 |
| Shipping label (demo) | 4 × 6 in | 8 dpmm | 14.5 | 15.0 | 14.5 | 300 | |
| Shipping label (demo) | 4 × 6 in | 12 dpmm | PNG | 40.0 | 42.9 | 40.4 | 300 |
| Shipping label (demo) | 4 × 6 in | 12 dpmm | 42.2 | 43.4 | 42.2 | 300 |
Reproduce it with the API's source:
cargo run --release -p openzpl-api --example bench -- bench/fixtures 300
Throughput over HTTP
Load test of 2026-10-20 against the production API from the same datacenter, so without internet latency. Hardware: 4-core x86-64 VPS, 8 GB RAM, shared with other services; the API process limited to 2 render slots.
| Label | Sustained rate |
|---|---|
| 4 × 6 in shipping label, PNG, 8 dpmm | ≈ 68 labels/s |
| 4 × 6 in shipping label, PDF, 8 dpmm | ≈ 112 labels/s |
| Short text label, PNG, 8 dpmm | ≈ 214 labels/s |
These rates are for the whole service. Each client is limited by its plan; see pricing.
What these numbers don't say
- They aren't a latency promise: your request also travels to the server and back.
- A label with large images or many barcodes takes longer than the shipping label measured here.
- No uptime or response-time commitment is offered today; plans with an SLA aren't live yet.