Tools
CUPS (Common UNIX Printing System)
CUPS (originally the Common UNIX Printing System, now styled simply CUPS) is a standards-based, open-source printing system for Linux, macOS, and other UNIX-like operating systems. It provides a complete printing stack: a scheduler that speaks the Internet Printing Protocol (IPP), a filter subsystem that converts submitted documents into a format a given printer can render, and a backend subsystem that transmits the data to the device. CUPS exposes System V and Berkeley (BSD) command-line interfaces, a web-based administration interface, and a C programming API. Created by Michael R. Sweet in 1997, adopted by Apple for Mac OS X in 2002, and now developed by the OpenPrinting organization under the Apache License 2.0, CUPS is the default printing system on macOS and the large majority of Linux distributions.
By PrinterArchive EditorialEdited by PrinterArchive Editorial
History
CUPS was created by Michael R. Sweet through his company Easy Software Products. Development began in 1997, and the first public beta was released on May 14, 1999; version 1.0 followed later in 1999. The original design targeted the older Line Printer Daemon (LPD) protocol, but because of LPD's limitations and inconsistent vendor implementations, the project adopted the then-emerging Internet Printing Protocol (IPP) as its foundation instead.
Apple adopted CUPS as the printing system for Mac OS X beginning with version 10.2 ("Jaguar") in 2002. In February 2007, Apple hired Michael Sweet and purchased the CUPS source code, becoming the project's steward for over a decade. The name was shortened from "Common UNIX Printing System" to just "CUPS" beginning with the 1.4 release, due to legal concerns tied to the UNIX trademark.
Michael Sweet announced he had left Apple on December 20, 2019. In September 2020, OpenPrinting developers, together with Sweet, forked Apple's codebase; that OpenPrinting fork is now the primary, actively developed branch of CUPS, while Apple's own repository became largely dormant (its last release, 2.3.6, dates to 2022).
What problem it solved
Before CUPS, UNIX printing was fragmented across two historic systems — BSD lpr/lpd and System V lp — plus a patchwork of vendor extensions. These systems predated modern networking conventions, offered weak support for describing printer capabilities, handled only a narrow set of file formats natively, and did not interoperate cleanly across vendors.
CUPS unified UNIX printing under a single, network-native architecture built on an open IETF standard (IPP). It added automatic file-format detection and conversion, standardized machine-readable descriptions of printer capabilities, and provided a common management interface — while still offering compatibility command-line tools for both the BSD and System V heritages.
How it works
When an application submits a document, the CUPS scheduler (cupsd) receives it as an IPP request. The scheduler uses a MIME-type database to auto-detect the document's format, then consults conversion rules to assemble a chain of one or more filters that transform the document step by step into a format the target printer accepts. The final stage hands the data to a backend, which transmits it to the device over the appropriate transport (USB, network socket, IPP, LPD, and so on).
Throughout, the scheduler tracks job state, queues, printer classes, and status messages, and can notify subscribers of events.
Printer capabilities have historically been described by PPD (PostScript Printer Description) files, which tell CUPS what options a printer supports and which filters to invoke. Modern CUPS increasingly relies on IPP attributes queried directly from the printer instead of static PPDs.
Where it sits in the print/document pipeline
CUPS is the middle layer between applications and printer hardware. Above it, applications (or the operating system's print dialog) generate a document — commonly PDF on modern systems, historically PostScript — and submit it via IPP or a compatibility command. Below it, backends drive the physical connection.
CUPS itself owns spooling, scheduling, format conversion (rasterization and rendering), option handling, and job and queue management in between.
Relationship to printers
CUPS discovers and communicates with printers through its backends and discovery mechanisms (DNS-SD/Bonjour and SNMP). It ships backends for network sockets (AppSocket/JetDirect), IPP, LPD, and USB, among others.
For each printer it maintains a queue and a capability model (via PPD or queried IPP attributes) so it can present valid options — paper size, duplex, color, resolution — and produce correctly formatted output. For modern IPP-based printers, including AirPrint and IPP Everywhere devices, CUPS can print "driverless," without any vendor-specific software.
Relationship to operating systems
CUPS is the standard printing subsystem on macOS (since Mac OS X 10.2, 2002) and is the default on the vast majority of Linux distributions. It also runs on other UNIX-like systems.
It integrates with each operating system's print dialogs and administration tools while providing its own web interface (served on the local machine at port 631) and cross-platform command-line tools. Its use of IPP as the native protocol makes it interoperable across these platforms and with network print servers.
Relationship to PDF / PostScript / drivers
Early CUPS was built around a PostScript-centric workflow and bundled a Ghostscript interpreter to rasterize PostScript into CUPS Raster for non-PostScript printers; PPD files (a format originating with Adobe for PostScript printers) described printer options.
Over time the pipeline shifted toward PDF as the standard print-job format on modern systems, with filters converting PDF and other inputs to whatever the printer needs. Traditional printer drivers and static PPDs are being phased out: PPD usage was deprecated with the 1.4 release, raw queues were deprecated with CUPS 2.2 (2018), and printer drivers were deprecated with CUPS 2.3 (2019).
To keep older, driver-dependent printers working, OpenPrinting introduced Printer Applications — self-contained programs that present a legacy printer to CUPS as if it were an IPP/driverless printer, mapping IPP attributes onto the old driver or PPD options internally.
Modern use
Today CUPS remains the default printing system on macOS and Linux. Modern deployments emphasize driverless printing via the IPP Everywhere and AirPrint standards, so many printers work with no downloaded drivers at all. Legacy and specialty printers are supported through Printer Applications rather than in-tree drivers.
The OpenPrinting fork is the actively maintained line; its stable 2.4.x series is the current release branch.
Advantages
- Built on an open IETF standard (IPP) rather than a proprietary protocol.
- Automatic file-type detection and a flexible, chainable filter pipeline.
- Unified interface across UNIX-like operating systems, with both BSD and System V compatibility commands plus a web UI and a C API.
- Network-native: discovery, remote queues, and print-server operation are first-class.
- Driverless printing support (IPP Everywhere, AirPrint) reduces dependence on vendor drivers.
- Open-source under a permissive license (Apache 2.0, with an exception to allow linking against GNU GPL2-only software).
Limitations
- The classic PPD/driver model is deprecated, creating a transition period in which some older printers depend on Printer Applications rather than long-standing driver packages.
- Driverless printing depends on the printer correctly implementing IPP standards; devices with incomplete IPP support can behave inconsistently.
- The scheduler is a traditional process that spawns external filter and backend processes, an architecture that reflects its late-1990s origins.
- After Apple stepped back, active development consolidated under the OpenPrinting fork; Apple's own repository is effectively dormant, which matters for systems still tracking that codebase.
Related standards and protocols
- IPP (Internet Printing Protocol) — the IETF standard CUPS is built on for managing jobs and queues.
- IPP Everywhere and AirPrint — driverless printing profiles and standards.
- LPD/LPR (RFC 1179) — the older line-printer protocol CUPS supersedes and can still speak via a backend.
- PPD (PostScript Printer Description) — Adobe-originated printer capability files, historically central to CUPS, now deprecated.
- PostScript and PDF — page-description and document formats central to the print-job pipeline.
- DNS-SD / Bonjour and SNMP — used for network printer discovery.
- AppSocket / JetDirect — a common raw-TCP network printing method supported via a backend.
Timeline
1997
Michael R. Sweet (Easy Software Products) begins developing CUPS.
May 14, 1999
First public beta released.
1999
CUPS 1.0 released.
2002
Apple adopts CUPS as the printing system in Mac OS X 10.2.
February 2007
Apple hires Michael Sweet and purchases the CUPS source code.
2009 (1.4 release)
Name shortened to "CUPS" over UNIX trademark concerns; PPD files deprecated.
2018 (CUPS 2.2)
Raw print queues deprecated.
2019 (CUPS 2.3)
Printer drivers deprecated in favor of driverless printing and Printer Applications.
December 20, 2019
Michael Sweet announces he has left Apple.
September 2020
OpenPrinting, with Sweet, forks Apple's CUPS; OpenPrinting CUPS becomes the actively developed line.
2022 (2.3.6)
Last release from Apple's repository; Apple's branch effectively dormant thereafter.
Current
OpenPrinting CUPS 2.4.x is the maintained stable branch.
Frequently asked questions
- What does CUPS stand for?
- CUPS originally stood for the Common UNIX Printing System. The project is now styled simply as CUPS; the longer name was shortened beginning with the 1.4 release due to legal concerns tied to the UNIX trademark.
- Who created CUPS and who maintains it now?
- CUPS was created by Michael R. Sweet through his company Easy Software Products, with development starting in 1997. Apple purchased the source code and hired Sweet in 2007. Since a September 2020 fork, the OpenPrinting organization maintains the actively developed line under the Apache License 2.0.
- What protocol is CUPS based on?
- CUPS is built on the Internet Printing Protocol (IPP), an open IETF standard. Although its original design targeted the older LPD protocol, it adopted IPP because of LPD's limitations and inconsistent vendor implementations. It can still speak LPD/LPR via a backend.
- What is driverless printing in CUPS?
- Driverless printing lets CUPS print to IPP-based printers — including AirPrint and IPP Everywhere devices — using capabilities queried directly from the printer via IPP attributes, with no vendor-specific driver installed. Legacy printers are supported through Printer Applications instead of in-tree drivers.
- Which operating systems use CUPS?
- CUPS is the standard printing subsystem on macOS (since Mac OS X 10.2 in 2002) and the default on the vast majority of Linux distributions. It also runs on other UNIX-like systems and provides a web interface on the local machine at port 631.
Source transparency (7 sources)
These references support claims made in this entry. The archive uses verified institutional and public-domain sources only; see Source policy.
Sources consulted (7)
- OpenPrinting CUPS (project home) — OpenPrinting
- CUPS — Wikipedia
- CUPS 1.4.0 release announcement — CUPS / OpenPrinting
- Printer Applications and Printer Drivers — OpenPrinting
- Demystifying CUPS Development — CUPS / OpenPrinting
- OpenPrinting/cups Releases — OpenPrinting (via GitHub)
- apple/cups Releases — Apple (via GitHub)
Continue in the archive
Related reading
Tools
IPP (Internet Printing Protocol)
Encyclopedic reference on the Internet Printing Protocol (IPP): its RFCs, HTTP-based model, IPP Everywhere, driverless printing, and STD 92.
Tools
LPD / LPR — Line Printer Daemon Protocol
LPD/LPR is the Berkeley line printer daemon protocol (RFC 1179, TCP port 515) for submitting print jobs to and managing the queue of a remote spooler.
Guides · Intermediate
What Is a Print Server?
What a print server does, why organisations use one, and how it centralises queues, drivers, and access.
Guides · Introductory
How Printer Drivers Work
What a printer driver does, why it sits between applications and the printer, and how driver-free printing changed things.