Restore an old photo
Enlarge an 800 px scan of an old photo 4× and print it at 6 inches.
Guide
Photo Restoration makes blurry, low-resolution or flat photos clearer along two routes. “Local fast enhance” does edge-preserving denoising plus automatic levels and white balance plus USM sharpening, finishes in seconds, leaves the resolution alone, and comes in mild, standard and strong. “AI upscaling” uses the lightweight Real-ESRGAN model (realesr-general-x4v3, about 4.9 MB of ONNX) to run single-threaded tiled inference in the browser through onnxruntime-web, enlarging the image 4× and then outputting at the 2× or 4× you chose. Processing happens locally in the browser and photos are never uploaded.
Updated 2026-09-094 min read
Photo Restoration makes blurry, low-resolution or flat photos clearer along two routes. “Local fast enhance” does edge-preserving denoising plus automatic levels and white balance plus USM sharpening, finishes in seconds, leaves the resolution alone, and comes in mild, standard and strong. “AI upscaling” uses the lightweight Real-ESRGAN model (realesr-general-x4v3, about 4.9 MB of ONNX) to run single-threaded tiled inference in the browser through onnxruntime-web, enlarging the image 4× and then outputting at the 2× or 4× you chose. Processing happens locally in the browser and photos are never uploaded.
An honest note: the local compute is limited — AI upscaling clearly improves blur and low resolution, but its effect on deep restoration tasks such as heavy scratches, damage and face reconstruction is limited.
<original name>_enhanced.png or .jpg.| Input | Output | Notes |
|---|---|---|
| A 600×400 scan of an old photo, AI upscaling 4× | 2400×1600, taking tens of seconds to a few minutes |
A longest side of 800 or less is inferred directly |
| A 3000×2000 phone photo, AI upscaling 2× | Scaled to 800×533 first, 4× up to 3200×2132, then back down to 2× at 1600×1066 |
A longest side above 800 px is scaled down first |
| A slightly flat group photo, local fast enhance, standard | Resolution unchanged, less noise, more contrast, sharper edges |
Finishes in seconds |
Enlarge an 800 px scan of an old photo 4× and print it at 6 inches.
Enlarge a blurry image received in a group 2× before posting it again.
Take a 500 px image from a supplier up to 2000 px before listing it.
No enlargement needed — just run the local fast enhance on standard to lift contrast and sharpness.
An image with a longest side above 800 px is scaled to 800 before enlarging, to keep inference time and memory in check; upscaling therefore suits smaller images better.
No. After the first download it is cached offline through the browser Cache API; in private mode the cache is unavailable and it is downloaded again each time.
No. Scratches, damage and face reconstruction are deep restoration tasks that a lightweight local model cannot do; use professional software.
The photo is processed and inferred entirely inside the browser and is never uploaded to any server; the first AI upscaling run downloads the model and wasm runtime files (about 4.9 MB of model) from third-party CDNs (HuggingFace mirrors and jsDelivr), and those requests contain none of your images and are reused from the browser cache afterwards.
Updated 2026-09-09
Sharpen blurry low-res photos: fast local enhancement plus Real-ESRGAN AI upscaling, all inferred in the browser
Denoise + auto levels / white balance + sharpening, done in seconds with no change in resolution. Suits photos that are slightly hazy, colour-cast or noisy.
The lightweight Real-ESRGAN model runs inside the browser and images are never uploaded. The first run downloads a model of about 4.9MB (cached offline afterwards). Images whose long edge is over 800px are scaled down first and then up — single-threaded WASM inference grows with the square of the area, and this limit keeps a single image between a few tens of seconds and a few minutes.