About this tool
The people who scan mum and dad's prints are the audience
An old photograph is not a product shot. You do not want it sitting on a server you have never heard of. This page upscales with Real-ESRGAN compact 4× (BSD-3-Clause, about 4.6 MB) and can colourise with DDColor (Apache-2.0, about 108 MB). Both files are named, sized and licensed on the page *before* anything is fetched. Colourise is off until you turn it on, so a 108 MB download is never an accident.
2× and 4× from one model
The compact network is 4× only. The 2× option runs that 4× pass and box-downsamples the result, rather than shipping a second artefact. Large photos are tiled with overlap so a 768 px edge does not blow the tab's memory. Drag the before/after slider when it is done — the same language as the image-diff tool.
Colourise is optional and honest about hardware
DDColor is fp16. On a machine with WebGPU it runs on the graphics card. The WebAssembly path does not fully support fp16, which we already learned on the ID photo line — so if this browser has no WebGPU, the colourise checkbox tells you so and upscale still works. That is a limit, not a greyed-out mystery.
What actually leaves the tab
The photograph does not. Model bytes come from Hugging Face when you press the button. After the first run they live in this browser's cache. There is no account and no upload endpoint.