Self-hosted, client-side PDF desk — redact, annotate, sign, fill forms, batch merge/split, and inspect documents right in your browser. Built as a fast, privacy-first Stirling-PDF alternative.
Server-side PDF editors often round-trip sensitive documents to remote APIs or run heavy backend Java containers. Fawk PDF Tools runs 100% client-side inside your web browser using WebAssembly and JavaScript (pdf.js + pdf-lib). Your documents never leave your machine unless you explicitly connect to your own Nextcloud instance.
- True Redaction: Select regions on any page and export a flattened PDF where underlying text streams under black boxes are destroyed.
- Page Organize: Rotate pages 90° CW/CCW, delete unwanted pages, or reorder pages with one-click page management controls.
- Annotations & Image Insert: Add highlights, free-text callouts, sticky notes, or paste images/screenshots (
Ctrl+V) onto document pages. - Signatures & Stamps: Draw ink signatures, type custom webfont signatures, load PKCS#12 client certificates, or apply preset office stamps (CONFIDENTIAL, APPROVED, PAID, FAWK).
- Form Filling: Fill PDF form fields interactive or auto-flatten upon export.
- Batch Toolbox: Merge multiple PDFs, split ranges, add watermarks, sanitize metadata, or password-protect files locally.
- Document Inspector: Instant WASM/pdf.js classification (Text-based vs Scanned) with one-click Markdown extraction.
- Homelab / Nextcloud Sync: Optional WebDAV open/save integration to sync edited documents directly with your self-hosted Nextcloud (
FAWKCLOUD). - IndexedDB Recent Cache & Undo: Reopen recent files offline; full session Undo/Redo (
Ctrl+Z/Ctrl+Y).
| Shortcut | Action |
|---|---|
Ctrl+Z / Ctrl+Y |
Session Undo / Redo (redactions, annotations, signatures, images) |
Ctrl+S |
Export / download current PDF |
Ctrl+F |
Open Find toolbar |
F3 / Shift+F3 |
Next / previous search match |
[ / ] or PageUp / PageDown |
Previous / next page |
R |
Quick rotate current page 90° CW |
Ctrl+V |
Paste image from clipboard onto current page |
- Node.js 22+
- npm 10+
# Clone the repository
git clone https://github.com/FAWK-TECH/fawkpdf.git
cd fawkpdf/app
# Install dependencies
npm install
# Start local dev server
npm run devOpen http://localhost:5173 in your browser.
Serve the SPA with static Nginx using Docker Compose:
cd deploy/public
docker compose up -d --buildAccess the app at http://localhost:8080.
For custom reverse proxy setups or Nextcloud WebDAV proxy rules, see deploy/README.md.
We believe in complete transparency about what Fawk PDF Tools can and cannot do:
- Redaction Model: Redaction works via page raster-flattening (
exportScaleconversion), which replaces the redacted page with a flattened image stream to guarantee text under black boxes cannot be extracted. It is not an inline PDFium content-stream vector editor. - Large Documents: Documents over 100+ pages load page 1 immediately while remaining pages render in the background. Extremely large PDFs (200MB+) are bound by browser heap limits.
- Encryption Strength: PDF password protection uses standard
pdf-libencryption. Do not rely on it as bank-grade AES-256 vault encryption. - No Full Acrobat Text Reflow: PDF layout modifications operate on existing pages and overlays. Full reflow / paragraph re-wrapping is out of scope.
- Framework: React 19, TypeScript, Vite
- PDF Engine:
pdf.jsv6,pdf-libv1.17 - Crypto & PKCS#12:
@signpdf,node-forge - Icons: Lucide React
- Styling: Modern Vanilla CSS with dark mode tokens
Run automated redaction stream destruction tests:
cd app
npm run verify:redactionThis harness executes EditEngine.load(), asserts lastExportMethod === 'raster_flatten', asserts /DCTDecode embedded JPEG stream presence, verifies unredacted page stream preservation, and asserts text under redaction boxes is 100% destroyed in exported PDF streams.
MIT License © 2026 Fawk

