overflowy/make-look-scanned — explained in plain English
Analysis updated 2026-05-18
Make a digital PDF look like a photocopied or scanned paper document.
Use presets to consistently apply a specific scan style to many files.
Run the same effect pipeline in a browser without installing anything.
Get a deterministic, reproducible scan look for a given input file.
| overflowy/make-look-scanned | wizenheimer/blaze | matinsenpai/senpaiscanner | |
|---|---|---|---|
| Stars | 564 | 534 | 637 |
| Language | Go | Go | Go |
| Last pushed | — | 2025-10-14 | — |
| Maintenance | — | Quiet | — |
| Setup difficulty | moderate | easy | easy |
| Complexity | 2/5 | 3/5 | 2/5 |
| Audience | developer | developer | general |
Figures from each repo's GitHub metadata at analysis time.
Building the CLI needs Go and a C toolchain since it links MuPDF via cgo.
make-look-scanned is a command line tool, written in Go, that takes a normal digital PDF and makes it look like a photocopied or scanned paper printout. It applies a series of visual effects: slight skew, grayscale conversion, a warm paper tint, scanner grain, a bit of blur to simulate a camera or scanner out of focus, a darker shadow around the edges, and JPEG compression artifacts. It also runs directly in a web browser through WebAssembly, so people who do not want to install anything can use it from a web page. Under the hood, each page of the PDF is turned into an image, run through this chain of effects, and reassembled into a brand new PDF that only contains images. This means any selectable text in the original document is gone afterward, matching how a real scanner would behave, since a physical scan is just a picture of a page. The command line tool takes an input PDF and a set of optional flags controlling things like the output file path, the render resolution, how much the page is rotated, whether it is converted to grayscale, the strength of the paper tint, the amount of grain, the amount of blur, how strong the edge shadow is, and the JPEG quality used. Setting any of these numeric options to zero turns that particular effect off. Output is deterministic by default, meaning the same input file always produces the exact same result, because the random seed used for the effects is derived from the content of the file itself, though you can pass your own seed to get a different but still repeatable look. You can also save named presets of these settings in a configuration file and apply one with a single flag, with explicit command line flags always overriding a preset. Building the command line version requires Go and a C compiler toolchain, since it links against the MuPDF PDF library. The browser version instead uses the PDF.js library to read PDF pages, since the C-based library cannot be compiled to WebAssembly, but it reuses the same effect and reassembly code written in Go. The project is licensed under AGPL-3.0, largely because it statically links the AGPL-licensed MuPDF library, while the browser build avoids that requirement since it relies on the Apache-2.0 licensed PDF.js instead.
A command line tool and browser app that makes a normal PDF look like a scanned or photocopied paper document.
Mainly Go. The stack also includes Go, WebAssembly, MuPDF.
AGPL-3.0: you can use and modify it, but if you distribute the binary or run a modified version as a network service, you must make the source code available.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Don't trust strangers blindly. Verify against the repo.