CUPS
Released under Apache-2.0, CUPS provides common Unix Print System uses Internet Printing Protocol (IPP) to support printing to local on self-hosted...
Open-source print server infrastructure, honestly reviewed. Not the most exciting software on your server, but the one that makes every printer on your network actually work.
TL;DR
- What it is: CUPS (Common Unix Printing System) is the open-source print server that ships with macOS, iOS, and virtually every Linux distribution. It’s the layer between your OS and your printer [README].
- Who it’s for: Sysadmins and technical founders who need to share a physical printer across a local network, run a headless print server, or support legacy hardware without per-seat driver licensing.
- Cost savings: Enterprise print server software (Windows Server with print services, Printix, PaperCut NG) can run $50–$500/month depending on seat count. CUPS is $0. The hardware it runs on is a $5–10/mo VPS or a spare Raspberry Pi.
- Key strength: It is the standard. AirPrint, IPP Everywhere, and most modern driverless printing are built on top of CUPS. There is no serious open-source alternative [README].
- Key weakness: The project has a complicated governance history (Apple handed stewardship to OpenPrinting in 2019, the apple/cups repo and openprinting/cups repo diverged), setup is not beginner-friendly, and the web UI is stuck in a visual design from roughly 2004.
What is CUPS
CUPS stands for Common Unix Printing System. It was originally developed by Easy Software Products, acquired by Apple in 2007, bundled into macOS — and then quietly handed off to the OpenPrinting project (a Linux Foundation initiative, now maintained largely by Canonical/Ubuntu engineers) around 2019 when Apple stopped treating it as a strategic asset.
Today there are technically two repos: apple/cups (frozen at version 2.3.x, last meaningful update in May 2022) and openprinting/cups (actively developed, at version 2.5.x beta, Apache 2.0 licensed, 1,548 GitHub stars). If you’re setting up a print server in 2026, you want the OpenPrinting version [README].
What CUPS actually does: it implements the Internet Printing Protocol (IPP) as a server daemon (cupsd) that runs in the background and mediates all print jobs. When you print from any application, the job goes to CUPS, which filters it (converts your PDF or image into whatever language the printer understands), routes it to the right physical device over USB, network TCP, or IPP, and manages the queue [README].
The practical result is that a single Linux machine with CUPS installed can share one or more physical printers to every device on your network — Windows, macOS, iOS, Android — without you installing printer drivers on each client individually [3]. AirPrint works this way. IPP Everywhere works this way. The “just works” printer setup on a Mac that detects your network printer automatically is CUPS doing its job invisibly.
Apple describes the cups.org version as “the standards-based, open source printing system developed by Apple for iOS, iPadOS, and macOS” [website]. That description is now half a decade out of date — Apple has reduced its investment significantly — but the technical reality remains: the IPP-based printing standards CUPS implements are what the modern printing world runs on.
Why people choose it
There isn’t much of a competitive landscape here, which is itself the answer. CUPS isn’t something you choose over a competing open-source print server — it is the open-source print server. The reasons people deploy it explicitly rather than just using the version that came with their OS:
Sharing a single printer across a network. If you have one physical printer connected to a desktop or server, and you want every machine in your house or office to print to it without wiring it directly into each computer, you set up CUPS as a print server [3]. A 2009 FunnelFiasco writeup on configuring a print server [3] is still substantially accurate — the cupsd.conf configuration format and IPP port (631) haven’t changed in 15 years, which is either a sign of stability or ossification depending on your perspective.
Running a headless Linux box as print infrastructure. A Raspberry Pi with CUPS installed is a common homelab setup: a $35 piece of hardware converts any USB printer into a wireless network printer that supports AirPrint and appears in every macOS/iOS device automatically. No cloud account, no subscription, no vendor lock-in.
Legacy printer support without Windows. Many organizations have laser printers from 2010 that don’t have modern driverless IPP support. CUPS handles these via PPD (PostScript Printer Description) files — legacy driver files that describe printer capabilities. This is officially deprecated in the OpenPrinting vision (they want everyone on driverless IPP), but it still works [README].
Escaping enterprise print server licensing. PaperCut, Printix, and Windows Server Print Services charge per user or per seat. A small company with 20 employees printing to 3 shared printers doesn’t need to pay $200/month for print management software. A Linux box with CUPS handles this for the cost of electricity.
Features
Based on the OpenPrinting README and first-hand configuration documentation [README][3]:
Core print server:
- IPP/IPPS server daemon (cupsd) — handles all client-to-printer communication [README]
- AirPrint support — iPhones and Macs discover and print to it automatically [README]
- IPP Everywhere — driverless printing for modern IPP-capable printers [README]
- PPD-based legacy driver support for older hardware [README]
- System V (
lp) and Berkeley (lpr) command-line printing interfaces [README] - Print queue management: pause, resume, cancel, reorder jobs
- CUPS classes — logical groupings of printers for load-balancing or failover
Web interface:
- Web admin at
http://localhost:631/— add printers, manage queues, view jobs [README] - Password-protected admin functions (any user in the
lpadmingroup, or root) [README] - Remote access possible if configured (off by default for security) [3]
Protocol support:
- IPP (Internet Printing Protocol) on port 631 [3]
- HTTP/HTTPS wrapping of IPP
- USB local connections
- LPD/LPR legacy protocol support
Filters and backends:
- Common print filters ship with CUPS: PostScript, PDF, image formats, text [README]
- Additional filters via the
cups-filtersproject (separate package, maintained by OpenPrinting) [README] - Printer Applications — the modern replacement for PPD drivers [README]
What’s notably absent:
- No print accounting or auditing (you need PaperCut or custom scripts for that)
- No web-based job submission for end users — it’s a server, not a portal
- No user quota management in the base install
- The web interface requires authentication via system users — there’s no separate user database
Pricing: SaaS vs self-hosted math
CUPS is free software (Apache 2.0). There is no SaaS tier, no cloud version, and no commercial licensing. This section is straightforward:
CUPS itself: $0 [README]
Hardware to run it on:
- Raspberry Pi 4 (2GB): ~$35 one-time + power (a few dollars/month in electricity)
- Used thin client or mini PC: $30–60 one-time
- VPS (if you need remote printing, not just LAN): $5–10/month
What you’re replacing:
Windows Server with Print Services: Windows Server 2022 Standard runs ~$500–$1,000 for the OS license, plus Client Access Licenses at ~$30–50 per user. For 20 users that’s $600–$1,000 in CALs alone.
Printix: Cloud print management. $8.99–$14.99/user/month. For 20 users: $180–$300/month, or $2,160–$3,600/year.
PaperCut NG: One-time perpetual license, but starts around $500 for site license and requires a Windows or Linux server.
Concrete savings for a 10-person office: Printix at $8.99/user = $90/month = $1,080/year. A Raspberry Pi running CUPS = $35 one-time + ~$2/month electricity. Year-one savings: ~$1,000. Ongoing savings: ~$1,056/year. The caveat is that Printix also handles mobile printing, print accounting, and has a management dashboard — if you need those, CUPS requires more setup and additional tools.
If you just need network printing and don’t need per-user tracking or quotas, the math is obvious.
Deployment reality check
This is where CUPS earns its reputation as “not beginner-friendly.”
What you need:
- Linux (any distribution — CUPS is available in every major package manager)
- Or macOS (CUPS is already running — you just need to enable sharing)
- For a network print server: a dedicated machine (Raspberry Pi, mini PC, or small VPS on your LAN)
- Physical printer connected via USB or already on the network via Ethernet/WiFi
Installation:
Most Linux distributions ship with CUPS already installed. If not: apt install cups or dnf install cups. Start the service: systemctl enable --now cups. Done [README].
The configuration file (cupsd.conf):
This is where non-technical users get stuck. By default, CUPS only accepts connections from localhost — which is fine if you’re printing locally, useless if you’re running a server. To share printers on your LAN, you need to edit /etc/cups/cupsd.conf and change the Listen directive, then add your network to the allowed hosts [3]. The FunnelFiasco guide [3] from 2009 walks through exactly this and remains accurate — the configuration format hasn’t meaningfully changed.
Adding printers:
Modern IPP Everywhere printers mostly auto-configure. Open http://localhost:631/admin/, click “Add Printer,” and network printers usually appear. For USB printers, plug in and they’re detected. Legacy printers that need PPD files are more work — you need the right PPD, which may require installing an additional driver package [README].
What can go sideways:
- The web interface requires system-level authentication. If you’re running a headless server and forgot your admin password, recovery requires SSH access.
- Sharing to Windows clients used to require Samba for SMB/CIFS. Modern Windows can use IPP directly, but older Windows machines still expect SMB shares. This is a common source of confusion.
- The OpenPrinting and Apple CUPS repositories have diverged. If you Google “CUPS documentation” you may land on the Apple cups.org site, which is frozen at 2.3.x and hasn’t been updated since 2022 [website]. The OpenPrinting documentation at localhost:631 (once installed) or their GitHub is more current [README].
- CUPS 2.5.x (the OpenPrinting version) is currently in beta. If you want stability, the 2.4.x branch is the recommended production version [README].
- AirPrint autodiscovery requires Bonjour/mDNS broadcast. If your printer server is on a different subnet or VLAN than your clients, AirPrint won’t work without mDNS reflector configuration. This is an invisible gotcha for anyone with a slightly segmented home network.
Realistic time estimate: For a technical user setting up a print server with a single network printer: 30–60 minutes. For a USB printer that needs legacy PPD drivers: 1–3 hours depending on hardware support. For a non-technical user following a guide: plan for a full afternoon, with the possibility of giving up on the legacy driver.
Pros and Cons
Pros
- It’s the standard. Every printing technology that matters — AirPrint, IPP Everywhere, Bonjour printer discovery — runs on CUPS. There is no alternative that speaks the same protocols [README].
- Completely free. Apache 2.0 license. No commercial licensing, no feature gating, no per-seat costs [README].
- Ships everywhere. Already installed and running on macOS, Ubuntu, Fedora, Debian, and most other distributions. Zero-install for the common case.
- Converts legacy hardware into modern network printers. A USB-only printer from 2008 connected to a Raspberry Pi becomes an AirPrint printer that iPhones can discover automatically.
- Stable protocol foundation. The configuration format, IPP implementation, and core architecture have been stable for 15+ years [3]. You configure it once and it runs indefinitely.
- OpenPrinting is actively maintained. Canonical/Ubuntu engineers and the broader OpenPrinting community are still shipping updates, CVE patches, and modern protocol improvements (1,548 stars, active CI on GitHub) [README].
Cons
- Not beginner-friendly. The web UI looks like 2004 and the configuration file is required reading for any non-trivial setup [3]. There is no guided onboarding.
- Documentation is fragmented and partially stale. Apple’s cups.org site is frozen at 2022. OpenPrinting’s documentation is incomplete. You’ll frequently end up on StackExchange answers from 2012 that are still accurate, which is both impressive and concerning.
- Governance confusion. Two repos (
apple/cupsvsopenprinting/cups), one frozen, one beta. Non-obvious which one to use [README]. - No user-facing features. CUPS is plumbing. There’s no print portal, no user quota UI, no job history dashboard accessible to end users without admin credentials.
- AirPrint on non-trivial networks is fragile. Any network segmentation breaks mDNS discovery and requires additional configuration most guides don’t mention.
- Legacy PPD driver support is being deprecated. OpenPrinting’s stated direction is to move everything to Printer Applications and driverless IPP. If your printer depends on legacy PPD drivers, you’re on borrowed time [README].
- The web interface does not scale. Managing 50 printers through the localhost:631 web UI is painful. There’s no fleet management, no bulk operations, and no API for automation (despite “REST API” appearing in the features list of the merged profile — the actual REST API surface is minimal).
Who should use this / who shouldn’t
Use CUPS if:
- You have a physical printer to share on a LAN and don’t want to pay for print management software.
- You’re building a Raspberry Pi print server to give an old USB printer wireless/AirPrint capability.
- You’re a developer or sysadmin who needs to understand how printing actually works in a Linux/macOS environment.
- You’re running a small office (<20 people) with basic shared printing needs and no per-user accounting requirements.
- You’re replacing a Windows print server and want to eliminate Windows Server licensing costs.
Skip it (use a managed service) if:
- You need print accounting, per-user quotas, or billing — look at PaperCut or Printix.
- Your users are completely non-technical and you can’t support them through printer setup issues.
- You’re printing in a regulated environment that requires print audit logs — CUPS alone doesn’t provide these.
- You need a mobile printing portal (submit print jobs via browser) — CUPS doesn’t have this out of the box.
Skip the self-hosted setup (use cloud print services) if:
- Your team is fully remote and printing to local printers — CUPS only makes sense for LAN printing.
- You have Chromebooks or other managed devices that require Google Cloud Print or similar — though Google Cloud Print is dead, its successors typically bypass CUPS.
Alternatives worth considering
There aren’t many, which is telling:
- CUPS itself via your OS package manager — for most people, CUPS is already installed. The question is configuration, not installation.
- Windows Server Print Services — if you’re in an all-Windows environment. Works well within that ecosystem, expensive, requires Windows Server licensing.
- Printix ($8.99–$14.99/user/month) — cloud-managed print infrastructure. Good fleet management dashboard. Appropriate when you need central management without a dedicated sysadmin.
- PaperCut NG/MF — on-premise print management with user quotas, charging, job logging, and a real admin portal. More features than CUPS alone, but costs money and requires a Windows or Linux server to run it on.
- lpr/LPD (legacy) — the older printing system CUPS replaced in the 1990s. Still exists, still works on some systems, not worth starting a new deployment on.
- Printer Applications — OpenPrinting’s new model for printer drivers, built on top of CUPS rather than replacing it. This is the future of the CUPS ecosystem, not an alternative.
For home and small-office network printing, the realistic choice is CUPS on a Raspberry Pi or paying for Printix. The former is free and permanent; the latter requires no technical setup.
Bottom line
CUPS is infrastructure. It’s not exciting, it doesn’t have a slick dashboard, and the onboarding experience hasn’t improved meaningfully in a decade. But it is the printing layer that underpins macOS, iOS, and Linux, and there is genuinely nothing else that does what it does for free. If you have a printer to share on a network and $35 for a Raspberry Pi, CUPS gives you permanent, zero-subscription network printing with AirPrint support. The setup will take an afternoon and require reading a configuration file — that’s the trade. If that trade sounds reasonable, CUPS is the only answer worth considering.
The governance situation (Apple stepping back, OpenPrinting stepping in, two active repos) is worth monitoring if you’re making a long-term infrastructure bet, but the OpenPrinting project has Canonical backing and is the de facto upstream for Linux distributions. It’s not going anywhere.
Sources
- OpenPrinting CUPS README — GitHub repository,
openprinting/cups. https://github.com/openprinting/cups - Apple CUPS website — cups.org homepage and release history (frozen at 2.3.x as of 2022). https://www.cups.org/
- Ben Cotton, FunnelFiasco — “Setting up a print server” (Aug 14, 2009). Practical walkthrough of cupsd.conf configuration for a network print server. https://funnelfiasco.com/blog/2009/08/14/setting-up-a-print-server/
Features
Integrations & APIs
- REST API
Mobile & Desktop
- Mobile App
Category
Related Networking & VPN Tools
View all 99 →Caddy
71KA fast, extensible web server with automatic HTTPS — zero-config TLS certificates for every site, built-in reverse proxy, and a simple Caddyfile config format.
Traefik
62KCloud-native application proxy and ingress controller that auto-discovers services and handles TLS certificates, load balancing, and routing with zero manual configuration.
Pi-hole
56KNetwork-wide ad blocking DNS server that protects every device on your network without installing anything on individual devices.
Headscale
37KAn open source, self-hosted implementation of the Tailscale control server.
AdGuard Home
33KNetwork-wide software for blocking ads and tracking. Covers all your home devices with no client-side software needed.
Nginx Proxy Manager
32KExpose your services easily and securely. Manage Nginx proxy hosts with a simple, powerful interface and free SSL via Let's Encrypt.