A 40 MB scan won't attach to an email, a presentation won't upload to a form, a contract with embedded photos weighs as much as a photo archive. Most of the time what keeps such a PDF from slimming down is the images inside it โ scans and photos at full resolution. The "Compress" tool in pdfredX repacks pages at the quality you choose, right in the browser: you move one slider, see the resulting size and download a lighter file. Nothing is uploaded to a server.
Step 01. Load the PDF
Open pdfredx.com and drag a PDF into the drop area โ or pick it through your file browser. The file is read locally: PDF.js renders the pages inside the tab, not a single byte goes to a remote machine. A document that's already loaded can be sent straight to compression.
Step 02. Choose the compression level
Open the "Compress" panel โ there are three settings here:
- Quality slider. Sets the JPEG quality for the images inside the pages. 90โ95% is a barely noticeable loss with the file several times smaller; 60โ70% is maximum savings for drafts and attachments where only the text matters. The value is shown right on the slider as a percentage.
- โ Limit to 1500 px. Reduces page resolution to 1500 px on the long side. That's plenty for on-screen reading and A4 printing, and the "weight" drops the most here โ it is usually the excess resolution of scans that bloats a file.
- โ Clean metadata. Strips the document's service information so nothing extra is carried into the output file.
Balance it to the task: for sending to an agency โ compress harder; for archiving an important document โ keep the quality higher.
Step 03. Download the compressed PDF
Press "Compress PDF". The app walks the pages, repacks each one at the chosen quality and assembles a new file through jsPDF. After assembly you'll see the result โ by what percentage the size shrank and how many megabytes it became. The finished document downloads straight from the browser. Free, no sign-up, no server queue.
How it works under the hood
Compression runs along a raster path. Each page is already an image (PDF.js drew it to a Canvas on load). The compressImageUrl function draws that image onto a new canvas of the required size and re-exports it to JPEG at the chosen quality:
const scale = maxPx ? Math.min(1, maxPx / Math.max(origW, origH)) : 1; // downscale to 1500px
c.width = Math.round(origW * scale);
c.height = Math.round(origH * scale);
ctx.drawImage(img, 0, 0, c.width, c.height);
c.toDataURL('image/jpeg', quality); // repack at qualityThen jsPDF assembles the pages into a new document โ each one is fit into an A4 sheet with proportions preserved and centered. The output size is compared with the original estimate, and that gives the savings percentage.
Known limitations
Lossy compression. Lowering JPEG quality and resolution are irreversible operations. Small text on scans may soften under heavy compression. If the document matters, start at 90% and lower it while watching the result.
The text layer becomes raster. The pipeline works with page images, so in the compressed file the text is part of the picture โ it cannot be selected or copied. For documents that need live text, keep that in mind.
Maximum benefit is on "heavy" scans. A file made mostly of photos and scans compresses a lot. A document with little graphics to begin with won't shrink noticeably โ there is almost nothing in it to compress.
Need the opposite โ combine several documents into one? That is the Merge PDF tool.
Try it right now โ pdfredx.com, no registration, your files stay with you.
