ReceiptKit vs QZ Tray

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.

The difference

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.

Side by side

ReceiptKit vs. QZ Tray

ReceiptKitQZ Tray
Install footprintOne bridge per siteAn agent on every machine that prints
Silent printing (no dialog)Needs a signing certificate from a paid support tier
Java runtimeNoneBundled 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 modelFree plan, then per printFree 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.

What changes when you switch

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.

Why teams switch

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.

Still want the print dialog?

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.

FAQ

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.