Existen varias interfaces de usuario para diferentes plataformas para configurar CUPS; cuenta también con una interfaz como aplicación Web.
Michael Sweet, dueño de Easy Software Products, comenzó a desarrollar CUPS en 1997.
Cups fue rápidamente adoptado como el sistema de impresión por defecto en varias distribuciones Linux.
empleó al desarrollador Michael Sweet y compró el código fuente de CUPS.
Normalmente no se lograba detectar el formato de archivo que estaba siendo enviado a la impresora, con lo que no se podía corregir y convertir automáticamente el flujo de datos.
Las aplicaciones pueden enviar peticiones a grupos de impresoras en una clase, permitiendo al planificador redirigir el trabajo a la primera impresora libre de esa clase.
[18][19] Lo hace utilizando tipos de MIME, siendo éste un estándar web para el formato de correo electrónico, pero muy útil para permitir que CUPS determine el tipo del archivo que está siendo procesado.
El demonio CUPS carga durante el inicio dos Bases de datos MIME: [20] El archivo mime.types utiliza la siguiente sintaxis: mimetype { [file-extensions] | [pattern-match] } Por ejemplo, para detectar un archivo HTML se utilizaría la siguiente entrada: text/html html htm \ La segunda línea une el contenido del archivo al tipo MIME especificado, determinando que el primero kilobyte de texto en el archivo contiene caracteres imprimibles y que éstos incluyen html.
[21] El archivo mime.convs utiliza la siguiente sintaxis: source destination cost program El campo source es el tipo MIME determinado al revisar el archivo mime.types, mientras que el campo destination lista el tipo de salida solicitada y determina qué aplicación debe ser utilizada.
El campo cost asiste en la selección del conjunto de filtros al convertir el archivo.
Si es convertido a PostScript, entonces es aplicado un filtro adicional llamado prefiltro, quien corre los datos PostScript a través de otro conversor PostScript para poder incluir opciones específicas de la impresora - por ejemplo rango de páginas a imprimirse, modo n-up y otras opciones específicas del periférico.
[23] Luego del pre-filtrado pueden ser enviados los datos directamente al backend de CUPS si es utilizada una impresora PostScript, o puede ser desviado a algún otro filtro como Foomatic de linuxprinting.org.
Hay varios backends disponibles para CUPS: Puertos paralelo, serial y USB, como también a través de la red mediante los protocolos IPP, JetDirect (AppSocket), Line Printer Daemon (LPD) y SMB.
CUPS 1.0 proveía una interfaz web sencilla para monitorear clases, trabajos e impresoras.
CUPS 1.4 actualiza la interfaz web con un diseño más atractivo e intuitivo, agregando nuevas funciones como la capacidad de limpiar cabezales.
Existen además otras aplicaciones (de terceras partes) para administrar las impresiones, por ejemplo GtkLP y su herramineta asociada GtkLPQ, o GtkPSproc.