What one tap does
You tap a place. The tool draws a disc around it, at a size it works out from the long edge of your file, and rebuilds what is inside that disc out of the picture immediately around it. Nothing is invented. Every value written came from somewhere else in the same frame, a few dozen pixels away.
Six of those per photograph. Then it stops, and says so. There is no pass number and no stack of layers — the placed fixes are a flat numbered list, removing one takes it out of the list, and undo walks back through everything.
A tap cannot remove a person, a sign or a car. It fills a small disc from what surrounds it. Put it over a face, a fence or a line of brickwork and it will smear, and you will see the smear.
The seam is there so that claim can be checked rather than believed. Drag it across and the same frame arrives twice, once as it came off the camera and once as it stands now, with a numbered tag wherever something was placed.
The eight fixes
| Fix | What it is for | What it does |
|---|---|---|
| Spot | A speck of dust, a sensor mark, a smear from the glass, a raindrop, a crumb on the table. | Rebuilds the disc from a ring of untouched picture around it. |
| Heal stroke | A stray hair, a scratch across a print, a thin wire against the sky. | Fills a short stroke you drag along the mark, from the picture on either side of it. Fourteen patch-widths long at most. |
| Edge dab | Something small pressed against the frame border: a pole tip, a bin corner, a stray fingertip. | Anchors the patch to the border it touches, so one side of it lies outside the picture and there is less to work out. |
| Lift | One corner or one side that fell into shade while the rest of the frame is fine. | Raises the dark end of the tone curve across four times the disc, fading to nothing at the rim. Press and drag instead of tapping to size one oval lift, up to 40 % of the frame. |
| Red-eye | A flash-lit pupil that came out red. | Pulls the red down to the level of the other two channels inside a small disc, feathered at the rim. Refuses when there is no red under the tap. |
| Level | A frame that sits a degree or two off true. | Reads the strongest near-upright and near-flat structure, turns the frame once, and crops inward so no blank corner survives. |
| Patch | A small object in the way: a bottle cap, a sticker, a bird on a wire. | Fills a loop you draw round it from the picture outside the loop. At most 4 % of the frame and six disc-widths across; refused, with nothing changed, if the object carries on past the line. |
| Whiten | Teeth that came out yellow in a smile. | Inside a disc a little wider than a spot, only bright, low-colour pixels lose most of their yellow and gain a little lightness. Lips, gums and skin are left alone, and a tap with nothing to whiten under it is refused. |
Keys one to eight arm them. Escape disarms. With the stage focused the arrow keys walk a crosshair a pixel at a time, ten with Shift held, and Enter places the armed fix where the crosshair is standing. That is the whole tool without a pointer.
What is deliberately absent from a fix: hardness, feather, opacity, strength, a clone source point, a painted mask, a layer list and a blend mode. The one drawn shape is the Patch loop, and it has a ceiling written into the code: 4 % of the frame, six disc-widths across.
Then the whole frame
The stepper across the top runs Fix, Light, Colour, Detail, Finish. Every step is one click away at any time, and every step has its own reset. The seam can compare against the photograph as it arrived, or against the result without the step you are on, so you can see what one step is doing on its own.
- Light: an Auto button that reads the frame and writes brightness, contrast, highlights, shadows, warmth and saturation into the sliders — as numbers, so you can see what it did and move any of them. Undo takes the lot back.
- Colour: a white-balance pick (tap something grey), warmth, tint, saturation and vibrance, with six starting looks drawn from your own photograph.
- Detail: smoothing that leaves strong edges alone, on skin-coloured areas, on an oval you place, or everywhere; and a light sharpen with a noise threshold.
- Finish: crop, with square and portrait shapes for profile photos, a straighten dial that offers the level reading and crops inward so no empty corner is saved, a left-to-right flip, a long edge or an exact pixel box, a KB limit, and the exact size of the file before you save it — as JPG, PNG or WebP.
Hold Space, or the compare button, or press and hold the picture on a phone, to see the comparison side for as long as you hold. Z switches between fit and 1:1. The square brackets step through the five steps.
What arrives and what doesn't
JPG, PNG, WebP, AVIF, BMP and ICO are decoded by the browser itself, and TIFF where the browser has a decoder for it, which today means Safari. A HEIC — which is what a recent iPhone writes unless it was told otherwise — pulls a WebAssembly decoder down with it the first time one is opened, and at no other moment. Opening this page fetches nothing of the kind.
Past about thirty-two megapixels, or sixteen on an iPhone or iPad, you are offered a reduced working copy with two buttons of equal weight rather than being told no. Past a hundred, or forty on those devices, the file is turned away and the measured figure is printed in the sentence that turns it away. Files stop at 120 MB.
- A moving GIF or WebP is declined, because a tap fixes one frame and you would get one frame back.
- Transparency survives. A fill reads only from neighbours that are fully opaque, so a hole in a PNG does not come back grey.
- A JPG carrying four print channels is converted by the browser on the way in, and the page says so, because the colours have already moved by then.
- Colour is handled as sRGB throughout. A Display-P3 file loses a little saturation on the round trip.
- Orientation is settled before the stage sees a pixel, using a two-by-one test image to find out whether this browser already applied the camera's flag.
Every request a visit to this page can make: the page itself, its scripts, its two typefaces and the background-thread worker, all from touchupphoto.com; the HEIC decoder, from the same origin, only when a HEIC is opened; and, once a measurement property is configured, Cloudflare's page-view beacon on touchupphoto.com only. None of them carries your photograph, its name or anything you did to it. The contact page sends a note only when you press Send.
Out comes a JPG at a quality you set between fifty and a hundred, sitting at ninety-two until you move it, or a PNG if you pick it — and always a PNG when the file you opened carried transparency, because JPG cannot hold it. The export replays the same fixes and the same finishing values against the full-resolution pixels rather than scaling the preview up, so the file you keep is the file you approved.
Questions people ask
Why will it not let me tap the same place twice?
Because a second pass over one patch is how a one-tap tool turns into a region tool. The fill gets one go at each disc. If one go was not enough, the answer is a different kind of program, not a second attempt here.
Where is the size control?
Not on a tap, and that is the product rather than an omission. The disc is the long edge of your file divided by fifty-six, held between fourteen and fifty-six pixels. Once a size can be dragged, so can a shape, and then a mask, and then this is a different kind of program.
It said the thing was too big. What now?
The fill checks the ring of picture just outside the disc before it writes anything. When that ring still holds the thing you tapped, the thing carries on past the patch and one disc cannot close it. Nothing is changed when that happens. A person, a car or a building is beyond this tool; a short line is a Heal stroke instead.
Is my problem in one place, or in the whole frame?
Drag the seam and watch the parts you did not tap. If the untouched parts look wrong too, the fault is global, taps will chase it forever, and the Light step is the answer. One spot, or the whole picture is thirty seconds on how to tell.
Does the photograph go anywhere?
No. There is no address on this page for a picture to be sent to. The file is decoded by the browser, each fix is written in the same tab, and the result reaches your downloads folder from memory.
What happens to the camera information?
When you open a JPG and save a JPG, Save as offers three choices: keep the camera details, keep them without location, or remove them all. Keep without location is the default, so GPS coordinates are dropped unless you choose otherwise. Orientation is always written as upright, because the rotation is already in the pixels and a second one would turn the picture twice. A PNG is written without camera details.









