Our own photo, blurred on purpose — the ring shows this site’s fix.

Unblur an image in seconds

Fix camera shake and missed focus in a blurry photo. Drop it in, the fix starts by itself, and you download the sharp copy.

or drop it anywhere on this page · paste with Ctrl+V

No blurry photo handy?

Free · No sign-up · Photos stay on your device

Our own photo, blurred on purpose — the ring shows this site’s fix.

Three ways a frame fails, drawn here and measured with the same code

Nothing below is a photograph somebody chose. The frame is drawn by this page, broken in the way the segment names, and — if you press the control — put through the identical worker the button in the rail uses. Two of the three are cases where the answer is no.

Camera shake. Every pixel averaged across nine cells along one axis, which is what a hand-held exposure does.

The case the pass is shaped for. The energy is still in the frame, moved sideways, and a kernel of the measured shape walks most of it back.

These numbers are this processor’s, measured now. What a learned pass would cost to fetch and what it is licensed under are on the weights page.

Choose photo

Three steps

From blurry to sharp in under a minute

  1. Choose a photo

    Tap the button, drop a file, or paste a screenshot. Phone photos, PNG, WebP and HEIC all work.

  2. The blur is found and fixed

    It works out how the camera moved or where focus slipped, then undoes it. Nothing for you to set.

  3. Download the sharp copy

    Compare with a swipe, tweak the strength if you like, and save it as JPG, PNG or WebP.

Questions

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 site is built around needs a published set of weights, and no model has been published for this build to fetch. What runs today is a classical pass: 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 adds no learned detail, but it can create halos and false edges, so compare at 100% before you keep a result.

Where do the angle and length come from?

From the frame first. Gradient energy collapses along the axis a camera moved through, so the direction is the axis that lost the most, and the extent is where the correlation of differences along it first turns negative. That reading is the Auto kernel. When the measurement is wrong — two subjects moving differently, a smear that curves — the dial lets you set both by hand and the ghost line keeps the measured one in view.

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, usually in a background worker (the status bar says when it is not), and hands back an array you save yourself. What does arrive is the page's own code, a HEIC decoder if you open a HEIC, and — only when you press Find faces — a small face detector and its runtime, fetched from our model file server and this site. None of those requests carries anything about your photograph.

Three failures, and which of them a pass can undo

The measurement names the damage before any control appears, and two of the three answers are no. These are the same three degradations the bench above applies to its own drawing, described in the same words the rail uses on your file.

  1. Camera shake

    Worth running

    Every pixel averaged across nine cells along one axis, which is what a hand-held exposure does.

    The case the pass is shaped for. The energy is still in the frame, moved sideways, and a kernel of the measured shape walks most of it back.

    Blurred writing — the case where the question is whether four characters can be read.

  2. Out of focus

    Runs, with ringing

    Spread symmetrically by a nine-pixel box on both axes, as a lens focused past the subject spreads it.

    A pass helps a little and lies a little. There is no axis to undo along, so the correction has to guess at direction and pays for it in ringing along the strongest edges.

    Reading a photographed document — telling a soft focus apart from a hand that moved, before spending a pass on it.

  3. Block grid

    Declined before it starts

    Each eight-by-eight square replaced by its own average, which is what heavy compression and mosaic both do.

    No useful improvement, and the measurement says so before you spend a second on it. The values inside each square were discarded, not displaced, so there is nothing left to gather back up.

    Blur, pixelation and mosaic — why discarded values are not recoverable however the pass is tuned.

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.

Your photograph is decoded, measured and reconstructed in this browser tab and is never uploaded. The page fetches its own code, a HEIC decoder if you open a HEIC, and a face detector only when you ask for one; none of those requests carries anything about your photo.

From a failed frame to a saved reconstruction

  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. Read the measurement. The frame is measured on its working copy and this processor is timed on the identical arithmetic. Auto then names the failure — movement, missed focus, a block grid or nothing much — and, when there is a smear worth undoing, the reconstruction starts on a copy no longer than 1024 pixels.
  3. Adjust the kernel if it is wrong. The measured smear is drawn on a dial: drag its knob round for the direction the camera moved and outward for how far, or type the angle and length. Motion and Defocus override Auto; every change is one undo step.
  4. Hold the reconstruction back where it hurts. Strength blends between the original and the reconstruction, the artifact guard clamps halos to what the neighbourhood allows, a painted region limits the work to part of the frame, and face ovals get their own gentler settings.
  5. Judge it at 100%, then save. Split, result or original on the stage; hold Space for the original. The loupe renders source pixels through the same code the export uses, beside two strengths side by side. Save renders the full frame band by band — or keep the original, byte for byte.

The download, and why it is not offered yet

The learned pass this domain exists for is NAFNet in its single-image motion-deblurring form, exported to ONNX, and no export of it is published for this build to fetch. So no control on this page offers a download, no byte figure is printed as though it had been read off a served file, and the button in the rail runs the classical pass instead. Model sizes quoted before a file exists are routinely wrong by several times, which is the whole reason an unmeasured figure is not printed as a measured one.

The licence chain, the corpus, the runtime that would execute the graph, what would be written to Cache Storage and how to clear it again are all one page away rather than four paragraphs down this one: how it works.

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 copyThe preview runs on a copy no longer than 1024 pixels. Saving renders the full frame in bands, with a time estimate for this processor shown before you press it.
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, so the measurement says “nothing much to undo” instead of running a deblur it does not need, and offers the Sharpen engine instead.
  • Noise and JPEG blocks are amplified alongside detail. Every round of correction is held inside a band, the artifact guard clamps what is left, and more rounds past the default mostly buy more of both.

The distinction in the fourth line decides what this page does with your photograph. A photograph you can already read properly and would like crisper is a judgement about quality, and a reconstruction would only add ringing to it. A photograph you cannot read — the sign is illegible, the face is smeared — is a frame that failed, and that is what the pass is for. Not sure which you have? Check whether the photo is blurry first; it measures and changes nothing. Soft rather than smeared? Sharpen it. A folder of them? Triage the whole folder.

Read next