Guide

How to Compress a PDF on Mac (5 Methods, Tested)

By the Smol team14 min read

The fastest way to compress a PDF on Mac is Preview: open the file, choose File → Export, set Quartz Filter to Reduce File Size, and save. On our 19.6 MB test brochure that produced a 5.65 MB file in 3.4 seconds, for free, with nothing installed.

It is also the worst of the five methods we measured on two of our three test files, and on one of them it made the PDF twice as large as the original. So this guide does the thing the existing results for this query do not do: it runs all five routes over the same files on the same machine and reports the bytes.

We build Smol, a Mac compression app, so one of the five methods is ours. The numbers below are the numbers, including the two cases where a free tool beats us outright.

Which method should you actually use?

Start here. The right answer depends almost entirely on what is inside the PDF and how many of them you have.

Your situationUse thisWhy
One image-heavy PDF, needs to go out nowPreview, Reduce File SizeFree, built in, 3 seconds. Good enough for a single email.
A text-only PDF that is already smallGhostscript, or leave it alonePreview grew ours by 111.8%. Ghostscript shrank it by 51.9%.
A scan you still need to read at print sizeCustom Quartz filter or Smol largeYou need a resolution dial. Preview hard-codes 144 DPI.
More than about five filesA native app with batchEvery web tool and Preview export is one file at a time.
A contract, medical record, or NDA documentAnything localUploading it is the whole problem, not the file size.
You want a specific target sizeSmol presets, or Ghostscript settingsBoth give you a ladder to climb. Preview gives you one rung.
You are on a borrowed computerAn online compressorNothing to install. Accept the upload.

Notice what is missing from that table: a single winner. PDF compression is not one problem. A 40 MB scan and a 117 KB contract fail for completely different reasons, and the tool that fixes one can actively damage the other.

What was tested, on what machine, with which files?

Every number in this article was measured on 26 September 2026 on a MacBook Pro (Mac14,9) with an Apple M2 Pro, 10 cores, 16 GB RAM, running macOS 27.0 (build 26A428). Sizes are raw bytes from stat. Timings are wall clock, single run, warm cache. Image resolutions come from pdfimages -list (poppler). Text was checked with pdftotext after every pass.

Three files, chosen because they break in different ways:

FileWhat it isPagesSize
brochure.pdfDesign export. 16 full-page photographs (2,040×2,447 up to 7,330×4,889) placed at 279–1,004 PPI, plus body text in embedded fonts.1619,572,307 B (19.6 MB)
scan.pdfA scanned agreement. Every page is one 300 PPI color JPEG (2,572×3,318) with scanner noise. No text layer at all.1237,155,203 B (37.2 MB)
contract.pdfA text-only agreement with subsetted embedded fonts. Zero images. The kind of PDF a word processor produces.21116,995 B (117 KB)

One honest caveat on methodology. Preview has no scripting interface for its export sheet, so its compression was applied by handing the exact same filter file Preview uses, /System/Library/Filters/Reduce File Size.qfilter, to PDFKit’s own write(to:withOptions:) with the QuartzFilter key. That is the same code path Preview itself runs. To confirm, the same job was also run through a raw CGPDFContext with the filter applied. The two routes agreed to within 0.04% on the two image-heavy files and 1.2% on the text-only one, so the numbers below are not an artifact of which API called the filter.

Method 1: what does Preview’s Reduce File Size actually do?

Apple documents the route in the Preview User Guide: File → Export, then pick Reduce File Size from the Quartz Filter menu. What Apple does not document is what that filter contains. It is a plist on your disk, and you can read it:

cat "/System/Library/Filters/Reduce File Size.qfilter"

The operative values, unchanged on macOS 27.0:

KeyValueEffect
ImageCompressionImageJPEGCompressEvery image is re-encoded as JPEG.
Compression Quality0.70Fixed JPEG quality. Not exposed anywhere in the UI.
ImageResolution144Every image is resampled to 144 DPI of its placed size.
ImageSizeMax2400Hard pixel ceiling per image, whatever the page size.
ImageScaleInterpolatetrueSmooths the downsample instead of dropping pixels.

That is the entire mechanism. There is no adaptive logic, no analysis of what the document is for, and no setting you can move. On the brochure, every single one of the 16 photographs came out at exactly 144 PPI. A 6,000×4,000 photograph became 1,051×701, which is 3.1% of the original pixels.

Preview’s export sheet does carry three separate checkboxes next to the filter menu: Create Linearized PDF, Optimize images for screen, and Save images as JPEG. They are not the compression control people are looking for. The last one only helps when a PDF stores its images in a non-JPEG encoding to begin with, which is not the case for most design exports or scans.

We wrote a whole piece on the failure modes, because this one method generates more complaints than the other four combined: why Preview’s Reduce File Size ruins PDFs.

Method 2: can you get a quality dial out of Preview?

Yes, and almost nobody knows it. Quartz filters are just property lists. Copy Apple’s one into ~/Library/Filters/, change two numbers, and it appears in Preview’s Quartz Filter menu the next time you open the export sheet.

mkdir -p ~/Library/Filters
cp "/System/Library/Filters/Reduce File Size.qfilter" \
   ~/Library/Filters/"Reduce File Size (Print Safe).qfilter"
open -e ~/Library/Filters/"Reduce File Size (Print Safe).qfilter"

Edit ImageResolution, Compression Quality and ImageSizeMax, and change the Name string so the menu entry is distinguishable. If you would rather not touch XML, ColorSync Utility (Applications › Utilities) ships a Filters editor that writes the same files for you.

Two filters were built for this test and run over all three files:

FilterSettingsbrochure.pdfscan.pdf
Print Safe225 DPI, quality 0.90, max 4,000 px16.5 MB (−15.8%)25.2 MB (−32.1%)
Aggressive96 DPI, quality 0.45, max 1,200 px1.54 MB (−92.1%)3.59 MB (−90.3%)
Apple’s stock filter144 DPI, quality 0.70, max 2,400 px5.65 MB (−71.1%)9.43 MB (−74.6%)

That spread, 1.54 MB to 16.5 MB from the same source file, is the range of control Apple ships and then hides behind a single menu item. If your workflow is always the same kind of document, writing one filter once is the best twenty minutes you can spend on this problem, and it costs nothing.

The limits are real, though. A custom filter still cannot help a text-only PDF, still re-encodes every image as JPEG whether or not that suits the content, and still has to be applied one file at a time through Preview’s export sheet.

Method 3: how good is Ghostscript from the Terminal?

Ghostscript is the engine most PDF tools quietly sit on top of. Install it with brew install ghostscript and you get five presets behind one flag. Version 10.07.0 was used here.

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.7 \
   -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH \
   -sOutputFile=out.pdf in.pdf

Swap /ebook for /screen (72 DPI), /printer (300 DPI), or /prepress (300 DPI, color-preserving). Results across the corpus:

Settingbrochure.pdfscan.pdfcontract.pdf
/screen1.30 MB (−93.4%)1.38 MB (−96.3%)56 KB (−51.7%)
/ebook4.12 MB (−79.0%)3.80 MB (−89.8%)56 KB (−51.9%)
/printer13.2 MB (−32.8%)37.1 MB (−0.0%)60 KB (−49.0%)
/prepress17.0 MB (−13.0%)37.1 MB (−0.0%)56 KB (−51.9%)

Two things jump out. First, Ghostscript is the only method here that helps a text-only PDF, and it helps a lot: 116,995 bytes down to 56,321 on /ebook, with all 50,435 extracted characters intact. Nothing else in this test came close on that file.

Second, /printer and /prepress did essentially nothing to the scan. Those presets downsample images above 300 DPI, and the scan was already at exactly 300. A 37 MB file went in, a 37 MB file came out, and the command reported success. That is the kind of silent no-op that sends people looking for a different tool.

The cost is speed. Ghostscript took 52.8 seconds on the brochure at /screen and 60.4 seconds at /ebook, against 3.4 seconds for the Quartz filter on the same file and hardware. A re-run confirmed it at 55.6 seconds, so it was not a cold cache. The brochure’s ICC-tagged images are the reason, and it is not unusual: color-managed design exports are exactly the files Ghostscript is slowest on.

It is also worth knowing that Ghostscript occasionally makes things worse in a specific way. At /screen, several images in the brochure came back Flate-encoded rather than JPEG, and one 525×788 page image weighed 393 KB on its own. Ghostscript is a superb, free, scriptable tool. It is not a tool that protects you from itself.

Method 4: should you just use an online PDF compressor?

Sometimes, honestly, yes. If you are on someone else’s computer with a 4 MB conference agenda and no admin rights, open Smallpdf or iLovePDF, drag, download, move on. That is a real use case and pretending otherwise would be silly.

We did not measure the web tools. Testing them properly means uploading our files to third-party infrastructure, which is the exact behavior this article recommends against, and the output would not have been reproducible for you anyway since the services change their pipelines without notice. So take the rest of this section as description, not measurement.

What is verifiable is the commercial shape. iLovePDF’s pricing page lists the free tier’s Compress PDF allowance as 2, with per-tool file size ceilings running from 15 MB to 400 MB, and Premium at $4/month billed annually. Every one of these services is metered somewhere, because their costs scale with the files you send them. Yours do not.

Three costs that do not show up on the pricing page:

  • The document leaves your machine. For a signed contract, a medical record, an unreleased deck, or anything under NDA, that is not a privacy preference. It is often a contractual problem.
  • The round trip. Upload, queue, download, repeat, at whatever your connection manages upstream. Residential broadband uploads at a fraction of its download speed, and our scan test file is 37 MB.
  • You are still choosing from a short list. A web compressor that offers a low, recommended and high toggle is in the same bucket as Preview, not ahead of it. Check what control a service actually exposes before assuming it beats the built-in.

Method 5: what does a native Mac app do that the others don’t?

This is our tool, so read it with that in mind. Smol compresses PDFs locally with five presets: tiny, small, medium, large, original. Those presets are the direct answer to “Preview gives me one button with no control,” and they are the reason it is in this test at all.

Running pdfimages -list on every output tells you exactly what the presets do: each one caps the longest edge of every embedded image at a fixed pixel count.

PresetMax long edgebrochure.pdfscan.pdf
tiny600 px222 KB (−98.9%)239 KB (−99.4%)
small900 px515 KB (−97.4%)850 KB (−97.7%)
medium1,200 px943 KB (−95.2%)1.62 MB (−95.6%)
large1,800 px2.36 MB (−88.0%)3.69 MB (−90.1%)
original2,400 px6.29 MB (−67.9%)9.19 MB (−75.3%)

What each preset does to DPI, font subsets and structure is broken down further in what the PDF compression presets actually do.

A pixel ceiling behaves differently from a DPI target, and the difference matters. Because the cap follows the image rather than the page, the same preset gives you 164 PPI on a brochure photo placed 7.3 inches wide and 108 PPI on a full-bleed scan page. One consequence worth stating plainly: original is the lightest preset, not a no-op. It still resamples anything above 2,400 px.

Speed, same machine: the 19.6 MB, 16-page brochure took 2.0 seconds at medium. All three test files together, 56.8 MB, took 3.6 seconds. Compare that to Ghostscript’s 52.8 seconds on the brochure alone.

The step-by-step version of this, with screenshots, lives in our help article on reducing PDF file size. Smol is $29 once, which is worth holding next to Acrobat Pro at US$239.88/year if all you need is the compression.

So which method actually won?

Here is every method against the image-heavy brochure, sorted by output size. Resolution is the effective PPI of the embedded photographs after the pass, which is the honest proxy for quality here.

MethodOutputChangeImage PPITime
Smol, tiny222 KB−98.9%55–82not timed
Smol, small515 KB−97.4%82–123not timed
Smol, medium943 KB−95.2%110–1642.0 s
Ghostscript /screen1.30 MB−93.4%7252.8 s
Custom Quartz, 96 DPI1.54 MB−92.1%962.6 s
Smol, large2.36 MB−88.0%164–247not timed
Ghostscript /ebook4.12 MB−79.0%147–15060.4 s
Preview, Reduce File Size5.65 MB−71.1%1443.4 s
Smol, original6.29 MB−67.9%219–329not timed
Ghostscript /printer13.2 MB−32.8%279–41513.3 s
Custom Quartz, 225 DPI16.5 MB−15.8%2253.9 s
Ghostscript /prepress17.0 MB−13.0%279–41511.5 s

Source: 19,572,307 bytes, 16 pages, images at 279–1,004 PPI. Text survived every single pass. The only difference pdftotext found across all twelve outputs was that the Quartz route emits the fi ligature as one character instead of two.

The ranking is not the interesting part. The interesting part is that the useful range (roughly 500 KB to 4 MB, which is where an emailable, screen-legible brochure lives) contains five different settings from three different tools, and Preview’s single button lands outside it on the large side.

Why did Preview make a text-only PDF twice as big?

This is the result that should change how you think about the problem. The 21-page, 116,995-byte text-only contract came out of Preview’s Reduce File Size at 247,782 bytes. That is 111.8% larger than the file it started from.

MethodOutputChange
Preview, Reduce File Size247,782 B+111.8%
Any custom Quartz filter247,782 B+111.8%
Smol, any preset74,731 B−36.1%
Ghostscript /printer59,654 B−49.0%
Ghostscript /screen56,504 B−51.7%
Ghostscript /prepress56,312 B−51.9%
Ghostscript /ebook56,321 B−51.9%

The cause is structural, not a bug. A Quartz filter cannot compress text, because text in a PDF is not pixels. What it can do is force the whole document through Quartz’s PDF writer, and that writer produces far more verbose page instructions than the original producer did. Decompressed, the source file’s drawing instructions total 1,019,282 bytes. After the Quartz pass they total 2,658,014 bytes, for identical output on the page.

All three Quartz filters, including the two custom ones, produced byte-identical 247,782-byte files. The image settings were irrelevant because there were no images. That is the tell: on a text PDF, the filter is not compressing anything, it is only rewriting.

Ghostscript cuts that file in half, which is the correct answer, and it does it in 0.18 seconds. If your PDF is a document rather than a picture book, this is the method. The full mechanism is picked apart here.

What changes when you have fifty PDFs instead of one?

Everything. Preview’s export sheet is one file, one save dialog, one Quartz Filter selection. Online compressors meter their free tiers precisely so that fifty files is not free, which is how the business works. Ghostscript batches fine in a for loop, but at roughly a minute per image-heavy file that arithmetic gets grim quickly.

For a reference point on the local-app side: twenty copies of the 19.6 MB brochure, 391 MB in total, compressed at the small preset in 21.0 seconds on the M2 Pro, each one landing at 515,455 bytes. That is the same 2.0-seconds-per-file rate as the single run, which is the point of a batch queue.

If your PDFs arrive on a schedule rather than in a pile, the Finder Quick Action and watched folders both skip the app window entirely: drop a file in a folder, get a compressed file back. That is a better fit for repeat work than any drag-and-drop loop, and it is covered properly in batch compressing PDFs on Mac.

One more route worth knowing if you live in a terminal: Smol ships an MCP server, so an AI coding agent can drive it directly. As of Smol 1.0.35 that means Claude Code, Codex, and Google Antigravity, each a one-click setup in the app’s AI access panel. In practice you say “compress every PDF in docs/ to the small preset and tell me the total savings,” and the agent resolves the paths, runs the job, and reports the byte counts back, without you writing a shell loop or leaving the editor. Details on the MCP page.

How small does the PDF actually need to be?

Pick the target before you pick the tool, because “smaller” is not a goal and over-compressing a document you then have to re-export is worse than doing nothing.

  • Email. Gmail caps personal-account sending at 25 MB and converts anything larger to a Drive link. Aim well under it, because attachments get base64-encoded in transit and grow on the way. More on that in getting a PDF under the email limit.
  • Upload portals. Visa applications, court filings and job boards routinely cap far below any email limit, and most of them only tell you after the upload fails. Find the stated limit first, then pick the preset.
  • Screen reading. This is a judgement call, not a threshold. Our scan came out at 54, 81, 108, 163 and 217 PPI across the five presets. Open the candidate at 100% zoom and read the smallest type on the busiest page before you send it. That takes ten seconds and it is the only test that matters.
  • Print. 300 PPI at final size is the long-standing convention, and nothing in this test beats simply not downsampling if the destination is a press.

For the scanned agreement specifically, note that it had no text layer at all. Compression cannot add one, and no setting in any of these tools will make a 54 PPI scan searchable. If you need the text, run OCR first, then compress.

The same discipline applies to images destined for a web page, where the constraint is load time rather than an attachment limit. That is a different calculation, covered in compressing images for the web and every method for compressing images on Mac.

When is Smol the wrong tool for this?

Four cases from this test where you should use something else, and we would rather say so than have you find out after paying.

Your PDF is text-only. Ghostscript beat us by a wide margin on the contract: 56,321 bytes against our 74,731. Our presets work on embedded images, and a document without images gives them nothing to do. If your PDFs are word-processor exports, install Ghostscript and write a one-line function.

You need it once, and it is one file. Preview turned the brochure into an emailable 5.65 MB file in 3.4 seconds without anyone spending $29. That is a perfectly good outcome. If you compress a PDF twice a year, stop reading and use Preview.

You are not on a Mac, or not on your own Mac. Smol is macOS only, on Apple Silicon and Intel. On Windows, on Linux, or on a machine where you cannot install software, an online compressor is the answer and the trade-off is the upload.

You need editing, OCR, redaction, or form filling. We compress and convert. We do not edit PDFs. That is Acrobat’s territory, or one of the cheaper Mac PDF editors, and no amount of compression presets substitutes for it.

Where we do think we earn the money: more than a handful of files, documents that must not leave the machine, and wanting a ladder of quality settings rather than one button. That is the shape of the problem for most people who search for this in the first place.

Frequently asked questions

How do I compress a PDF on Mac for free?

Open the PDF in Preview, choose File > Export, set the Quartz Filter menu to Reduce File Size, and save. It is built into macOS and needs nothing installed. On our 19.6 MB, 16-page test brochure it produced a 5.65 MB file in 3.4 seconds. For text-only PDFs use Ghostscript instead, since the Preview filter can make those files larger.

Why did my PDF get bigger after using Preview to compress it?

Because Preview applies a Quartz filter that only compresses images, and it rewrites the whole document through the Quartz PDF writer on the way. On a text-only PDF there are no images to shrink, so you get only the rewrite. Our 21-page, 116,995-byte contract came out at 247,782 bytes, an increase of 111.8%.

Can you change the compression level in Preview on Mac?

Not in Preview itself, but you can replace the filter it uses. Copy /System/Library/Filters/Reduce File Size.qfilter into ~/Library/Filters/, edit ImageResolution, Compression Quality and ImageSizeMax, and your version appears in the Quartz Filter menu. Apple stock is 144 DPI at quality 0.70 with a 2,400 pixel ceiling.

What is the best PDF compression setting for email?

Gmail caps personal-account attachments at 25 MB, and most upload portals are far stricter at 2 to 5 MB. A preset that lands embedded images around 110 to 150 PPI of their placed size usually clears both while staying comfortable to read. In our test that meant Smol medium, or Ghostscript /ebook.

Does compressing a PDF ruin the text?

No. Text and vector art in a PDF are instructions, not pixels, so image compression settings never touch them. Across all twelve outputs in this test, pdftotext extracted the same content every time. Scanned PDFs are the exception: there the text is part of the image, so lowering resolution does make it harder to read.

Is Ghostscript better than a paid Mac PDF compressor?

For text-only PDFs, yes, and it is free. It halved our 117 KB contract where every other method either gained bytes or saved less. It is much slower on image-heavy files though, taking 52.8 seconds on a brochure that a native app finished in 2.0 seconds, and it has no batch UI, no Finder integration, and no guard against making individual images larger.

Keep reading