How it works (tech): WebAssembly + Canvas + Web Workers. Text edits operate on glyph runs; when metrics don’t match exactly we do a subtle white-out behind the run and draw new text over it (preserves layout). Signatures use velocity-aware smoothing (Catmull–Rom → cubic Beziers). Export dedupes XObjects to avoid file bloat. Mobile Safari gets tiled rendering to keep memory stable.
Perf (measured): ~1.2s FCP / ~1.5s LCP on mid-range Android for the landing UI; TBT ~0–30ms during typical edits.
Privacy: default is offline—no network calls during edit/export. Any optional cloud action is explicit and TLS-only. No watermark, no usage caps.
Gaps: no full OCR yet; no global find/replace; batch stamping per-page for now.
Try it: https://pdffreeeditor.com/
Direct editor: https://pdffreeeditor.com/editor/
Script-light mode (disables analytics): https://pdffreeeditor.com/?lite=1
I’d love feedback on weird fonts, RTL, giant scans, or perf gotchas. Happy to share more internals and ship fixes live in the thread. — Maaz