No PDF upload
All tools

Compress PDF online — no PDF upload

Reduce PDF file size in your browser, compare the actual result, and download it without sending the document to VeloTools.

🔒 No PDF upload 📄 Batch ×20 Compare actual file size

Drop your PDF files here

or click to browse · Up to 20 files at once

PDFMaximum 120 MB per file

Security: compression without server upload

VeloTools PDF Compressor never transmits document bytes over the network. After you select files, the browser reads them via the File API into an ArrayBuffer; PDF.js renders each page to a canvas in tab memory; pdf-lib assembles a new PDF from JPEG page images. No fetch, presigned URL, or cloud queue participates in the pipeline.

The selected PDF is processed in the browser tab. The page has no PDF-upload step, so VeloTools does not receive document bytes. Required page assets must load before processing can begin.

How to compress a PDF in 3 steps

  1. Drop one or more PDFs (up to 20), or pick files via the dialog. Choose a preset — Screen, Web, Print, or Archive — or tune DPI and JPEG quality manually.
  2. Click Compress All. Each file shows a live progress bar and before/after size. Processing is sequential to limit RAM spikes on large batches.
  3. Download individual _compressed.pdf files or use Download All (ZIP) — packaged locally with JSZip, never on a server.

Technical specifications

Max files per batch20 PDFs
Max file size120 MB per file; available browser memory may constrain complex documents sooner
Supported PDFsPDF files supported by the browser libraries; encrypted or complex documents may fail.
Compression methodRasterize pages via PDF.js → JPEG encode → pdf-lib reassembly
PresetsScreen (72 DPI / 40%), Web (96 / 65%), Print (150 / 80%), Archive (200 / 90%)
Manual controlsDPI 72–300, JPEG quality 10–95%, grayscale, strip metadata, remove annotations
Size resultDepends on page content and the selected DPI, JPEG quality, grayscale, and cleanup options
RAM usage~DPI² per page during render (96 DPI A4 ≈ 6 MB bitmap per page)
Network0 bytes of PDF content leave the browser
Encrypted PDFsRequire password at open — use Unlock PDF first if needed

DPI, JPEG quality, and why scans compress more than Word exports

Compression here is lossy rasterization, not in-place stream stripping. PDF.js draws each page onto a white canvas at scale = DPI / 72. The canvas is encoded as JPEG at your quality setting. pdf-lib embeds those JPEGs into a clean new PDF without legacy fonts, scripts, or redundant object streams.

Two independent levers. Lower DPI reduces the rendered pixel count. Lower JPEG quality applies a stronger lossy encode to that page image. Presets combine both; inspect the downloaded result because smaller files can lose visible detail.

Scanned vs vector text. Image-heavy scans often have more reducible data than PDFs built mainly from vector text. The page reports the actual before-and-after byte counts instead of promising a fixed saving.

Image-heavy pages. For some pages, the engine can use an embedded image before JPEG re-encoding instead of a full page render. Complex layered PDFs fall back to full render.

Compress vs merge/split. Merge and Split use lossless copyPages. Compress intentionally trades fidelity for size. Merge first, compress second, is a common workflow for smaller email attachments.

Export to images. Need JPG/PNG per page instead of a smaller PDF? Use PDF to JPG — same PDF.js render path, image output instead of pdf-lib assembly.

Frequently asked questions

Does Recent Files upload my PDFs?
No. By default only the file name and last compression settings are saved in this browser. File bytes stay local only if you opt in to “Keep file on this device,” auto-delete after 24 hours, and are never uploaded.
Does this compressor upload my files to a server?
No. PDF.js, pdf-lib, and JSZip run entirely in your browser. Disconnect the internet after load — compression still works. No API call carries PDF body data.
How much can I reduce PDF file size?
It depends on page content and the selected settings. The tool shows the exact before-and-after bytes for each processed file.
Will compression reduce visual quality?
All compression presets rasterize pages and may reduce fidelity. Archive uses the highest default DPI and JPEG-quality settings; inspect the downloaded file before sharing it.
What is the difference between DPI and JPEG quality?
DPI sets render resolution (canvas size). JPEG quality sets encoder aggressiveness. Both multiply: lower either to shrink output. Presets tune both together.
Is there a page count or file size limit?
Files over 120 MB are rejected. Complex or image-heavy PDFs may hit browser memory limits earlier, so split the document if processing fails.
Can I compress multiple PDFs at once?
Yes — up to 20 files. Each gets a progress bar; Download All (ZIP) packages results locally via JSZip.
Why does my text-only PDF barely compress?
Vector text rasterizes to sharp edges that JPEG compresses poorly. Use Archive preset and grayscale for text-heavy docs, or accept modest savings from metadata stripping and clean reassembly.
Does it work offline?
Compression can run after the required page assets are available in the browser. Offline availability depends on the browser cache; ZIP download also requires JSZip to be available.

Compress PDF for specific platforms

These pages start with platform-aware presets (size checkers, Screen/Web bias, grayscale when homework scans dominate). Same local compressor — different defaults so the first download is closer to what Gmail, Canvas, or WhatsApp actually accept.

Human experience · Vigen G.

From the builder: PDF size without the upload

Scanned contracts and course packs blew past email limits. Upload compressors were a non-starter for client PDFs. This page re-encodes with PDF.js / pdf-lib in memory — Screen/Web/Print/Archive presets match the job, not a marketing slider. Grayscale when text is the only signal; keep color for design proofs.