The QZ Tray alternative for receipt printing
QZ Tray lets a web page print to a local printer, at the cost of an agent on every machine, a warning dialog on every print unless you buy a signing certificate, and receipts you assemble byte by byte. ReceiptKit moves printing to one free bridge per site, pushes jobs from the cloud with no dialog and no certificate, and renders receipts from templates you design. The free plan includes 500 prints a month, no card required.
A local agent vs. a printing service
QZ Tray solves a real problem: browsers cannot talk to printers, so it runs a small program on the PC that a web page reaches over a local WebSocket. It is open source and prints almost anything, from ESC/POS to ZPL to PDFs. The cost is everything that comes with a per-machine agent. It must be installed and kept current on each computer that prints, the browser tab has to be open to print, and every request must be digitally signed or the cashier sees a trust dialog. Signing certificates for production come with QZ's paid support plans.
ReceiptKit turns that around. One free bridge runs at the site next to the printers and holds a push connection to ReceiptKit. Your web app, your backend, a webhook or a WooCommerce store sends order JSON, ReceiptKit renders the receipt from a template you designed, and the bridge speaks to the printer directly. No agent per machine, no certificate, no Java, and a dashboard that shows what printed.
ReceiptKit vs. QZ Tray
| ReceiptKit | QZ Tray | |
|---|---|---|
| Install footprint | One bridge per site | An agent on every machine that prints |
| Silent printing (no dialog) | Needs a signing certificate from a paid support tier | |
| Java runtime | None | Bundled with the agent |
| Print from a backend or cloud service | ||
| Visual receipt templates | ||
| Print history and live printer status | ||
| Labels (ZPL / EPL) and PDFs | ||
| Serial / HID devices (scales, displays) | ||
| Keeps printing with internet down | ||
| Pricing model | Free plan, then per print | Free software; certificate via annual support |
The last three rows are where QZ Tray genuinely wins. If you need labels, PDFs, serial devices or printing with the internet down, keep QZ Tray for those and use ReceiptKit for receipts. Details on QZ Tray's signing model and support plans are on qz.io.
Three things move
Your server prints instead of the browser. With QZ Tray the page that shows the order has to send the print. With ReceiptKit the order can come from anywhere: a Node.js call, a webhook, Zapier, or the WooCommerce plugin on a new order. Browser code still works, using a public key that can print and nothing else.
Receipts become templates. The ESC/POS or HTML you built for QZ Tray becomes a template in the visual editor, or the AI assistant drafts one from a photo of your current receipt. From then on you send data, not layout.
One bridge replaces every agent. Install the bridge on a Windows PC, a Mac or a Raspberry Pi next to the printers, claim it once, and every device at the site prints through it. Adding a tablet or a second register needs no install.
What you get instead of an agent
Nothing to install on the counter PC
QZ Tray has to be installed, updated and trusted on every machine that prints. ReceiptKit needs one free bridge per site, next to the printers. Every browser, tablet, backend and store then prints through it.
Silent printing without a certificate
QZ Tray warns on every print unless the request is signed with a certificate from a paid support plan. ReceiptKit jobs travel over an authenticated push connection, so there is no dialog and nothing to sign or renew.
Print from anywhere, not just the browser
A local agent can only print what the local page sends it. With ReceiptKit your server, a webhook, Zapier or a WooCommerce store prints to the counter whether or not a browser is open.
Templates instead of byte arrays
With QZ Tray you assemble ESC/POS or HTML yourself. ReceiptKit renders a template you design visually, with logos, fonts, item tables, QR codes and barcodes, from plain order JSON.
See what printed
Every job shows in the dashboard with its result, and printers report cover-open and paper-out live. A local agent gives you a console log on one machine.
Keep your existing printers
The bridge speaks StarPRNT, Star Raster and Epson or generic ESC/POS directly over Ethernet, Wi-Fi or USB, so the Star and Epson printers you bought for QZ Tray keep working.
Browser printing without any agent
For a counter PC where the receipt printer is installed as a normal Windows or Mac printer, ReceiptKit's browser printing renders the same template in the page and opens the OS print dialog. No bridge, no agent, no certificate. It ships today in the WooCommerce plugin and is free and unlimited on every plan.
Common questions
Does ReceiptKit need a signing certificate for silent printing?
No. QZ Tray shows a warning dialog on every print unless the request is signed with a certificate that QZ issues to paid support customers. ReceiptKit prints are sent from your server or app to the bridge over an authenticated connection, so there is no browser dialog and nothing to sign.
Does ReceiptKit need Java or an install on every computer?
No Java. The free bridge is a small native app for Windows or macOS, or a Raspberry Pi image, and you install one per site next to the printers, not one per machine that needs to print. Any browser, backend or WooCommerce store then prints to those printers without anything installed locally.
Can I still print from the browser?
Yes, two ways. From browser JavaScript, the receiptkit package prints through the bridge using a public key. For a counter PC with the printer installed as a normal OS printer, ReceiptKit's browser printing renders the template in the page and opens the print dialog with no agent at all.
When is QZ Tray the better choice?
If you print labels (ZPL, EPL), arbitrary PDFs, or talk to serial and HID devices such as scales and pole displays, QZ Tray's raw local pipe is the right tool. It also keeps printing with no internet connection, which the bridge does not. ReceiptKit is built specifically for receipts pushed from the cloud.
What happens if the internet drops?
Prints cannot reach the bridge until the connection returns; the bridge reconnects on its own. Jobs sent while it is offline are not printed, so pass waitForResult on the API call to get a timeout back and retry. QZ Tray, running entirely on the local machine, is unaffected by an internet outage.
Does it work with my Star or Epson printer?
Yes. The bridge speaks StarPRNT, Star Raster and Epson or generic ESC/POS directly over Ethernet, Wi-Fi or USB. The only driver anywhere is Epson's APD for Epson USB printers on Windows.
Retire the per-machine agent
Install one free bridge, design a template, and print from any app or store with a single call. 500 prints a month free.