# PDF benchmark on public files (220 dpi) Feather 2.2 against macOS Preview's "Reduce File Size", on three openly available PDFs, so anyone can repeat it. | File | Source | Licence | Pages | Size | SHA-256 | |---|---|---|---:|---:|---| | `nasa-photo-one.pdf` | https://www.nasa.gov/wp-content/uploads/2023/03/sp-4553.pdf (NASA SP-4553, "NASA Photo One") | public domain (US government work) | 133 | 13,309,304 | `e0d2684878252f5174b7f3e7c54d164924bdea758b0e8638fa1433d651160e80` | | `jpl-cosmicart.pdf` | https://www.jpl.nasa.gov/_edu/pdfs/cosmicart_images.pdf (NASA/JPL) | NASA/JPL imagery | 52 | 33,191,984 | `17edb4cab47f2183eaeffae397d6a7e3f9fb7d6da7ce28aa021fd195f225a8d3` | | `cc-annual-report-2019.pdf` | https://wiki.creativecommons.org/images/2/20/CC_AnnualReport_2019.pdf | CC BY | 18 | 4,135,340 | `7d9b2c1106a46a84c97f060e461def739a2c8cfc572885a46690f2b3698e7e71` | None of the three carries CMYK images, so this run says nothing about CMYK. ## Method - Preview: opened in Preview, File › Export…, Quartz Filter "Reduce File Size" (macOS 27, Build 26A428); the exported files have the producer "Quartz PDFContext". - Feather: the app itself (drop the file, Lossy, default settings) gave byte-for-byte the same files as `feather-dev shrink`, engine as in Feather 2.2 (Build 806). - The scripted equivalent is `feather-dev shrink` (Lossy, the app's defaults: images at 220 ppi, JPEG quality 75), engine as in Feather 2.2 (Build 806). - Every page (or every 2nd / 4th page of the long ones) of the original and of the result is rendered at 220 dpi (`pdftool.swift render 220 `) and scored against the original page with `ssimulacra2` (higher is better; 80 is very good, 90 indistinguishable). The table gives the mean. - To repeat it: download the PDFs above (check the SHA-256), drop each on Feather for Mac in Lossy mode with the default settings (Settings › Documents: 220 ppi), render and score as above. `run.sh` and `score.py` do all of it for our development build. ## Result (2026-09-30) | PDF | Original | Preview | score | Feather | score | Feather's lowest page | |---|---:|---:|---:|---:|---:|---:| | NASA Photo One (34 of 133 pages) | 13.31 MB | 58.04 MB (+336 %) | 49.0 | 11.27 MB (−15 %) | 81.8 | 26.0 | | JPL Cosmic Art (26 of 52 pages) | 33.19 MB | 31.10 MB (−6 %) | 68.5 | 25.93 MB (−22 %) | 78.4 | 35.4 | | CC Annual Report 2019 (18 of 18) | 4.14 MB | 2.50 MB (−40 %) | 64.8 | 1.88 MB (−55 %) | 87.2 | 72.2 | ## Colour `pdfimages -list` on the original, Feather's output and Preview's export: Feather keeps the colour space of every image exactly as the original has it (NASA Photo One: 465 DeviceRGB, 39 gray; CC report: 13 DeviceRGB, 34 indexed, 35 gray; identical counts). Preview re-tags the colour images with an ICC profile (NASA Photo One: 504 images, CC report: 47; the JPL PDF already used ICC profiles and stays ICC). ## Limits - These PDFs are already compactly built, so the savings are modest next to the 90 %+ seen on uncompressed scans. - Feather's lowest pages (26.0 on NASA p. 13, 35.4 on JPL p. 15) are dark, noisy photographs; side by side they look the same, but SSIMULACRA 2 is strict on them. - Scores are at 220 dpi; a check at 300 dpi has not been done. - Preview's export is lower in quality because it re-encodes every image at a fixed low setting (a map on the CC report is visibly blocky), and on the NASA book it also makes the file larger. It is a different tool with a different goal (small for screen), so read the score next to the size. - **Not used:** calling Preview's filter from a script (PDFKit) does not reproduce the export from Preview itself, and Ghostscript `/ebook` shifted the page geometry of one file, so neither is compared here. Their numbers are not in the results file.