Inventing detail rather than stretching pixels
Enlarging an image with ordinary software is a mathematical operation on the pixels present. Whatever interpolation it uses, it can only average between neighbours, so an enlargement is fundamentally a smoother version of the original with the same information spread over more area. Nothing new appears because there is nowhere for it to come from.
A super resolution model works differently. It has seen an enormous number of image pairs, each a high resolution photograph and its downscaled version, and has learned what kinds of detail typically disappear in that reduction. Given a small image it predicts what the larger one probably looked like, so an edge stays an edge and a texture is reconstructed as texture.
The important honesty here is in the word predicts. The output is a plausible reconstruction, not a recovery of information that was lost. On faces and text especially, look carefully before you trust the result, because a plausible invention can be confidently wrong.
Upscaling images
- Drop in one or more JPG, PNG or WebP files. The longest side of each must be 1024 pixels or less.
- Choose 2x or 4x.
- Run it. The first run at a given factor downloads that factor’s own model, so it takes noticeably longer than later ones.
- Download each result, a PNG at exactly the multiplied dimensions.
Why the input is capped at 1024 pixels
This model does not resize your image before working on it. Its preprocessing only pads the input up to a multiple of eight pixels and then runs the full transformer over every pixel at the original resolution.
That has a direct consequence: the time taken scales with the pixel count rather than being roughly fixed. Timed runs on a native, multi threaded setup came out around 85 to 90 microseconds per pixel for both factors, so a 512 by 384 image took about 17 seconds there. A single threaded browser build is meaningfully slower than that baseline.
Doubling the longest side quadruples the pixels and therefore quadruples the wait. Left uncapped, a photo straight off a phone camera would either take many minutes or effectively freeze the tab, which is a worse outcome than being told up front that the image is too large. The cap is generous for the actual use case, which is small photos, thumbnails and old scans, and an oversized image is refused rather than attempted.
If your image exceeds it, Resize Image brings it down first. That is less absurd than it sounds, since a large soft image often contains less genuine detail than its dimensions imply.
The two things it quietly changes
Transparency does not survive. The model’s preprocessing converts everything to plain colour and drops the alpha channel entirely, rather than compositing it onto white or any other background. A transparent PNG therefore comes back opaque, with whatever was behind the transparency now baked in as colour. If you need it back, Background Remover can cut it again after upscaling.
Dimensions needed correcting. Because the model pads its input to a multiple of eight and hands back the padded result, an image whose height is not a multiple of eight would otherwise emerge at an unexpected size with mirrored padding along the bottom and right edges. The output is cropped from the top left back to exactly the original dimensions times the factor, so what you download is a clean multiple with no artefact strips.
Where an upscale fits in a workflow
Upscale before you compress, not after. Running a photo through Compress Image first bakes compression artefacts into the input, and the model will faithfully reconstruct those artefacts at four times the size.
Crop first too, with Crop Image, since there is no point spending processing time on parts of the picture you are going to discard, and cropping reduces the pixel count that drives the wait. For an old photograph, Colorize Photo is the other model based restoration tool here and pairs naturally with this one. The rest are on the image hub.