Merge, split and compress PDFs without uploading
Merge, split and compress PDF files in your browser. Your files are never uploaded, so they stay on your device.
Rule-basedInstant, rule-based result.
Check it yourself: every request this page makes
Every request this page has made since you opened it
This browser does not list its requests to the page. Use the Network panel instead.
Downloads bring the tool to you. None of these sent your file or its text anywhere.
Or open your browser’s developer tools, choose Network, run the tool and watch: your file never appears.
Merge PDF files into one
Runs in your browser. Your files are never uploaded.
Up to 20 files and 150 MB in total, 1,000 pages at most (desktop limit).
Add at least 2 PDF files. Your files stay on this device. Nothing is uploaded.
Example result from made-up data
Two files for Fernway, a made-up company. The first live run replaces this.
- 01
fernway-invoice-0412.pdf
2 pages
- 02
fernway-delivery-note-0412.pdf
1 page
Split a PDF by pages
Runs in your browser. Your files are never uploaded.
One file, up to 100 MB (desktop limit). Up to 200 ranges, and 1,000 files in one zip.
Smart page ranges: 1-3, 5, 8-10.
Choose a PDF file. Your files stay on this device. Nothing is uploaded.
Example result from made-up data
A 6-page handbook for Fernway, a made-up company, split by the ranges 1-2, 5, one file per range. The first live run replaces this.
- pages-1-2.pdfpages 1-2
- page-5.pdfpages 5
Both files come together in split.zip.
Compress a PDF
Runs in your browser. Your files are never uploaded.
One file, up to 100 MB (desktop limit). Nothing is changed until you press Compress.
Choose a PDF file. Your files stay on this device. Nothing is uploaded.
Example result from made-up data
A 2-page file of site photos for Fernway, a made-up company. The first live run replaces this.
- Scan
- Photos we can shrink make up most of the file
- Forecast
- Photos make up most of this file. Shrink photos should help.
- Default
- Shrink photos, Medium
- Result
- Before and after sizes, how many photos changed, and a crop of the largest one
Load the sample to see the real sizes from your own browser.
01How it works
Your files never leave this tab.
The toolkit does three jobs on PDF files: merge several files into one, split a file by page ranges or into single pages, and compress a file. Every job runs in a background worker inside your browser tab, so the files are read and written on your device and never uploaded.
Compress has two honest modes. Clean up removes hidden extras such as metadata, for small savings with no change in quality. Shrink photos makes large photos smaller and leaves text sharp. Before anything changes, a scan shows what the file is made of, so you know whether shrinking photos will help.
If the result is not at least 2% smaller, you get the original back with a note that the file is already compact. The tool never promises a target size. Merging and splitting copy pages into a new file, so bookmarks, form fields and attachments do not carry over, and any change breaks a digital signature. No model is called at any step.
What stays on your device
- The files you choose and every page in them.
- Every file the toolkit makes, until you download or clear it.
- Nothing is kept after you leave: no storage, no cache, and the worker is closed after each job.
Method
Printed from the same settings file the toolkit runs on, so the page and the code cannot disagree.
| Job | Desktop | Phone or unknown |
|---|---|---|
| Merge | Desktop: 20 files, 150 MB in total, 1,000 pages | Phone or unknown: 20 files, 40 MB in total, 1,000 pages |
| Split | Desktop: 100 MB | Phone or unknown: 50 MB |
| Compress | Desktop: 100 MB | Phone or unknown: 40 MB |
A phone is a device that reports 4 GB of memory or less, or a touch screen that does not report it. Each job stops after 60 seconds, or 180 seconds when the files add up to more than 100 MB.
| Level | Longest side | JPEG quality |
|---|---|---|
| Light | Longest side: 2,000 px | JPEG quality: 0.8 |
| Medium | Longest side: 1,500 px | JPEG quality: 0.7 |
| Strong | Longest side: 1,000 px | JPEG quality: 0.6 |
Photos already smaller than the longest side keep their size and are only saved again; a photo is swapped only if the new copy is smaller.
- Split
- Ranges like 1-3, 5, 8-10, up to 200 items. One file per range comes as split.zip, up to 1,000 files, stored without extra compression. Every new file is built by copying pages into a fresh document.
- Merge
- Files are joined one at a time in the order you set, then saved once. Pages you untick in Show pages are left out.
- Clean up
- Removes the XMP metadata stream, empties the document information entries, drops objects nothing points to, and saves with object streams on. Pages and images stay byte for byte.
- Shrink photos touches
- Only JPEG photos (DCTDecode) with 8 bits per channel in DeviceRGB or DeviceGray.
- Shrink photos leaves alone
- CMYK and ICCBased color, soft masks and masks, Decode arrays, image masks, JPEG 2000, JBIG2, CCITTFax and FlateDecode images, and photos rotated by a camera tag.
- How a photo is shrunk
- Each photo is decoded by your browser, scaled down on a canvas, saved again as a JPEG and swapped in only if the new copy is smaller.
- The forecast
- Photos we can shrink at 30% or more of the file: "should help", and Shrink photos at Medium is the default. From 10% to under 30%: a moderate saving. Under 10%: a small saving, and Clean up is the default.
- The result rule
- If the new file is not at least 2% smaller, you get the original back. The page never claims a saving it did not make.
02Limits
What it does not do
- Merging and splitting drop bookmarks, fillable form fields, attachments and accessibility tags.
- Any change breaks a digital signature.
- Compress never promises a size. If a file is already compact, you get the original back.
- Password-protected PDFs need the password removed in your PDF reader first.
- It does not flatten pages to images, and it never compresses to a size you name.
03Stress test
Checked by tests, not by trust.
PDF toolkit, check by check
Not yet0 of 4 checks that apply have passed
No recorded test run yet.
Checks marked Not yet are still open.
| Check | What it checks | Status |
|---|---|---|
ST1Test set Not yet The unit tests and test files for merge, split and compress, with the right output written down first. | The unit tests and test files for merge, split and compress, with the right output written down first. | Not yet |
ST2Prompt attack Not yet The shared injection strings as file names and as text inside a PDF: they must change nothing. | The shared injection strings as file names and as text inside a PDF: they must change nothing. | Not yet |
ST3Run twice Not needed Runs in your browser: no server Sending the same input twice, or rerunning after a crash, never doubles a record, a message or a payment. | Sending the same input twice, or rerunning after a crash, never doubles a record, a message or a payment. | Not needed Runs in your browser: no server |
ST4Failure recovery Not needed Runs in your browser: no server A failed call is retried a set number of times. If it still fails, the item is parked for a person. Nothing is dropped silently. | A failed call is retried a set number of times. If it still fails, the item is parked for a person. Nothing is dropped silently. | Not needed Runs in your browser: no server |
ST5Load and limits Not yet Oversized files, too many files or pages, and 30 jobs back to back, on desktop and phone limits. | Oversized files, too many files or pages, and 30 jobs back to back, on desktop and phone limits. | Not yet |
ST6Failure alert Not needed Runs in your browser: no server If a run fails, a named person gets an email saying which step failed. | If a run fails, a named person gets an email saying which step failed. | Not needed Runs in your browser: no server |
ST7Human sign-off Not needed Runs in your browser: no server Nothing reaches a customer, a candidate or a money system without a person, unless a fixed rule allows it. | Nothing reaches a customer, a candidate or a money system without a person, unless a fixed rule allows it. | Not needed Runs in your browser: no server |
ST8Rules around the AI Not needed No AI step Fixed rules run before the AI and check its answer after. If the AI fails or is down, the workflow falls back to a safe result. | Fixed rules run before the AI and check its answer after. If the AI fails or is down, the workflow falls back to a safe result. | Not needed No AI step |
No upload Not yet The network log during every test run: no file or text may leave the browser. | The network log during every test run: no file or text may leave the browser. | Not yet |
0 passed, 5 not needed, 4 not yet. We show what we tested, never the test data.
What we test04Changes
What changed
- First version, from the free tools architecture.
- Built merge, split and compress, their example results and their unit tests.
05Questions
Questions people ask first.
Are my files uploaded?
No. Merging, splitting and compressing all happen inside your browser tab. Your files never leave your device.
Why did compress barely shrink my file?
Text and fonts do not shrink much. Clean up gives small savings on any file, and Shrink photos helps only when photos make up much of the file. If a file cannot get at least 2% smaller, you get the original back.
Will merging keep my bookmarks and form fields?
No. Merging and splitting drop bookmarks, fillable form fields, attachments and accessibility tags. Links usually survive.
Can it open password-protected PDFs?
No. Remove the password in your PDF reader first, then try again.
Is there a size limit?
Yes. Limits depend on your device's memory, and the tool names the limit before you start.
From one file today to every file, every week.
Each workflow page walks through the whole job step by step: the fixed rules, the one AI step and what a person checks. Build it yourself in n8n, and book a call if you get stuck.
07Credits
Credits and licenses
- Reading and writing PDFs
- pdf-lib by Andrew Dillon, in the maintained @cantoo/pdf-lib fork, version 2.11.1
- Expat license, permissive
- Zip files
- fflate by Arjun Barrett, version 0.8.3
- Expat license, permissive
- Page previews
- PDF.js by Mozilla, pdfjs-dist version 6.4.299
- Apache License 2.0