IHatePDF
Web app + Windows desktop app · v1.3.1
Twenty-eight PDF tools that run inside your browser tab. Nothing is uploaded, because there is no server.
Merge, split, compress, convert, sign, redact, protect, and edit the actual text inside a PDF. The file is read into memory, processed with WebAssembly, and handed back to you. It also ships as a Windows desktop app that saves results straight to your Downloads folder.
- Tools
- 28
- Compression
- 35.5 → 1.95 MB
- Checks passing
- 80
- Network requests
- 0
- Edit text in placeDouble-click a paragraph and retype it. It reflows in the document's own font, and the old characters are removed from the file, not covered up.
- Compress to a target sizeAsk for 2 MB and get it: a 35.5 MB scan came out at 1.95 MB, all on your machine.
- Send to your phone, offlineShare files or whole folders over Wi-Fi, the PC's own hotspot, or Bluetooth.
- Safe on low-memory PCsA memory fail-safe slows or stops a job before Windows runs out, instead of freezing.
- 01Inputyour diskYou pick or drop a file. The browser gives the page a
Filehandle, and it never leaves the tab. - 02Memorytab RAMThe PDF is read into an
ArrayBuffer. Nothing is written to a server or to disk storage. - 03Enginepdf-lib, pdf.js, WASMParsing, merging, compression and text edits run as JavaScript and WebAssembly inside the browser sandbox.
- 04OutputBlobThe result saves itself after a short countdown, or goes to your phone over the local network.
- ×Networkremote serversNONEEvery request was recorded during testing: none went outside the app.
Built with TypeScript · React · Vite · Tailwind · pdf-lib · pdf.js · Electron
- 10 MB831 KB
- 50 MB4.04 MB
- 150 MB11.7 MB
- 500 MB38.4 MB
- Light77%
- Custom 2 MB95%
- Balanced95%
- Smallest99%
- Startup
- < 0.5 s
- Memory at rest
- 398 MB
- Checks passing
- 80
- Requests out
- 0
From the v1.3.1 test report: 17 + 34 automated checks and all 29 tools driven end to end in a browser, on Windows.
- Rotate 2 GB PDF
- Watermark 2 GB PDF
- Compress 2 GB to 72 MB
- Merge 2 GB + 100 pages
- Protect 2 GB PDF
- Open 2 GB in the editor
- Watermark 1 GB PDF
- Compress 1 GB PDF
- Watermark 500 MB PDF
- Rotate 500 MB PDF
- Repair 500 MB, cut at 90%
Reading from disk instead of memory makes a few jobs slower (compress, redact, big Excel files), but everything stays under 2 GB except repairing a large damaged file.
| Job | v1.2.0 | v1.3.0 |
|---|---|---|
| Redact every page | 8.3 GB · 454 s | 1.2 GB · 779 s |
| Rotate | 1.2 GB · 114 s | 0.8 GB · 5 s |
| Organize (reverse) | 1.9 GB · 30 s | 0.8 GB · 5 s |
| Merge 5,000 + 5,000 pages | 0.8 GB · 15 s | 0.8 GB · 6 s |
| Edit a paragraph | 1.1 GB · 12 s | 0.9 GB · 7 s |
| PDF to Markdown | 3.9 GB · 46 s | 1.3 GB · 34 s |
| PDF to Word | 1.2 GB · 16 s | 1.3 GB · 22 s |
| PDF to Excel | 1.3 GB · 39 s | 1.3 GB · 51 s |
| PDF to JPG, 1,000 pages at 150 dpi | 2.4 GB · 61 s | 1.2 GB · 49 s |
| Split, crop, watermark, page numbers, compress, protect, PDF/A, sign | 0.7 to 1.1 GB, 4 to 7 s | 0.7 to 0.9 GB, 4 to 11 s |
| Job | v1.2.0 | v1.3.0 |
|---|---|---|
| Excel to PDF, 100,000 rows (3,704 pages) | 4.3 GB · 56 s | 1.9 GB · 97 s |
| Images to PDF, 300 photos (367 MB) | 3.1 GB · 15 s | 1.4 GB · 21 s |
| Word (150 chapters), PowerPoint (150 slides), HTML (3,000 paragraphs) | 0.8 to 1.5 GB | 0.8 to 1.6 GB, 1 to 5 s slower |
- 624 MB budget (tight 4 GB PC), scans10 / 14 / 0
- 624 MB budget, student files19 / 9 / 0
- 1 GB budget (4 GB PC), scans15 / 9 / 0
- 1 GB budget, student files24 / 4 / 0
- 3 GB budget (6 GB PC), scans24 / 0 / 0
- 4 GB budget (8 GB PC), scans24 / 0 / 0
- 8 GB budget (16 GB PC), scans24 / 0 / 0
| 300 dpi scan | 1 GB, v1.3.0 | 1 GB, v1.3.1 | 3 GB budget | 4 GB budget | No limit |
|---|---|---|---|---|---|
| 10 MB to 831 KB | stopped | 2.9 s | 2.9 s | 2.9 s | |
| 50 MB to 4.04 MB | stopped | 10.6 s | 10.1 s | 9.5 s | |
| 150 MB to 11.7 MB | stopped | 31.3 s | 26.0 s | 26.6 s | |
| 500 MB to 38.4 MB | stopped | 120.6 s | 107.9 s | 91.4 s | 87.1 s |
| Windows leaves free | Compress 150 MB | PDF to Word 150 MB | Watermark 500 MB |
|---|---|---|---|
| 8,192 MB | finished, 33.7 s, 44/44 images | finished, 7.7 s | finished, 2.2 s |
| reserve + 762 MB | slowed, 38.4 s, 44/44 images | slowed, 29.7 s | finished, 1.9 s |
| reserve + 162 MB | stopped safely after 10.1 s | slowed, 39.0 s | slowed, 4.1 s |
| Case | Result |
|---|---|
| 300-megapixel PNG to PDF at a 1 GB budget | Refused in 0.4 s; app usable afterwards |
| Windows down to 300 MB free during Compress 150 MB | Stopped in 2.4 s; app usable afterwards |
| A window stuck grabbing memory, 1 GB budget | Restarted in 1.5 s, notice shown |
| A job needing more than the budget (compress 1 GB at 0.7 GB) | Stopped after 2.9 s, memory back to normal, no restart |
| Tool | Input | Checked result |
|---|---|---|
| Merge | complex.pdf + test-multi.pdf | 7 pages |
| Split | test-multi.pdf | selected range extracted |
| Organize | reverse order | 4 pages, new order |
| Rotate | all pages right | rotations 90, 90, 90, 90 |
| Crop | test-multi.pdf | crop box applied (555 × 735) |
| Compare | original vs edited copy | 2 changes, +9 words, −18 words |
| Edit PDF | double-click a heading, retype | new text in file, old text gone |
| Sign / Fill forms | typed signature / “Zoë Test” | signature on page / form filled |
| Watermark, Page numbers, Redact | complex.pdf | 3 pages each, redaction verified |
| Word, Excel, PowerPoint, HTML to PDF | .docx / .xlsx (120 rows) / .pptx / .html | 2 / 6 / 3 / 4 pages |
| PDF to Word, Excel, PowerPoint, Markdown | complex.pdf | valid files; heading, table and list kept |
| Compress | 35.5 MB scanned PDF | 1.70 MB |
| Repair | complex.pdf cut off at 97% | all 3 pages recovered |
| PDF/A, Protect, Unlock | complex.pdf, password “secret123” | PDF/A metadata; encrypted, then decrypted |
| Auto-save | Page numbers, no clicks | saved itself after 5.3 s |
| Check | Result |
|---|---|
| RC4-40, RC4-128, AES-128, AES-256 password PDFs | wrong password refused, right one opens |
| Empty, garbage and renamed files | refused cleanly |
| Hindi watermark; Hindi and Chinese retyped in Edit PDF | correct characters, text extractable |
| Share to phone over Wi-Fi | QR, folders, ZIPs, wrong link refused: all pass |
| Network requests while using every tool | none outside the app |
| Check | Result |
|---|---|
| Startup | about 8 s on first launch after install, then under 0.5 s |
| App memory on the home screen | 398 MB |
| App memory, 500 MB scan open in Rotate | 1,424 MB, first 12 previews after 1.1 s |
| Watermark on a 500 MB scan at a 1 GB budget | stopped in 1.3.0; 2.6 s in 1.3.1 |
| Network requests (every request recorded) | none outside the app |
| Check | Result |
|---|---|
| Window ready after launch | 0.47 s |
| Compress an 88.6 MB mixed-image file | 3.06 MB, auto-saved to Downloads |
| Closing the window ends the process | 41 ms |
| Hindi and Japanese output file names | saved exactly |
| Installer size | 130 MB |