The flipper works on the entire frame — every pixel swaps sides and there is no selection tool. Flipping a single element therefore means cropping it out, flipping the crop, and pasting the result back over the same rectangle.
That last step is where people get caught: the crop box stays put, but the element inside it lands mirrored, so its mass moves by width − 1 − 2 × offset, where offset is how far the element's centroid sits from the crop's left edge. A crop centred on the element leaves it in place.
Flip Horizontal moves each column of pixels to the column mirrored across the centre of the frame. Column 0 goes to the last column, column 1 to the second-last, and so on until the two meet in the middle. Nothing is cropped, nothing is resized, and nothing is exempt.
| Measurement | Before | After one Flip Horizontal |
|---|---|---|
| Frame | 1600 × 1200 | 1600 × 1200 |
| A 20 × 20 marker at x 100–119 | x 100–119 | x 1480–1499 |
| Pixels identical to a pure mirror | — | 1,920,000 of 1,920,000 |
| Columns that stayed where they were | — | 0 of 1,600 |
The marker's new position is the whole story: 100 became 1480, which is 1599 − 119, the far edge of the marker landing exactly where the mirror puts it. There is no region of the picture that the button treats differently from the rest.
The page offers a file picker, two flip buttons, an output format control and a download button. There is no crop, no lasso, no mask. So an element gets flipped by taking it out of the frame first:
Define offset as the horizontal distance, in pixels, from the left edge of the crop to the element's centroid — the balance point of its pixels. A mirror inside a crop that is w pixels wide puts that centroid at w − 1 − offset instead, so the element travels:
shift = w − 1 − 2 × offset
The three crops below were each flipped with the tool and pasted back over their original rectangle. Both numbers are given: what the element actually did, and what the formula says it should do.
| Crop width | Offset from left edge | Measured shift | Formula | Outside the box |
|---|---|---|---|---|
| 240 px | 75.92 px | +87.161 px | 87.161 px | max channel diff 0 |
| 240 px | 115.92 px | +7.161 px | 7.161 px | max channel diff 0 |
| 241 px (centred) | 119.92 px | +0.161 px | 0.161 px | max channel diff 0 |
Read the first two rows together: same crop width, different offset, and the shift changes by exactly twice the difference in offset. The third row is the case worth aiming for — a crop whose centre line passes through the element's centroid, where the element barely moves at all.
Every figure above came from this site's flipper in a desktop Chromium browser, loaded through the page's own file picker and exported as PNG so no compression entered the comparison. Nothing was taken from another site or worked out on paper alone.
For the whole-frame test the canvas was 1600 by 1200 pixels of random noise with a solid 20 by 20 red marker at x 100 to 119, y 100 to 119. The noise matters: with flat colour, columns of identical pixels would look unchanged by accident. After one Flip Horizontal the marker occupied x 1480 to 1499 and y 100 to 119 — 1599 minus 119, exactly where a mirror sends it. Comparing the exported file against a mirror of the original pixel by pixel, all 1,920,000 pixels matched and the largest single channel difference was 0. Zero of the 1,600 columns stayed in their original position, which follows from the width being even: a 1600-wide frame has no middle column for a pixel to sit on.
For the element test the canvas was white with a right-pointing arrow, a rectangle plus a triangle, whose bounding box ran from x 460 to 580 and y 340 to 420. Its centroid, computed from the mask of non-white pixels, sat at x 515.92 — that is the number the offsets below are measured from, not the centre of the bounding box.
Three crops were taken and each went through the tool as a separate file, then was pasted back over its own rectangle with the box coordinates unchanged. Outside the pasted rectangle the largest channel difference was 0 in all three cases, so the re-paste touches nothing but the box.
The first crop was 240 pixels wide starting at x 440, putting the centroid 75.92 pixels from its left edge. After the flip and the re-paste the centroid sat at 603.08, a move of +87.161 pixels. The formula gives 240 − 1 − 2 × 75.92 = 87.16, and the two agree to the third decimal because the shift is arithmetic rather than an estimate.
The second crop was also 240 pixels wide but started at x 400, so the centroid was 115.92 pixels in. It moved +7.161 pixels, against a formula value of 7.161. The third crop was 241 pixels wide and positioned so its centre line fell on the centroid: the element moved +0.161 pixels, which is the sub-pixel residue of the centroid sitting half a pixel off the exact centre.
What the formula implies is worth stating plainly: the shift is zero when the offset equals half the crop width minus half a pixel, and it grows by two pixels for every pixel the element sits further from that centre line. Widening the crop does not help on its own — widening it symmetrically leaves the offset ratio unchanged and the shift unchanged with it.
What we did not test, and will not claim: crops narrower than the element, where the box clips it and the arithmetic above stops describing what you see; feathered or semi-transparent edges, which a hard crop does not reproduce; rotation combined with a crop; animated files, where only the first frame survives; and the paste-back step itself, which happened in an ordinary image editor because the page has no paste function to test.
Three limits are worth knowing before you start. The crop edge is hard, so an element that fades into its background will show a rectangle where the two versions meet. The element is clipped by its own box, so a crop that cuts into it cannot be recovered by flipping. And each save is a fresh encode, so a crop flipped and pasted back into a JPEG costs a generation of quality that the whole-frame flip would not have cost.
Flip an image horizontally now — free, no uploadThe whole frame. Every pixel swaps to its mirrored column and there is no selection tool in the page, so a 1600-pixel-wide picture moves all 1,920,000 of its pixels and leaves none of its 1,600 columns where they were.
Crop the element out, flip the crop, then paste the flipped crop back over the same rectangle. The crop box stays where it was; what moves is the element inside it, by the distance described below unless the crop is centred on the element.
Because the crop was not centred on it. A mirror inside a crop puts the element's centroid at width − 1 − offset instead of offset, so it travels width − 1 − 2 × offset. In our test a 240-pixel crop with the centroid 75.92 pixels from the left edge moved the element 87.161 pixels to the right.
No. In all three crops we tested, the maximum channel difference outside the pasted rectangle was 0, so the pixels around the box were untouched.
No. The page has a file picker, two flip buttons, an output format control and a download button, and no cropping or selection of any kind. The crop has to happen before or after the flip, in whatever editor you already have.