Web app Live · free
A virtual flatbed scanner that runs in your browser. A scanline sweeps across the image and copies one thin strip of pixels per frame into the result. Drag, zoom or rotate the image while it scans and the output smears and stretches.
How it works
Pick a file, drop it on the page, or paste from the clipboard. It lands on the scan bed.
The scanline starts sweeping. Loop mode repeats forever, single mode does one pass and stops.
Drag, wheel-zoom, pinch, rotate. The output records whatever you do to the source.
The result renders at 1520 px and downloads straight to your disk. Clear and go again.
Controls
Output



Privacy
When you add an image, the file stays local. There is no upload, no server call and no form post. The processing, the strip copying, the xerox curve and the grain all happen on canvas elements inside the page. The PNG export is generated in the browser and downloaded straight to your disk.
snitscanner is one static HTML file. I have no backend set up for it, so there is nothing on my side that could store or view what you scan.
Do I need an account?
No. There is no sign up, no login, no email. Open the page and use it.
Does it cost anything?
No. It is free and there is no paid tier.
Does it work offline?
Once the page has loaded, the scanning and exporting work without a connection. The two web fonts are the only thing fetched from outside.
Which browsers?
Safari, Chrome and Firefox on desktop. It is developed and tested primarily in Safari on macOS. Touch works, so it runs on a tablet or phone, with one finger to drag and two to pinch zoom.
Can I use the output commercially?
Yes. Whatever you scan stays yours. I make no claim on the output.
Under the hood
The effect is one line repeated: copy a thin strip of pixels from the workspace canvas to the same position on the output canvas, every frame, while the user moves the source underneath. The output is never cleared during a scan, so the strips accumulate into the final image. The xerox curve, the grain and the blend modes are applied to each strip after it lands.
Internal resolution is 1520 px square regardless of how big the panes look on screen, so exports stay sharp. No framework, no build step and no dependencies beyond two Google Fonts.