What damage this page can undo
Damage on a print is not one problem. It is a handful of different physical events that happen to a sheet of paper and an emulsion, and they leave marks with different widths, different shapes and different amounts of surviving information underneath them. A speck of platen dust is two pixels across and the picture continues underneath it. A fold has crushed the emulsion along a line. A torn corner has no picture underneath it at all, because the corner is in a different envelope.
The distinction that matters is width. Anything narrow enough that the picture either side of it still agrees about what should be there can be closed by looking at the neighbours: that is dust, hairline scratches, cat hairs on the glass, the speckle of foxing, and most of what a scanner adds on the way in. Anything wide has to be invented, and the local engine on this page does not invent — it will tell you it has nothing to work from rather than guess. There is now a second path beside it, taken deliberately and never by default: a model you choose to download, knowing its exact size, that draws a plausible continuation into a hole instead of averaging one. The word for what it produces is still invented, and nothing here calls it anything else. What this page ships is the narrow half done properly, the wide half done by something that guesses, and an account of which is which.
| Damage | How it is found | What happens to it |
|---|---|---|
| Dust and specks | Darker or brighter than its surroundings and narrower than the detector | Marked, then filled from intact picture within a few pixels |
| Hairline scratches | Fails the structure test and the median test together, along a thin run | Marked with a one-pixel margin for the shadow, then filled along the boundary normal |
| Fading and colour cast | Measured, not detected: each channel's histogram is read for its real endpoints | Stretched back to full range per channel, with an optional density curve |
| Tears, creases, missing corners | Wide enough that the fill has nothing local to work from | Smeared by the local fill, which says so. Redrawn by the optional model pass, which invents a continuation and says that |
Three things are worth saying plainly before you spend an evening on a photograph of your grandmother:
- Wide damage is guessed at, never recovered. The fill averages intact picture from within a few pixels of each marked one. Across a torn corner or a missing face there is no intact picture in the middle to average, so what comes back is a plausible smudge rather than a face. The optional model pass draws into those regions instead of averaging them, which is a better-looking answer and exactly as much of a guess: the paper recorded nothing there, so there is nothing for anything to recover. Where the gap held a face or a hand, treat the result as a reconstruction and say so if you pass the picture on.
- Silvering and mould are not damage to the image, they are damage to the emulsion. The metallic sheen that comes up on old silver-gelatin prints is silver that has migrated to the surface, and mould has eaten the layer that held the picture. In both cases the information is gone from the paper, not merely obscured on it, and no amount of arithmetic on a scan recovers something the scan never contained.
- No colour is added to a photograph that had none. Fade recovery stretches the range each channel actually holds. On a black-and-white print all three channels hold the same thing, so the result is a grey picture with its contrast back. Putting colour into a monochrome print is a different operation and it is described further down.
Working through a damaged scan
The order below is the order the engine runs in, and it does not vary between what is on screen and what gets saved. The preview works on a copy no more than about two and a half thousand pixels on the long edge because that is what redraws at the speed of a slider; when you save, the same five functions run over every pixel of the original.
- Open the scan and let it be read. Detection runs once, in a background thread, and produces a score for every pixel rather than a yes-or-no. On a twenty-megapixel flatbed scan that is a second or two. Everything afterwards is fast because of it.
- Set sensitivity by watching the overlay. The slider is a threshold on a reading already taken, so the mask redraws as you drag. Turn it up until the damage you can see is covered, then back off until the picture stops being marked. The live region announces the region count each time the mask settles.
- Correct the mask by hand. Two brushes: one marks, one unmarks. The plus and minus keys resize. With the picture focused the arrow keys walk the brush a pixel at a time, shift takes ten, and Enter marks where it stands — the whole tool is reachable without a mouse.
- Fill, and set the reach. Two pixels of reach is right for dust. Four suits a scratch with a shadow beside it. Past six the average stops being local and the fill starts to announce itself. Turning Fill off leaves the marks drawn over an untouched picture, which is the state to edit the mask in.
- Pull the fade back. Fade recovery and density both preview live, because they are three lookup tables rather than a pass of the engine. The marked pixels are excluded when the endpoints are measured, so a white scratch cannot define the white point of the photograph.
- Compare, then save. Holding the space bar puts the scan back as it arrived, with the mask hidden, for as long as you hold it. Saving re-runs detection at full resolution rather than scaling the preview's mask up, and writes PNG or JPG.
Twenty steps of history are kept. Z steps back and Shift + Z steps forward; M hides and shows the mask; A runs the automatic pass. History stores your brushwork run-length encoded rather than as flat planes, which is what makes twenty steps affordable on a phone.
Files it will open, and what it does with each
JPG, PNG, WebP, GIF, BMP, TIFF and ICO all decode here. TIFF earns its place more on this page than on most: it is what flatbed scanning software writes by default, and a scan is the usual way a damaged print arrives. HEIC is decoded by a WebAssembly codec that is fetched the first time one is opened and not before, so nobody pays for it who does not use it.
Orientation is settled before anything else happens. A two-pixel probe JPEG with a known rotation flag is decoded with the browser’s own orientation handling switched off, which reveals whether this particular engine applies the EXIF flag by itself. The flag is then applied by hand only if the browser did not — the alternative is a scan that arrives rotated twice on some machines and once on others.
| Limit | Figure | What the page does |
|---|---|---|
| File size | 120 MB | Refused, with the size it actually was |
| Soft pixel cap | About 32 megapixels, 16 on iOS | Offers a lighter working copy as a choice, with two equal ways forward |
| Hard pixel cap | About 100 megapixels, 40 on iOS | Refused, naming the scanning resolution that would have fitted |
| Bit depth | 16-bit PNG and TIFF | Reduced to 8 bits per channel on the way in |
| Animation | GIF and animated WebP | The first frame is taken and the rest discarded |
A CMYK JPEG — the kind a print shop’s workflow produces — gets no special handling on the way in, and that is worth knowing before you open one. Nothing here reads a file for its colour-space marker; what becomes of such a scan is whatever this browser’s own decoder does with it, which on some engines is a refusal and on others is a picture whose colours are wrong. If a scan opens looking inverted or unaccountably cold, save it again as RGB before repairing it, because otherwise the detector is reading a photograph nobody meant to make. Saving offers PNG or JPG. PNG is the better end for a picture you intend to keep working on, because a repaired JPG re-encoded as a JPG is a second generation of loss on top of whatever the scanner already cost you.
Questions worth asking first
- Why does it show me a mask instead of just fixing the photograph?
- Because the only irreversible judgement in this tool is which pixels are damage. Everything after that is arithmetic on pixels that have already been condemned. A scratch and a telephone wire look identical to a detector — both are thin, both are darker than what surrounds them, and only you know which one is meant to be there. So the marks are drawn first, in periwinkle, over an untouched picture, and nothing is filled until you have looked. If you would rather not look, the automatic pass turns on the safe settings and writes down what it did.
- The detector marked the eyelashes and the telegraph pole. How do I get it to stop?
- Pull sensitivity down first and watch the overlay thin out — the threshold is applied to a reading that was already taken, so the mask redraws while you drag rather than after. Fine detail in a portrait usually stops being marked somewhere around 30. Whatever survives that, take out by hand: switch the brush to Unmark and paint over it. Removal always wins over both detection and marking, so you cannot un-remove something by accident.
- A filled scratch left a soft grey band where it used to be. What went wrong?
- Reach is too high for the width of that scratch. The fill replaces each marked pixel with a weighted average of intact picture within that radius, and the further it reaches the less local the average becomes, until it is averaging two different parts of the photograph together. Drop Reach to 2 or 3 for anything hairline. If the band persists, the damage is wider than this fill is built for, and there are two honest answers rather than one: the model pass will redraw a region that wide, inventing a continuation rather than recovering anything, and the piece on what restoration cannot bring back explains where even that stops.
- The print is orange and pale. Will the fade slider put the colours back?
- It will put the contrast and the channel balance back, which on most faded colour prints is what reads as the colour returning. Each of red, green and blue is measured for where its data actually starts and stops, then stretched to the full scale — the orange goes because blue was occupying the narrowest range, not because anything decided the picture was too warm. What it cannot do is invent a hue that was never recorded. Three identical channels stretched are still three identical channels.
- My flatbed scan was refused for having too many pixels. What resolution should I have used?
- For a 6 by 4 inch print, 600 dpi gives about 8.6 megapixels and is comfortably inside every limit here. 1200 dpi gives 34.6 and will be offered as a lighter working copy; 2400 dpi gives 138 and is refused outright. The refusal is not about disk space, it is that a browser tab cannot hold several full-resolution copies of a picture that size at once. 600 dpi also resolves more detail than the emulsion of a domestic print from 1974 ever held.
- Does anything about my photograph leave this machine?
- No byte of it is sent anywhere, because there is nowhere for it to be sent — the site has no server that accepts a file and no code path that transmits one, and a check in the build refuses to publish it if one ever appears. The file is read by the browser, the work happens in a background thread on this device, and the repaired copy is written straight back to your downloads folder. Traffic does run the other way if you ask for it: pressing the control on the Redraw panel downloads two model files and the runtime that executes them, and the panel states their exact sizes before it does. Those are programs coming to your machine, not your photograph leaving it, and the privacy page lists every one of them.
Work that looks like repair and is not
A damaged print usually arrives carrying several complaints at once, and only one of them is damage. The others are separate jobs with their own methods and their own ways of going wrong, and running them from inside a restorer is how a photograph ends up looking restored instead of looking like itself. This page closes the marks and stops there, on purpose.
| The job | What it actually is | Why it is not on this page |
|---|---|---|
| Putting colour into a monochrome print | Invention of a hue that nothing ever recorded | Fade recovery stretches a range the scan already holds. On a grey print there is no separate range to stretch into a colour, so there is nothing here to build it from |
| Making a soft scan look crisp | A guess about the lens, the focus and the paper grain | Sharpening after a fill amplifies the fill along with everything else. It is a reasonable next step in another tool and a bad step in this one |
| Painting out the stranger at the edge of the frame | Removal of something real, intact and wanted by nobody | The fill is fed by picture within a few pixels of each mark. A person is wider than that by two orders of magnitude, and what comes back is a blur in their shape |
| Smoothing the face in the photograph | A judgement about a person, not about paper | Damage lying on top of a face is repaired here. The face underneath is left exactly as the emulsion recorded it, because nothing on this page is entitled to an opinion about it |
| Making a small scan into a large one | New pixels reasoned out between the ones you have | Scan the print again at 600 dpi instead. Enlarging a scan enlarges every scratch in it, and then the detector has a wider problem to solve than it started with |
None of the five is forbidden and none of them is hard. They are simply other tools, run at other moments. The sequence that works is: scan flat and honest, close the damage, and only then do whatever else you meant to do to the picture. Taken the other way round, every later operation is applied to the scratches as faithfully as it is applied to the photograph.
Nearby tools
Three of these open the same workbench with different controls in front, because a scratched print, a faded one and a torn one want different things within reach first. The fourth is the reading — four written pieces behind one address.
- Restore an old photographOpens on fade correction, for a print that has gone pale and warm.
- Scratches and dustOpens with detection turned up and the brush already out.
- AI photo restorationOpens on the model panel, for the damage a local fill cannot close.
- Written guidesFour pieces on scanning, damage width, colour and loss.
What the four cover, in the order they are listed there: which scanner settings decide whether a repair is possible at all, how print damage sorts by the amount of picture surviving underneath it, the point where recovering a measurement becomes inventing one, and the four kinds of loss that live in the paper rather than in the file.