- Is my document really never uploaded anywhere?
- Yes. This page has no server-side component at all. The image you pick never leaves your device — the entire pipeline (file reading, canvas rendering, perspective warp, PDF encoding) runs in your local browser using the File API, Canvas API, and pdf-lib (a pure-JavaScript PDF library loaded from a CDN). You can even run this page offline after the first load. Inspect the network tab in your browser's DevTools: you will see zero POST requests when you click "Download PDF".
- What does the perspective correction (trapezoid fix) actually do?
- When you photograph a flat document at an angle, parallel edges appear to converge — a classic trapezoid or skew distortion. The four-point correction computes a projective homography: a 3×3 matrix that maps your four chosen corners to a perfectly rectangular output. Each pixel of the output is reverse-mapped back to the source image and sampled, producing a flat, straight-on view as if you had scanned the document on a flatbed scanner.
- What output size will the PDF be?
- The tool derives the output width from the average of the two horizontal edge lengths (top and bottom) and the height from the average of the two vertical edges (left and right), both measured in your source-image pixels. This preserves the document's natural aspect ratio. The resulting image is embedded in the PDF at screen resolution (96 dpi equivalent). For archival quality, use a high-resolution source photo — a 12 MP phone shot produces a PDF perfectly readable and printable at A4/Letter size.
- Can I scan multiple pages into one PDF?
- Currently each scan produces a single-page PDF. To combine multiple scans, use the PDF Merge tool on this site — also 100% local, no upload — to join them into one document after scanning each page.
- Which image formats are supported?
- JPEG, PNG, and WebP are fully supported in all modern browsers. HEIC (iPhone default) is supported in Safari on Apple devices; on other browsers, convert to JPEG first (your phone's share sheet usually offers this). The tool accepts any image that the browser's native
<img> element can decode.