No upload · 100% private
All tools

Compress PDF online — private, no upload

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

🔒 100% Private ⚡ Instant 📄 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.

This is structural privacy, not a policy promise. With Wi-Fi disabled after the page loads, compression still runs — proof that work is local. For NDAs, HIPAA-covered records, and financial statements, no third party can access file content because no upload step exists. Server-based compressors (iLovePDF, Smallpdf) must copy your file to remote storage; VeloTools cannot, by design.

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 PDF versionsPDF 1.4 – 2.0; scanned, vector, and mixed content
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.

Smart compress path. For some image-heavy pages, the engine extracts embedded JPEG streams without full canvas render when safe — faster and preserves source quality on single-image pages. 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?
Yes — except Archive preset, every mode trades size for fidelity. Print and Archive are best for client deliverables; Screen is best for internal email and portals.
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?
Yes, after CDN libraries cache (~3 MB total). Airplane mode does not block compression, batch mode, or ZIP download.

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.