ByteScope

Restore Old Photos

Sharpen a faded print and, if you want, give it colour — without handing it to a stranger's site.

Your files never leave your browser — all processing is local.

The photograph

Drop an old photo here

or click to browse — you can paste too. JPEG, PNG or WebP.

Restore

Upscale

Upscaling uses Real-ESRGAN compact 4×, about 4.6 MB, BSD-3-Clause. 2× is that 4× result scaled down.

Acceleration: Checking what this browser can do…

What leaves this tab

The photograph does not. It is read, upscaled and composited in this tab. There is no upload endpoint.

Model files are fetched from Hugging Face when you press the button — never your photo. They stay in this browser's cache afterwards.

Upscaler 4.9 MB. Colouriser 113.2 MB. Shown before anything is fetched.

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.

Frequently asked questions

Does the photo get uploaded?

No. It is decoded, tiled, inferred and encoded in this tab. The only network traffic is the model files you asked for, and the photo is not attached to those requests.

Why is colourise a separate, huge download?

Because it is. DDColor is about 108 MB. Hiding that behind a default-on toggle would be a trick. Upscale alone is 4.6 MB and is enough if you only wanted the print sharper.

Will it invent faces or writing?

GAN upscalers hallucinate texture. A face can look slightly plastic; handwriting can grow extra strokes. Compare with the slider and keep the original if the 'restored' print is a worse lie than the blurry one.

Why not 8×?

A 768 px source at 4× is already 3072 px on a side. 8× would be another model and another memory budget. 4× is the compact checkpoint we licensed and tiled; 2× is that output scaled down.

Can I use this offline after the first run?

Yes, for whichever models you actually downloaded. Clear site data and they are gone, and the next press fetches them again.