Alternative to Jzebra/QZ Java Raw Print Plugin after NPAPI being dropped on Chrome Browser

We all know that NPAPI will be completely removed from Chrome in a few months.

What would be an alternative to the Jzebra/QZ Java plugin that makes raw printing (sending raw ESC/P commands) to POS printers?

Is there a Chrome API (HTML5 and Javascript) that will be able to replace the communication between the browser and the locally installed POS printers in USB or Ethernet?


Is there a Chrome API (HTML5 and Javascript) that will be able to replace the communication between the browser and the locally installed POS printers in USB or Ethernet?

Update: A pure HTML5 solution exists for USB devices, but examples are currently hard to find and browser adoption has been slow:

  • WebUSB USB devices only, select browsers.

In regards to HTML5 and JavaScript, since the removal of NPAPI, the solution tends to involve WebSocket to localhost, or cloud-enabled printers.

This HTTP/WebSockets design is used by:

  • Zebra Link-OS and Cloud Connect (for label printing, etc)
  • Epson ePOS-Device (for receipts, display, barcode scanner)
  • Dymo JavaScript Framework 2.0 (for label printing, etc)
  • PrintNode
  • Google Cloud Print (Slated for retirement Dec 2020)
  • Neodynamic TLClient Print (.NET-based for thermal printers)
  • QZ Tray software (the successor to "JZebra/QZ-Print", labels, receipts, anything raw, PDFs, HTML, USB Scales, USB barcode readers, serial devices)

In regards to Point-Of-Sale specific printing, I have been unable to locate a ready solution that meets these needs (pure HTML5 and JavaScript, widely adopted), so either a Desktop-installed middle-ware or a server-side middle-ware is currently the way to achieve what you are describing.

Full disclaimer, we're the authors of QZ Tray.


You could try PrintNode which has a simple desktop client and json API. It's really quick and has lots of libs: https://github.com/PrintNode/