AIDeblurA PictureEditor.com tool

One pass over a photograph that came out blurred

The frame is measured, the smear is estimated from it, and the pass runs once. Nothing here asks you for a number.

Pixels stay in this tab; only the file you save leaves it.
Drop a photograph here, or click to choose oneOpen a photograph that came out blurred. One pass runs, here, and there is nothing to adjust afterwards.

No blurred frame to hand?

What a deblurring model actually does

Blur is not damage laid on top of a photograph. It is the photograph itself, summed along a path: every point of the scene was recorded across a short line of sensor cells instead of one, and what came back is the average. Undoing that means deciding which of the many scenes that could have produced this average is the one that did — and that is underdetermined, always, no matter how much arithmetic is thrown at it.

The classical answer chooses the scene that is most consistent with a measured smear, which is what the pass on this page does. A trained network chooses differently: it has seen several thousand pairs of sharp and smeared frames and has learned what edges, skin, brickwork and printed characters tend to look like before they were smeared, so it can commit to detail that the arithmetic will not. That is a real advantage and it is also the whole risk, because a prior is a belief about what was probably there. The word for the output is therefore reconstruction, and this page uses that word deliberately: nothing here is a recovery, because recovery is a claim about information and the information is not in the file.

No image data is transmitted from this page in either direction: a pass reads a bitmap the browser has already decoded and writes a file you save for yourself, and the only thing that would ever arrive over the network is a set of model weights, which this build does not yet have a published release to fetch.

Five steps, four of which happen without you

  1. Open the frame that failed. Drag it in, paste it from the clipboard, or choose it from disk. JPG, PNG, WebP, AVIF, TIFF, BMP and ICO decode straight away; a HEIC from an iPhone pulls a decoder of about a megabyte and a half, and only when a HEIC actually turns up.
  2. Wait for the two numbers. Before any control appears, the frame is measured at 512 pixels and this processor is timed on the identical arithmetic the pass will run. The rail then states what kind of failure it is looking at and how many seconds the pass should take here.
  3. Press the one control. The smear it measured supplies the angle and the extent, so there is nothing to type and nothing to drag. Above 1024 pixels the work is done on a copy at that size by default, with the full frame offered beside it as a slower second choice.
  4. Hold Space and judge it. The frame as it arrived sits under the Space key, and under a control in the rail for anyone on a touch screen. A reconstruction that cannot be compared against its input cannot be assessed at all.
  5. Save it, or keep the original. Export writes the source format or PNG. The frame that arrived is kept in memory throughout and can be saved unchanged instead, which is the only undo a single-operation page needs.

The download, and why it is this large

The learned pass this domain exists for is NAFNet, in its single-image motion-deblurring form, exported to ONNX. Upstream is dual MIT and Apache-2.0, the export is MIT, and the training pairs come from the GoPro set under CC BY 4.0. That chain is a commercial question rather than an aesthetic one — a corpus licensed against commercial use would make an advertising-funded page unshippable at any quality, which is why a stronger network with an academic licence was rejected outright and is named on the weights page.

The file is roughly 92 megabytes, and the reason is that there is no compression to apply: the weights are the product. On top of it sits the WebAssembly runtime that executes the graph, just under 14 megabytes, served from this domain rather than from anywhere else so that the number of hosts this page talks to stays at one. Both would land in Cache Storage under a bucket whose name carries the release, so a new set of weights is a new bucket rather than a stale path, and both are written only after a complete body has been read — a truncated graph served from disk forever is far harder to work out than a transfer that plainly failed.

None of that has happened yet. No export is published for this build to fetch, so no control here offers a download and no byte figure is printed as though it had been read off a served file. Earlier estimates on this network were wrong by between two and eight times, which is exactly why a figure that has not been measured is not printed as one.

Where it works and where it fails

Decodes directlyJPG, PNG, WebP, AVIF, TIFF, BMP and ICO. Orientation is settled at decode with a two-pixel probe, so a phone photograph does not end up rotated twice on Safari.
Decodes lazilyHEIC, through a WebAssembly decoder of about 1.5 MB fetched the first time a HEIC is opened and never before.
CapsAbout 32 megapixels before a lighter working copy is offered instead, 16 on an iPhone or iPad. A hard refusal at 100 megapixels, 40 on iOS. Files above 120 MB are declined before decoding starts.
Working copy1024 pixels on the long edge by default. The full frame is offered beside it with its own estimate, because the cost scales with the pixel count and nothing else.
Bit depthSixteen-bit sources are reduced to eight before the pass. The depth does not survive, and saying so is cheaper than letting somebody find out from a histogram.
AlphaSplit off before the arithmetic and re-attached byte for byte. A cut-out arrives and leaves with the same transparent surround.

What the pass cannot do is worth more attention than what it can, because the failures are confident rather than obvious:

  • Movement past roughly a tenth of the frame width is outside anything this method or a trained one has to work with. What comes back will look decided and will be wrong.
  • Defocus from a wide aperture at close range is a different optical failure from a hand-held smear, and the measurement reports it as such rather than running a pass shaped for the wrong problem.
  • Pixelation and mosaic are not blur. Information discarded in blocks is gone, and the block period is printed in the rail so that nobody spends a download finding out.
  • A frame that is merely soft has nothing spread out to gather back up. That is a sharpening job rather than a reconstruction job, and it belongs to the console at sharpenpicture.com.
  • Noise is amplified alongside detail. Every round of correction is held inside a band for exactly this reason, and the band is why eight rounds is where this stops rather than eighty.

The distinction in the fourth line is the one that decides whether this page is the right address at all. A photograph you can already read properly and would like crisper is a judgement about quality, and sharpenpicture.com keeps the whole console for it and downloads nothing to do it. A photograph you cannot read — the sign is illegible, the face is smeared — is a frame that failed, and that is this one.

Questions from people holding a ruined photograph

Is this the AI model, or something else?
Something else, for now, and the page would rather say so than let you assume. The learned pass this domain is built around needs a published set of weights, and no export has been uploaded for this build to fetch. What runs today is arithmetic: the smear is measured off your own frame, a kernel of that shape is built, and the frame is walked back through it eight times. It recovers edges that are still present as gradients. It cannot invent detail, and it will not pretend to.
Why does the button not ask me for a radius or an angle?
Because the frame already contains both and the measurement reads them out of it. Gradient energy collapses along the axis a camera moved through, so the direction is the axis that lost the most, and the extent is the separation at which that loss stops growing. Asking a person to guess two numbers a picture can be asked for directly is a console, and a console for exactly this is what sharpenpicture.com is.
Why is a photograph of a document a good case?
Flat printed matter shot by hand indoors fails in the one way this method handles: the page is a plane, so the whole frame carries the same smear, and the strokes that make a character legible are high-contrast against paper. A scan that is merely low resolution is a different problem with a different answer, and no amount of passing over it adds strokes that were never sampled.
Can a blurred face be made identifiable?
No, and treating any result here as identification would be a serious mistake. A pass moves energy that the sensor recorded back to where it came from. Where a face crossed more than a few percent of the frame during the exposure, the features are not attenuated, they are gone, and anything that appears in their place is the arithmetic's best guess at a face rather than that person's face.
What happens to a pixelated or mosaic region?
Nothing useful, and the measurement says so before you spend time on it. Blocks are a different destruction from a smear: a smear redistributes what was recorded, while a mosaic averages a square down to one value and throws the rest away. Energy that has been discarded in blocks is not sitting somewhere waiting to be moved back, and no pass recovers it.
Does anything leave this tab?
No image data does, in either direction. The pass reads a bitmap the browser has already decoded, runs in a worker, and hands back an array you save yourself. The one thing that would ever arrive over the network is a set of model weights, fetched from the network's own object store and only after a control naming the exact byte count has been pressed — and this build has no published release to fetch.

Read next

Four addresses, and they divide cleanly. The writing route answers a different question from this one, because legibility is a criterion rather than an impression. The weights page carries the licence chain, the provenance and the measured figures in public. The two long reads are the arguments this page only has room to state.