The open-source, privacy-first document toolkit that runs entirely in your browser.
No server uploads. No sign-ups. No limits. Just fast, secure document processing.
Most online document tools upload your files to remote servers. FileForge processes everything locally in your browser using WebAssembly-powered libraries. Your files never leave your device.
| FileForge | iLovePDF / SmallPDF | |
|---|---|---|
| 100% Browser Processing | ✅ | ❌ |
| No Server Upload | ✅ | ❌ |
| No Sign-up Required | ✅ | ❌ (limited) |
| Completely Free | ✅ | ❌ (freemium) |
| Open Source | ✅ | ❌ |
| Works Offline | ✅ | ❌ |
| First Load Size | 104 KB | 2+ MB |
| 🔓 Unlock Remove passwords & restrictions Batch support |
📋 Merge Combine multiple PDFs Drag to reorder |
✂️ Split Divide by page ranges or individual pages |
📄 Extract Pick specific pages Custom ranges |
🔄 Rotate 90° / 180° / 270° All or specific pages |
| 📦 Optimize Strip metadata Reduce file size |
💧 Watermark Text watermarks Tiled / Center / Diagonal |
🔢 Page Numbers Auto-numbering 5 positions, 2 formats |
🗑️ Delete Pages Remove unwanted pages With confirmation |
ℹ️ PDF Info Metadata viewer One-click copy |
| 🖼️ Image → PDF JPG/PNG to PDF Batch support |
📷 PDF → Image Pages to PNG High-quality 2x render |
🗜️ Image Compress Reduce file size Quality control |
🔍 Image Resize Scale 10%–200% Batch support |
| 🧩 Image Stitch Combine images Vertical / Horizontal |
🎨 Image Convert PNG ↔ JPG ↔ WebP Batch support |
||
| 📝 DOCX Viewer Preview Word docs in browser |
📋 PDF Text Extract text content from PDF files |
📝 Text → PDF Type text, create PDF Instant conversion |
🌐 HTML → PDF Convert HTML files to PDF documents |
Key design decisions:
- Dynamic imports —
pdf-lib(225KB),pdfjs-dist,jszip(100KB), andmammothare lazy-loaded only when a tool is actually used, keeping the initial bundle at just 104KB - Static Site Generation — All 21 pages are pre-rendered at build time for instant loading
- Zero backend — No API routes, no database, no server-side processing. Deploy anywhere that serves static files
- SEO-first routing — Each tool has its own URL (
/unlock,/merge, etc.) with dedicated meta tags, Open Graph, and structured data
- 🌐 Bilingual — Full Korean + English support with auto-detection from
navigator.language - 🌙 Dark mode — System preference auto-detection + manual toggle, fully themed across all pages
- 🔍 Tool search — Instant search with
/shortcut, categorized grid (PDF / Image / Document) - 📱 Mobile-first — Fixed bottom CTA bar, responsive layout, touch-friendly 44px targets
- ⌨️ Keyboard shortcuts —
Escto go home,/to search tools,Ctrl+Enterto execute - 🔄 Batch processing — Upload multiple files with real progress bar, image thumbnails, file summaries
- 📊 Smart context — Page count hints, file size warnings, processing time, character/line/page count
- 🔗 Share — Native share API on mobile, clipboard fallback on desktop
- 🎯 Contextual suggestions — Related tools based on what you just used
- 🖱️ Drag & drop — Full drag-and-drop support for all file types (PDF, images, DOCX, HTML)
- 🖼️ Image previews — Upload thumbnails and result grid preview for image operations
- ⚡ 112KB First Load — Optimized through dynamic imports and tree-shaking
- 🏗️ 21 static pages — Pre-rendered with
generateStaticParams - 🔍 Full SEO — Sitemap, robots.txt, per-tool meta tags, JSON-LD structured data
- 📲 PWA ready — Web app manifest, SVG favicon, Apple mobile web app support
- ♿ Accessible — Skip-to-content,
aria-labels,focus-visible, semantic HTML, WCAG AA,prefers-reduced-motion - 🛡️ Security hardened — XSS-safe (DOMParser), CSP headers, X-Frame-Options, no server-side data
- 💾 Persistent state — Language, theme, history, and processed count stored in
localStorage - 🔒 Memory safe — Proper cleanup of Object URLs to prevent memory leaks
- 🔤 Optimized fonts — Self-hosted Inter via
next/font(no external requests) - 📦 Cache optimized — Immutable cache headers for static assets (worker, favicon)
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/concrete-sangminlee/pdfremover.git
cd pdfremover
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:3000 in your browser.
npm run build
npm startOne-click deploy. No configuration needed.
app/
├── page.tsx # Home page (tool grid)
├── [tool]/page.tsx # Dynamic tool routes with per-tool SEO
├── components/
│ └── toolkit-app.tsx # Main client component (all UI + logic)
├── lib/
│ └── config.ts # Shared types, tool definitions, colors
├── layout.tsx # Root layout, meta tags, next/font
├── globals.css # Design system (Tailwind + custom)
├── sitemap.ts # Dynamic sitemap generation
├── robots.ts # Robots.txt generation
├── error.tsx # Error boundary
└── not-found.tsx # 404 page
public/
├── manifest.json # PWA manifest
├── pdf.worker.min.mjs # PDF.js web worker
└── icon.svg # SVG favicon
| Technology | Purpose |
|---|---|
| Next.js 14 | Framework (Static Site Generation) |
| React 18 | UI library |
| TypeScript 5 | Type safety |
| Tailwind CSS 3 | Styling |
| pdf-lib | PDF processing (client-side) |
| pdfjs-dist | PDF rendering & text extraction |
| mammoth | DOCX to HTML conversion |
| JSZip | ZIP packaging for batch downloads |
Contributions are welcome! Here are some ways you can help:
- 🐛 Report bugs — Open an issue
- 💡 Suggest features — Start a discussion
- 🔧 Submit PRs — Fork, branch, commit, and open a pull request
- 🌍 Add translations — Help us support more languages
- 📝 Improve docs — Fix typos, add examples, clarify instructions
- No server-side processing — All document operations must run in the browser
- Keep bundle small — Use dynamic imports for heavy libraries
- Bilingual — All user-facing strings must be in both Korean and English
- Accessible — Follow WCAG AA guidelines
- Mobile-first — Test on mobile viewports
- Memory safe — Always revoke Object URLs after use
-
Dark mode— System preference + manual toggle, 100% coverage -
Tool search— Instant search with/shortcut, categorized grid -
Keyboard shortcuts—Esc,/,Ctrl+Enter,Ctrl+V -
Image previews— Upload thumbnails + result grid preview -
Batch progress— Real-time percentage bar for all batch operations -
WebP support— Full WebP support in Image to PDF -
Security hardening— CSP headers, XSS-safe parsing, Permissions-Policy - PDF password protection (encryption)
- More languages (Japanese, Chinese, Spanish)
- Service worker for full offline support
- PDF preview before processing
- Unit tests for all tools
- PDF form filling
This project is licensed under the MIT License.
Built with privacy in mind for users worldwide.
If you find this useful, please consider giving it a star.