Why it exists
The photos you want to upscale, a family picture, a scanned ID, a screenshot with someone’s face, an old thumbnail that’s the only copy left, are exactly the ones you don’t want to hand to a stranger’s server. The web upscalers all upload your image, then watermark it, cap the output, or gate it behind an account, and the colorizers do the same. enhance does the whole thing in the browser tab instead: both the restoration and the colorization model are on-device, so you get the “enhance” moment, and an old photo back in colour, for real, and your photo never leaves your machine.
How upscaling works
Upscale runs Real-ESRGAN (the compact
realesr-general-x4v3 model, about 5 MB) through ONNX
Runtime Web, with a WebGPU fast path and a WebAssembly fallback. It is
a real restoration model trained on real-world degradation, so it
rebuilds plausible texture instead of just resampling. That is
what separates it from a plain bilinear enlargement, and what makes the
before/after land.
The model takes a fixed 128×128 patch, so the photo is cut into overlapping tiles, each upscaled 4×, and the seams are feathered away as the tiles are stitched back together. That keeps memory bounded even on a large image. The result is shown against a plain enlargement of the original so you can drag the divider and judge it yourself, and a one-click download gives you the full-resolution PNG.
How colorizing works
Colorize runs the Zhang et al.
colorization network (the siggraph17 model) through the
same ONNX Runtime Web stack. The model only ever sees the brightness of
your photo; from that alone it predicts the two colour channels of
CIE‑Lab. Because colour is low-frequency, the network runs once on
a 256×256 version of the image, and the predicted colour is then
laid back over the original brightness at full resolution,
so every detail stays exactly as sharp as it was and only the
colour is invented. When both passes are on, the photo is colorized
first and upscaled second.
The colours are a plausible guess, not a record of the real ones: a learned prior over what skies, skin, foliage, and fabric usually look like, not a recovery of the original pigment. It is best at exactly the thing it looks built for: bringing a faded family photo back to life.
On-device, nothing uploaded
Each model’s weights download once and are cached, served from this site’s own origin. Upscale loads the first time you enhance a photo; the colorizer loads only the first time you switch Colorize on, so upscale-only visitors carry zero extra weight. The built-in samples are baked from the exact same pipeline, so they are interactive instantly with nothing to download. No backend, no account, no API key. Enhancement is best on small, compressed, or lightly blurry photos; on severe blur there is only so much any model can invent.