Open DevTools.
Compress this PDF.
Watch nothing get sent anywhere.
Re-encodes the JPEG images embedded in a PDF at a smaller size and rebuilds the file — all inside this tab. Zero network requests after the page loads, same rule as every other tool here. Check the Network tab yourself.
Need to hit a specific number — under 100KB for a form upload, under 1MB for an email attachment limit? Pick a target size below and ClientPDF will automatically step image quality down in stages and retry until your file fits, instead of leaving you to guess and re-run manually.
Drop one PDF here or click to browse
One file at a time · stays on this device
Why trust this tool
No accounts
No signup, no email, no watermark. Use it and close the tab.
Honest results
Only JPEG images embedded in the PDF are re-encoded. If there's nothing to shrink, we'll tell you instead of faking a number. Why didn't my PDF shrink?
Splitting, rotating, reordering, or numbering a PDF? All live too.
Extract pages or split every page into its own file, fix pages scanned sideways, drag pages into a new order, or stamp page numbers onto every page — same rule: everything stays local. Leave your email and we'll let you know about a Pro batch mode.
Thanks — saved locally for now, we'll be in touch once signups are live.
What "compress" means here, specifically
This tool re-encodes JPEG-filtered images (the /DCTDecode streams) embedded in a PDF at a smaller size — starting at quality 0.65 with the longest edge capped at 1600px, via a canvas round-trip — then rebuilds the file around the smaller images. Images with transparency or a CMYK color space are skipped rather than guessed at, and if a re-encode wouldn't actually come out smaller, it's skipped too. The before/after size shown is always the real result of that pass, never a display trick.
Pick a target size (100 KB, 500 KB, 1 MB, 5 MB) instead of "no target" and the tool re-runs the same re-encode with quality and the max dimension stepped down in stages — 0.65 → 0.5 → 0.35, 1600px → 1200px → 900px — checking the real output size after every pass, until the file fits your target or hits a quality floor around 0.3. If it still can't reach your target without visibly damaging the images, it tells you that plainly and gives you the smallest version it could produce, rather than pretending it hit the number.
If your file comes back close to its original size, that almost always means one of two things: it's mostly text or vector content with nothing photographic to shrink, or its images are already PNG/lossless-encoded rather than JPEG. This walks through exactly which of those applies to your file, and what to try instead. And if the PDF was already so large it struggled to load before you even clicked Compress, here's why, since that's a browser-memory limit compress itself can't get around.