PDFs

Compress a PDF Without Losing Quality on Mac

By the Smol team10 min read

You can compress a PDF on Mac with genuinely zero quality loss. On four test files that route saved between 0.1% and 13.8%, and the biggest saving landed on the smallest file. Every tool promising dramatic reductions “without losing quality” is doing something lossy and choosing not to say so.

That is not an accusation, it is a definition problem. There are three different things people mean by quality in a PDF, and two of them survive aggressive compression perfectly well. This page separates the routes that touch no pixels from the routes that do, measures both, and takes a position on which one you should actually use.

What can “without losing quality” even mean for a PDF?

A PDF is not one kind of data. It holds drawing instructions, font programs, vector paths, and encoded image streams, each with its own failure mode. So the phrase splits three ways:

1. Bit-identical rendering. Every pixel the renderer produces is unchanged. Only structural work qualifies: repacking streams, removing unused objects, deduplicating resources. Nothing that touches image data can make this claim.

2. Text and vectors untouched. Type stays razor sharp at any zoom, searchable, selectable, copyable. Photos may be resampled. This is what nearly every “lossless” PDF compressor actually delivers, and for most documents it is indistinguishable from the first definition.

3. Looks the same to a person. Visually transparent at the size the document is actually viewed. This is a perceptual claim, not a technical one, and it is the only definition under which a 90% reduction is honest.

Most pages ranking for this query slide from definition 1 to definition 3 inside two paragraphs. Knowing which one a tool means is the difference between a print file you can still send to a printer and one you cannot.

Which PDF compression routes are genuinely lossless?

Four operations change nothing a renderer will ever draw. They are worth knowing because they are the only honest answer to definition 1.

Stream recompression. Every content stream, font program, and non-image object is Flate-compressed (the same algorithm as zip), usually at a middling level to save export time. Recompressing at maximum effort costs nothing but CPU.

Object streams. PDF 1.5 introduced a format that packs many small objects into one compressed stream instead of writing each one uncompressed. Documents with thousands of tiny objects gain most here.

Removing unused and duplicate objects. Orphaned resources, identical images stored twice instead of shared, leftover incremental-update generations. A PDF opened and saved a dozen times accumulates all three.

Font subsetting. If a document embeds a complete font family but only uses a few dozen glyphs from it, the unused outlines are dead weight. Most modern producers subset automatically, which you can see in the six-letter tag on font names: run pdffonts yourfile.pdf and a name like AAAAAA+Georgia means it is already subset.

A fifth candidate gets mentioned constantly and does not belong on the list. Dropping XMP metadata, document info, and embedded page thumbnails is a genuine privacy operation and a genuine hygiene operation. It is not a compression operation. We ran Smol’s metadata removal on a 2,018,917 byte test PDF and got back 2,019,090 bytes: 173 bytes larger. Do it because you do not want your name and software fingerprint in the file, not because you want a smaller one.

How much does genuinely lossless PDF compression actually save?

Four test PDFs, each through a purely lossless repack with qpdf 12.3.2: object streams generated, Flate recompressed at level 9, linearized. No image decoded, no glyph touched.

Test fileBeforeAfter lossless repackSaved
Text only, 10 pp, no images84,814 B73,106 B13.8%
Vector charts, 12 pp, no photos191,818 B132,887 B30.7%
Text + eight 300 PPI photos, 16 pp2,018,917 B2,008,631 B0.5%
Scanned pages, 16 pp9,422,349 B9,415,553 B0.1%
qpdf 12.3.2, --object-streams=generate --recompress-flate --compression-level=9 --linearize. Measured 2026-09-26, Apple M2 Pro, macOS 27.0.

Read that table upside down and you have the whole argument. Lossless compression works best on the files that are already small, and does effectively nothing to the files that are actually a problem. The 9.4 MB scan, the exact file somebody is trying to email right now, gave up 6,796 bytes.

The reason is structural. In the scanned PDF, 99.8% of the bytes sit inside image streams. In the text-plus-photos PDF, 95.9%. Lossless tools may only touch the other 0.2% and 4.1%. No implementation escapes that ceiling, because the pixels are the file.

Will font subsetting shrink my PDF?

Almost never, and it is worth knowing why, because font subsetting is the single most over-promised item on every “lossless PDF optimization” checklist.

Test fileTotal sizeEmbedded font programsImage streams
Text only, 10 pp84,814 B25,410 B (30.0%)0 B (0%)
Vector charts, 12 pp191,818 B25,815 B (13.5%)0 B (0%)
Text + photos, 16 pp2,018,917 B27,808 B (1.4%)1,936,615 B (95.9%)
Scanned pages, 16 pp9,422,349 B0 B (0%)9,399,984 B (99.8%)
Stream lengths by object type, computed with pikepdf 10.3.0.

Two subset weights of Georgia cost about 26 KB and that number barely moves as the document grows. In the 16-page report, perfect font optimization could theoretically recover 27.8 KB out of 2 MB. Meanwhile one quality level on the photos recovered 1.66 MB.

Font subsetting matters in one situation: a document embedding full CJK families or a large variable font, where a single face runs to megabytes. You will know, because pdffonts shows names without the six-letter subset prefix.

So what should you actually do?

Use controlled lossy compression aimed only at the images. That is the honest version of “without losing quality,” and it satisfies definition 2 completely: text stays vector, searchable, and sharp at any zoom.

Here is the same test document, 16 pages of text with eight photos, at each of Smol’s five PDF quality levels, alongside the extracted character count so you can see the text layer surviving.

LevelSizeSavedPhoto resolutionExtractable text
Source2,018,917 Bn/a300 PPI14,618 chars
Original1,331,918 B34.0%300 PPI, unchanged14,618 chars
Large839,598 B58.4%300 PPI, unchanged14,618 chars
Medium355,073 B82.4%200 PPI14,618 chars
Small214,792 B89.4%150 PPI14,618 chars
Tiny120,167 B94.0%100 PPI14,618 chars

The Original and Large rows are the interesting ones, and they are where most articles get sloppy. Neither resampled the photos: both left them at 1,800 × 1,200 pixels, exactly 300 PPI. Yet Original still cut a third off the file and Large cut well over half. That saving came from re-encoding the existing JPEGs at a lower quality factor. The first photo went from 390 KB to 245 KB at Original and 147 KB at Large, at identical pixel dimensions.

Which means a level named Original is not lossless, and you should not treat it as one. It preserves resolution, not fidelity. If you need a bit-identical archive master, keep the original file and compress a copy.

One more thing to check before trusting a preset with print work: the compressed output tagged its images as plain DeviceRGB where the source carried an ICC profile. Irrelevant for a report. Not irrelevant for a color-managed print job, which is why the answer to “which preset for print” is Large with a proof.

Which quality claims should you distrust?

Three patterns show up constantly, and all three are detectable in under a minute.

“Lossless compression, up to 80% smaller.” Both halves cannot be true for an image-heavy PDF. Our lossless ceiling on those was 0.5%. A page claiming both is describing image resampling under another name.

A single button with no settings. If there is no resolution control and no quality control, the tool has hard-coded a guess about your document. macOS’s own Reduce File Size filter does this: you can read its parameters yourself with plutil -p "/System/Library/Filters/Reduce File Size.qfilter", which prints a fixed JPEG quality of 0.7 and a fixed 144 DPI target. Sometimes that guess is right. On a text-only PDF in our test it produced a file 258% larger than the input. The full autopsy is in why Preview’s Reduce File Size ruins PDFs.

No before-and-after you can verify. Any tool should report the output size. You can always check the rest yourself: run pdfimages -list on the input and the output, then compare the x-ppi column. If the numbers dropped, the tool resampled, whatever its marketing said.

How to compress a PDF without losing quality on a Mac, step by step

Start by finding out what you are dealing with, because that determines whether there is anything to win.

1. Check whether the PDF is images or not. Select a word in Preview. If it highlights, the text is vector and safe. Then run pdfimages -list yourfile.pdf and look at the x-ppi column. Numbers above 200 mean there is real headroom. An empty list means no compressor will help much.

2. Pick a level by destination, not by ambition. Large for print, Medium for an everyday copy, Small for screen reading and email. The reasoning, and what each resolution does to body text on a scan, is worked through in reduce PDF file size on Mac without wrecking the text.

3. Verify the text layer survived. Open the output, press ⌘F, search a word. Or compare pdftotext before.pdf - | wc -c against the same command on the output.

In Smol that is a drag, a click, and a number. Files are processed on your Mac rather than uploaded, which for a 9 MB scan is simply faster: twenty copies of our 2 MB test document finished in 2.83 seconds on an M2 Pro. A step-by-step walkthrough lives in our help article on reducing PDF file size, and the comparison against every other method on macOS is in how to compress a PDF on Mac.

Local processing only becomes the headline when the document is an NDA, a signed contract, or a medical record. The honest framing is not that web tools are careless. It is that uploading is a decision you cannot unmake. Smol is a one-time $29 with no upload step, no file cap, and no account.

When Smol is the wrong tool for this

You need definition 1, strictly. For a byte-for-byte reproducible render under a legal or archival requirement, do not use any preset, Original included. Use qpdf --object-streams=generate --recompress-flate, accept the 0.1% to 13.8% you get, and move on. Free, and the right answer.

Your PDF has no images. A text-only or vector-only PDF gives up a fixed structural saving and nothing more, and every quality level returns an identical file. Paying for software to do that makes no sense.

You need PDF/A or PDF/X conformance. Compression presets are not standards-aware. Use Acrobat’s preflight or Ghostscript with the appropriate output intent, then validate. Smol will not check conformance and will not warn you.

You want one small file compressed once. Preview is free and already open. On our image-heavy test file it went from 2.02 MB to 827 KB with the text layer intact. If that is small enough, stop there.

You are on Windows or Linux. Smol is macOS only. Ghostscript with -dPDFSETTINGS=/ebook does broadly the same job for free on any platform.

How these numbers were measured

Measured 2026-09-26 on an Apple M2 Pro running macOS 27.0 (build 26A428), on four PDFs built for the article so the results can be reproduced.

Text only is 10 US Letter pages of 11 pt Georgia body text. Vector charts is 12 pages of inline SVG bar and line charts. Both were printed to PDF by headless Chrome 153 with no raster data. Text + photos is 16 pages of the same body text with eight photographs placed 6 inches wide from 1,800 pixel sources, putting them at exactly 300 PPI. Scanned pages is that same document rendered to 300 DPI JPEGs and reassembled.

Sizes are raw byte counts from stat. Lossless results came from qpdf 12.3.2. Per-object stream lengths were summed with pikepdf 10.3.0, counting anything carrying /Length1 or a font subtype as a font program and anything with /Subtype /Image as an image. Image dimensions and effective PPI came from poppler’s pdfimages -list, and text layer survival from pdftotext character counts before and after.

Structural details about stream filters, object streams, and font subsetting follow ISO 32000-1, which Adobe publishes for free.

Frequently asked questions

Can you compress a PDF without losing any quality at all?

Yes, but the savings are small. Purely lossless operations like stream recompression, object streams, and removing unused objects saved 13.8% on a text-only test PDF, 30.7% on a vector chart deck, 0.5% on a document full of 300 PPI photos, and 0.1% on a scanned file. The bigger the PDF, the less lossless compression can do, because the bytes are almost all image data.

Does compressing a PDF ruin the text?

Not if the text is real text rather than a scan. Glyphs are drawn from an embedded font program and are re-rasterized at whatever resolution you view or print at, so they are unaffected by image compression. We extracted 14,618 characters from a test document and got the same 14,618 back at every quality level, including the most aggressive one.

Is the Original preset in Smol lossless?

No. It preserves image resolution but still re-encodes the embedded JPEGs at a lower quality factor. In our test the photos stayed at 1,800 by 1,200 pixels and 300 PPI while the first one dropped from 390 KB to 245 KB, and the whole file shrank 34%. If you need a bit-identical master, keep the source file and compress a copy.

Will removing metadata make my PDF smaller?

Practically never. Running metadata removal on a 2,018,917 byte test PDF returned 2,019,090 bytes, which is 173 bytes larger. Stripping document info and XMP is a privacy and hygiene step worth doing before you share a file, because it carries author names, software fingerprints, and timestamps. It is not a size optimization.

How can I check whether a PDF compressor damaged my images?

Run pdfimages -list on the file before and after, then compare the x-ppi column. If the numbers dropped, the tool resampled the images regardless of what its marketing claimed. Compare the byte sizes in the same listing too: unchanged dimensions with much smaller sizes means it re-encoded the JPEGs at lower quality instead.

What is the best PDF compression setting if quality matters?

Large, which in our test kept photos at their original 300 PPI while still cutting the file 58.4%. Medium at 200 PPI is a reasonable everyday default for documents that will only ever be read on screen. Reserve the most aggressive setting for email deadlines, and never use it on a scan, where it took OCR accuracy from 100% down to 3.8%.

Keep reading