whatisgithub

What is make-look-scanned?

overflowy/make-look-scanned — explained in plain English

Analysis updated 2026-05-18

564GoAudience · developerComplexity · 2/5LicenseSetup · moderate

In one sentence

A command line tool and browser app that makes a normal PDF look like a scanned or photocopied paper document.

Mindmap

mindmap
  root((make-look-scanned))
    What it does
      Fakes a scanned PDF look
      Applies skew grain blur
      Runs as CLI or in browser
    Tech stack
      Go
      WebAssembly
      MuPDF
      PDF.js
    Use cases
      Simulate a photocopy
      Reproducible presets
      Browser based scanning look
    Audience
      Developers
      Document tinkerers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Make a digital PDF look like a photocopied or scanned paper document.

USE CASE 2

Use presets to consistently apply a specific scan style to many files.

USE CASE 3

Run the same effect pipeline in a browser without installing anything.

USE CASE 4

Get a deterministic, reproducible scan look for a given input file.

What is it built with?

GoWebAssemblyMuPDFPDF.js

How does it compare?

overflowy/make-look-scannedwizenheimer/blazematinsenpai/senpaiscanner
Stars564534637
LanguageGoGoGo
Last pushed2025-10-14
MaintenanceQuiet
Setup difficultymoderateeasyeasy
Complexity2/53/52/5
Audiencedeveloperdevelopergeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Building the CLI needs Go and a C toolchain since it links MuPDF via cgo.

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.

So what is it?

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.

Copy-paste prompts

Prompt 1
Help me build make-look-scanned from source with Go and a C toolchain.
Prompt 2
Show me how to create a custom preset in config.toml for this tool.
Prompt 3
Explain how the --seed flag affects the output of this scanner effect.
Prompt 4
Walk me through building the offline browser version of this tool.

Frequently asked questions

What is make-look-scanned?

A command line tool and browser app that makes a normal PDF look like a scanned or photocopied paper document.

What language is make-look-scanned written in?

Mainly Go. The stack also includes Go, WebAssembly, MuPDF.

What license does make-look-scanned use?

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.

How hard is make-look-scanned to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is make-look-scanned for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.