Edit image
Crop, rotate, flip, and tune one static image without uploading it.
Adjustments
About this local photo editor
Choose a JPEG, PNG or WebP of up to 25 MB, then set a crop by typing X, Y, width and height in the image’s own pixels, turn it in quarter turns, flip it horizontally or vertically, adjust brightness, contrast, greyscale and sepia, and save as WebP, JPEG or PNG. Everything is applied in a single canvas pass and the saved file is decoded again to confirm its dimensions.
This is a precise editor rather than a creative one. The crop is four numbers, not a dragged box; the rotation is quarter turns, not an arbitrary angle; the adjustments are percentages you can write down and repeat. That makes it the right tool when you already know what you want — a crop from a specification, the same treatment across a set of images, a screenshot trimmed to exact coordinates — and the wrong tool when you want to work by eye. There are no layers, no brushes, no healing and no text. What there is, is an operation that does exactly the same thing every time you give it the same numbers.
Step by step
- 1Choose the imageOne JPEG, PNG or WebP up to 25 MB. The crop boxes fill in at the image’s full size, so you narrow down from there.
- 2Set the cropX and Y are the top-left corner of the crop in the image’s own pixels, measured from the top-left of the picture; width and height are its size. All four are whole numbers and the rectangle must stay inside the image.
- 3Turn, flip and adjustRotate steps in quarter turns; Flip H and Flip V mirror the image and can both be on at once. Brightness and contrast run from 0 to 200 per cent, greyscale and sepia from 0 to 100 per cent, and all four are applied in one pass.
- 4SaveWebP, JPEG or PNG, with a quality slider from 10 to 100 for the lossy formats. The saved bytes are decoded again and the dimensions compared with what was drawn before the download is offered.
The order the edits are applied in
It matters, because the same settings in a different order give a different picture. Here the crop is taken from the source first, then the rotation, then the flips, then the colour adjustments, then the encode. A quarter turn of 90 or 270 degrees swaps the output width and height, so a 400 by 300 crop rotated once comes out 300 by 400.
The adjustments themselves are applied as a single filter in a fixed order — brightness, then contrast, then greyscale, then sepia — in one drawing operation rather than four passes over the pixels. A value outside its range is clamped rather than refused, so a brightness of 240 is treated as 200.
A typed crop, and what you give up for it
There is no drag handle and no aspect-ratio preset. A fixed-ratio crop means working the numbers out yourself, and a crop chosen by eye means reading coordinates off something else first.
In exchange, the same numbers give the same crop every time. That is what you want when a specification says a 1200 by 628 region starting 40 pixels down, when you are cropping a set of screenshots identically, or when you need to redo the same crop next month and get a pixel-identical result. The four boxes start at the image’s full size, so you are always narrowing an already-valid rectangle rather than writing one from nothing, and a rectangle that would fall outside the image is refused with the image’s real dimensions quoted back.
Limits, formats and what is not carried across
One JPEG, PNG or WebP of up to 25 MB goes in; WebP, JPEG or PNG comes out, with a quality slider from 10 to 100 that applies to the lossy formats and is disabled for PNG. The finished image may be no larger than 64 megapixels, counted after the crop and any quarter turn. Because the result is drawn onto a canvas and re-encoded by the browser, no EXIF is carried across — no camera settings and no GPS location — so keep your original if you need that information. Some browsers answer a request for WebP with a different format; when that happens the tool reports the format the browser really produced rather than naming the file for a format it is not.
Background removal is also on this screen — a checkbox with an AI subject mode and a solid-colour mode. This page is one of the two on the site served a slightly relaxed policy so that the model can be loaded from this site; everything else here needs no network at all.
Why the photograph stays on your device
Every response from this site is served with a Content Security Policy whose connect-src directive is set to none. That is an instruction to your browser rather than a promise in marketing copy, and the browser is what enforces it: while this page is open it cannot open a connection to anywhere, so there is no route by which your image could be uploaded. e2e/egress-proof.spec.ts asserts the served header and then attempts to send data out by every path a page has — including a real image through a real tool — and requires every attempt to be refused. It runs on every build.
The other half of it is that the code has nowhere to send anything from. lib/tools/local-source-policy.test.ts reads every source file under lib/tools, workers, components and app on every test run and fails if any of them contains fetch, XMLHttpRequest, WebSocket, EventSource, sendBeacon or a peer connection, or even a remote address written in a comment. An upload cannot be added here by accident, because the file that would contain one cannot be committed.
Questions people ask
- How do I set the crop area?
- X and Y are the top-left corner of the crop in the image’s own pixels, and width and height are its size. All four must be whole numbers, width and height at least 1, and the rectangle has to stay inside the image; if it does not, the run is refused and the message quotes the image’s real dimensions in pixels.
- Is there a drag handle or a square or 16:9 preset?
- No. Crops are typed as numbers and there are no ratio presets, so a fixed-ratio crop means working the numbers out yourself. In exchange, the same numbers give the same crop every time, which a dragged box cannot promise.
- Which formats can I save as, and what does the quality slider do?
- WebP, JPEG or PNG, with a quality slider from 10 to 100 per cent that applies to the lossy formats. Because JPEG has no transparency, the canvas is filled white before the image is drawn when you save as JPEG. Some browsers answer a WebP request with a different format; when that happens the tool reports the format the browser really produced rather than naming the file for a format it is not.
- What are the size limits?
- A source image of up to 25 MB in JPEG, PNG or WebP, and a result of no more than 64 megapixels — that is width times height after the crop and any quarter turn. Anything larger is refused with the limit named rather than failing silently in the canvas.
- Is EXIF metadata kept in the edited file?
- No. The image is drawn onto a canvas and re-encoded by the browser, and nothing here writes metadata back, so the saved file carries no EXIF from the original — no camera settings and no GPS location. If you need that information, keep the original file as well.
- Can I rotate by an arbitrary angle, or straighten a horizon?
- No. Rotation is quarter turns only — 0, 90, 180 or 270 degrees — which is lossless in the sense that no interpolation is needed and no new pixel values are invented. Straightening by a degree or two means resampling every pixel, and that is not offered here.