LPrint A Label Printer Application

Version Apache 2.0 LGTM Grade LGTM Alerts

LPrint implements printing for a variety of common label and receipt printers connected via network or USB. Features include:

  • A single executable handles spooling, status, and server functionality.
  • Multiple printer support.
  • Each printer implements an IPP Everywhere™ print service and is compatible with the driverless printing support in Android™, Chrome OS™, iOS®, Linux®, macOS®, and Windows® 10/11 clients.
  • Each printer can support options such as label modes, tear-off offsets, media tracking, media top offset, print darkness, resolution, roll selection, and speed.
  • Each printer can directly print “raw”, Apple/PWG Raster, and/or PNG files.
  • Each printer automatically recovers from out-of-media, power loss, and disconnected/bad cable issues.


LPrint depends on:

  • A POSIX-compliant “make” program (both GNU and BSD make are known to work),
  • A C99 compiler (both Clang and GCC are known to work),
  • PAPPL 1.1 or later.
  • CUPS 2.2 or later (for libcups).

Supported Printers

The following printers are currently supported:

  • Dymo LabelWriter printers
  • Zebra/Eltron EPL2 printers
  • Zebra ZPL printers

Others will be added as time and access to printers permits.


Through PAPPL, LPrint implements PWG 5100.14-2013: IPP Everywhere™ and the IPP Label Printing Extensions v1.0 for each printer, and has a partial implementation of PWG 5100.22-2019: IPP System Service v1.0 for managing the print queues and default printer.

LPrint is Copyright © 2019-2021 by Michael R Sweet.

LPrint is licensed under the Apache License Version 2.0. See the files “LICENSE” and “NOTICE” for more information.

LPrint is based loosely on the “rastertolabel.c” code from CUPS.


LPrint v1.1.0 December 23, 2021

LPrint v1.0 February 17, 2020

LPrint v1.0rc1 February 10, 2020

LPrint v1.0b2 January 26, 2020

LPrint v1.0b1 January 15, 2020

Announcing LPrint, a Label Printer Application January 13, 2020