A browser-based PDF toolkit. View, merge, split, reorder, compress, and edit metadata — all processing happens locally in your browser using WebAssembly. No files are uploaded to any server.
- View — Scroll through pages with thumbnail sidebar navigation
- Merge — Combine multiple PDFs with drag-and-drop reordering
- Split — Extract page ranges into separate documents using expressions
- Reorder — Rearrange, duplicate, or remove pages via drag-and-drop or expressions
- Compress — Lossless and lossy compression with target file size support
- Metadata — View and edit PDF title, author, subject, and keywords
- Per-page operations — Rotate, crop, and scale individual pages from any tool
- Frontend: SolidJS + Tailwind CSS + Vite
- PDF engine: Rust compiled to WebAssembly via wasm-pack
- Parallelism: Web Worker pool for rendering and image processing
apps/web/ SolidJS frontend
crates/pdf-core/ Rust PDF manipulation library
crates/pdf-wasm/ WASM bindings for pdf-core + PDFium
packages/ Generated WASM package (build artifact)
docs/ Research and design documents
make install # Install JS dependencies
make dev # Build WASM (dev) + start Vite dev server
make build # Full production build (WASM release + Vite)
make test # Run Rust + web tests
make lint # Run clippy + Biome + typecheck
make fmt # Format Rust + TypeScriptRequires: Rust, wasm-pack, Node.js, pnpm
Hosted on Cloudflare Pages as a static site.
npx wrangler pages deploy # Deploy from apps/web/distMIT