How it works
The picture is decoded to raw pixels in your tab, and the crop is a row-by-row copy of the rectangle you dragged — no interpolation, no colour conversion, no rounding. Only after that is anything scaled, and only if the size you asked for differs from the crop’s own.
4000 × 3000 → crop 1200 × 1200 → export 1200 × 1200 — the bytes are copied; ask for 600 × 600 instead and Lanczos3 runs
So the step that can still cost you quality is the last one: writing those pixels as a JPEG re-compresses them however careful the crop was. Choose PNG and the crop comes back exactly as it went in. All of it happens here — nothing is uploaded unless you paste a picture’s address, and that field says so above the controls.
Cropping
The frame shows the output until you ask for the crop tool: the size, the padding and the background you have chosen, redrawn as you change them. Press Crop and the picture itself appears with a box over it — drag anywhere inside to move it, or one of the eight handles to resize. The side opposite the handle stays where it is, which is what makes a corner drag feel like dragging a corner. Arrow keys nudge the box a pixel at a time and Shift-arrow moves it ten, so a crop can be placed exactly without a steady hand.
Locking a shape constrains every drag to it. The lock survives running into the edge of the picture: rather than clamping the two sides separately — which would satisfy the boundary and quietly abandon the ratio at the exact moment you were relying on it — the box scales down as a whole until it fits.
Applying a crop changes the picture rather than producing a copy beside it: the frame shows what you now have, the box resets to all of it, and the next crop is taken from this one. Undo puts the previous version back, pixels and all, as many steps as you have taken.
Rotating and flipping
Quarter turns and mirrors cost nothing. Both are permutations: every pixel of the result is a pixel of the source, moved somewhere else. Nothing is averaged, nothing is interpolated, and the bytes that come out are the bytes that went in. Turn a photograph four times and you have the picture you opened back, byte for byte — which is the same promise the crop makes, for the same reason.
A free angle cannot work that way. A pixel grid turned 37° does not land on a pixel grid, so every pixel of the result is a weighted average of four neighbours, and the canvas has to grow to fit the corners the turn pushes outside the old one. Those corners are left transparent rather than painted: the background belongs to the export, where it is applied once, and a JPEG — which has no transparency to keep — flattens them onto it there. An angle that happens to be a whole number of quarter turns takes the exact path anyway, so typing 180 is the same press as the 180° button.
Every turn and every mirror changes the picture in the frame, exactly as an applied crop does, and goes onto the same undo stack. They are hidden while the crop tool is open: moving the picture out from under a box you are still placing would leave the selection somewhere nobody chose.
Three ways to name a size
"By size" takes two numbers in whichever unit you pick. Leave one blank and it follows the other, so "1200 wide" is one number rather than arithmetic. The shape it follows is the crop's, not the original picture's — using the original would letterbox every photograph you had just cropped.
"As a percentage" is relative to the crop, so 100% is the crop at its own size and nothing is resampled. Above 100% the picture is enlarged, which invents detail rather than recovering it.
"From a preset" is somebody else's number: a passport office's, a printer's, or a platform's. Document sizes are stored as millimetres and become pixels at whatever resolution you are working at, which is why changing the DPI changes the pixel size of a passport photo and not of an Instagram post.
Passport, print and social sizes
Document photographs are defined on paper, so they are stored here in millimetres with the resolution the issuing authority prints at. The pixel size follows from the two.
| Size | On paper | At 300 DPI |
|---|---|---|
| Bangladesh | Passport (45 × 55 mm) | 531 × 650 |
| Bangladesh | Stamp (25 × 30 mm) | 295 × 354 |
| Bangladesh | NID / Form (35 × 45 mm) | 413 × 531 |
| United States | Passport (2 × 2 in) | 600 × 600 |
| Schengen | Visa (35 × 45 mm) | 413 × 531 |
| United Kingdom | Passport (35 × 45 mm) | 413 × 531 |
| India | Passport (51 × 51 mm) | 602 × 602 |
| China | Visa (33 × 48 mm) | 390 × 567 |
Every document preset asks for "fit inside" rather than "fill", on purpose: a passport office rejects a photograph with the top of a head missing, and filling a box you typed is exactly how that happens. Social and print presets leave the choice to you.
These numbers change when the authority that publishes them changes them. Check yours against the form you are filling in — this tool can give you 45 × 55 mm exactly, and cannot know whether 45 × 55 mm is still what you were asked for.
Why the resolution is written into the file
A 45 × 55 mm passport photograph at 300 DPI is 531 × 650 pixels, and pixels are all a file normally carries. Every program that prints it then has to guess a resolution, and most guess 72 — which puts that photograph on paper at 188 × 229 mm. The pixels are right, the print is four times too big, and you find out at the counter.
So the resolution goes in the file. PNG carries it in a pHYs chunk, in pixels per metre; JPEG carries it in the JFIF segment, in dots per inch. Both are written here when the switch is on, and both are read by ImageMagick, Pillow, Photoshop, Word and every print shop's software.
WebP and AVIF have nowhere to put it, so the switch goes dead for those two rather than pretending. If you need a print at a guaranteed size, use PNG or JPEG.
Every control
The order the settings are applied in is: crop, then scale, then pad or clip, then flatten transparency if the format cannot hold it, then encode.
| Control | What it does | Reach for it when |
|---|---|---|
| Crop | Opens the crop tool over the picture and puts the size settings on hold. Apply crop then cuts the picture down to the box; Cancel leaves it alone. The shape lock stays available throughout. | You want part of the picture. Out of the tool the frame is a preview instead, which is why it is not always on. |
| Rotate | Turns the picture a quarter turn either way, or a half turn, without resampling it — or by any angle you type, which averages neighbouring pixels and pads the new corners. | The camera was held sideways, or a scan came in crooked. |
| Flip | Mirrors the picture left-to-right or top-to-bottom. Exact: the same bytes, in the other order. | A selfie came out backwards, or a scan was fed in the wrong way round. |
| Undo | Puts the previous version back, pixels and all. | You cropped too far. Every crop you have applied is on the stack, so you can walk all the way back to the file you opened. |
| Lock the shape | Constrains every crop drag to a ratio — a preset, the picture’s own, or two numbers you type. Switching between shapes re-derives the box from the one you last placed by hand, keeping its area and its centre, so 1:1 then 4:3 then 1:1 lands back where it started. | The output has to be a known shape, and you would rather drag once than nudge four edges. |
| Size the result | Switches between two typed dimensions, a percentage of the crop, and a published preset. | See the section above — each answers a different question. |
| Unit | Reads your two dimensions as pixels, inches, centimetres or millimetres. | The size you were given is on paper rather than on a screen. |
| Resolution | Converts physical lengths to pixels, and is what gets written into the file. | You are printing. 300 is what "print quality" means; 600 is for small photographs on good paper. |
| The chain between width and height | Linked, typing one side sets the other from the crop’s shape. Unlinked, each side takes whatever positive number you type. | Unlink it only to distort deliberately, or when a form gives you both numbers and they do not match the crop. |
| When the shapes differ | Chooses between padding the difference, cutting it, and stretching to hide it. | The box you asked for is a different shape from the crop. It has no effect when they match. |
| Zoom | Scales the picture inside the output box without changing the box. Past 100% the edges are pushed outside it and cut; below, background shows around them. | You rotated by a free angle and want the transparent corners gone, or you want a margin around the picture that the fit modes cannot give you. |
| Background | Fills the padding, and whatever the picture is transparent through. | You are padding to a shape, or writing a transparent picture into a JPEG. |
| Save as | Picks the encoder. "Original" keeps what you loaded, except GIF and BMP, which become PNG. | The form asks for a JPG, or you want the crop back losslessly and choose PNG. |
| Quality | Sets the encoder's quality from 10 to 100. Ignored by PNG, which is lossless here. | The file has to be under a size limit, or the default is visibly soft. |
| Write the resolution into the file | Adds a pHYs chunk to a PNG or sets the JFIF density on a JPEG. | The result is going to a printer rather than a screen. |
| Export | Encodes the picture at the size and format chosen and saves the file. There is no preview step — the line under the buttons already says what will come out. | You are done. |
What actually costs you quality
Three separate things, and only the first is free. Cropping costs nothing — the pixels are copied. Scaling costs a little, and costs it once: Lanczos3 is about as good as a resampler gets, but an enlargement invents detail and a large reduction discards it, and neither is reversible.
Re-encoding is the one people miss. Saving a JPEG as a JPEG re-compresses it even if you changed nothing, and the losses compound each time. If the source was a JPEG and the destination has to be one, do the crop and the resize in a single pass here rather than in three tools in a row.
If you want the cropped pixels back exactly as they were, ask for the crop’s own size and save as PNG. The line under the buttons says so before you press Export, not after.
Limits
One file at a time, up to 25 MB and 40 megapixels — four bytes a pixel is what has to fit in the tab, and a small file can hold a very large picture. The output is capped at the same megapixel count, because a tiny crop enlarged to twenty thousand pixels square asks for more memory than the source ever did. Fetching a picture by its address is capped lower still, at 20 MB, since those bytes cross the network twice.
What leaves your browser
Choosing a file, dropping one, and pasting one all stay in this tab. The picture is decoded, cropped, scaled and encoded by WebAssembly running in the page, and no request carries any of it anywhere.
Fetching a picture by its public address is the exception, and the field says so above the controls. The address you paste is sent to our server, which downloads the picture and hands the bytes back — because a cross-origin image drawn into a canvas taints it, and the tab is then not allowed to read its own pixels. The site you name sees our server's address and a user agent naming this site, never your address. Nothing about the fetch is stored beyond a counter that says how often somebody fetched, and never who.
