Image Crop Tool
Free online image crop — crop, rotate, and flip with pixel precision, all in your browser
Drag an image here, or click to select a file
Supports JPG, PNG, WebP, BMP, GIF
What is image cropping?
Cropping cuts a rectangular region out of an image and discards everything outside it. It is one of the oldest editing operations because it changes composition without resampling pixels — a 1000×800 region cut from a 4000×3000 photo keeps every original pixel inside that region intact. This page does cropping the way a desktop editor would: drag the selection on top of the preview, type exact numbers into X/Y/W/H fields, lock an aspect ratio when the output has to fit a fixed canvas (avatar, banner, ID photo), then export PNG/JPEG/WebP. Rotation and flipping are applied after the crop so the saved file already has the orientation you want, which matters for printing and for apps that ignore EXIF orientation tags. Everything runs in your browser via Canvas — the image bytes never leave the page, so personal documents and photos stay on your device.
How to use
Steps
- Drop an image or click to select one. JPG/PNG/WebP/BMP/GIF all work.
- Drag the selection box, or grab a corner / edge handle to resize. Pick an aspect ratio preset to lock the proportions.
- Fine-tune X/Y/W/H in the input fields when you need pixel-exact placement.
- Optionally rotate by 90° or flip horizontally/vertically — these apply to the cropped output.
- Choose PNG, JPEG, or WebP; click Crop to render, then Download.
Tips
- Hold an aspect ratio (1:1, 16:9, …) before downloading anything used as an avatar or thumbnail — platforms will otherwise re-crop it without telling you.
- Numbers shown in X/Y/W/H are in original-image pixels, not display pixels. A 4000-pixel-wide photo still reports 4000-pixel coordinates even when scaled down on screen.
- For photographs use JPEG quality 0.85–0.92 and WebP quality 0.80–0.90 — higher than that adds bytes the eye can't see. Use PNG for screenshots, line art, or anything with text.
Use cases
Technical principle
Cropping is logically simple — pick a rectangle, copy its pixels, throw the rest away — but doing it well in the browser has a few moving parts: the on-screen preview is a scaled-down version of the original, the drag handles operate in display coordinates, and the actual crop has to happen in original-image coordinates so no quality is lost. When you load a file, the tool wraps it in URL.createObjectURL() to get a blob URL, then hands it to an HTMLImageElement for decoding (zero-copy, far less memory than a base64 data URL). The natural width and height (img.naturalWidth / naturalHeight) become the canonical coordinate space — every X/Y/W/H stored in state is expressed in those pixels. The preview <img> uses max-width/max-height so the browser scales it to fit; on every load and resize we measure the rendered width via getBoundingClientRect() and store a displayScale ratio (rendered / natural). Mouse deltas during drag are divided by this ratio to translate display motion back into original pixels, which is what keeps the crop rectangle accurate regardless of how much the image is downscaled for display. The crop box itself is an absolutely-positioned <div> overlaid on the image. Its 8 resize handles (four corners + four edges) each fire pointerdown with a mode ('nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w', or 'move'); a window-level pointermove listener (pointer events cover both mouse and touch) reads the live mouse position, computes the delta from the drag start, converts to original pixels, and recomputes left/top/right/bottom of the rectangle. Corner drags resize from the opposite corner as anchor; edge drags keep the perpendicular midline fixed; ratio-locked drags compute the dominant axis first then derive the other. Each result is clamped to the image bounds with a minimum size of 10 px so the rectangle can never invert or escape the canvas. Exporting runs two off-screen canvases. The first is sized to the crop's natural width × height; ctx.drawImage(img, sx, sy, sw, sh, 0, 0, sw, sh) uses the 9-argument form to pull only the cropped region — Chromium and Firefox both blit this through the GPU as a texture copy, so no resampling happens unless the destination size differs. If rotation or flipping is requested, a second canvas is sized to the post-rotation bounds (swap width/height for 90°/270°), the context is translated to its center, ctx.rotate(angle) and ctx.scale(±1, ±1) apply the transform, and the cropped canvas is drawn at offset (-w/2, -h/2). Finally canvas.toBlob(mimeType, quality) hands the encoded bytes back as a Blob; URL.createObjectURL() turns it into a downloadable URL. Quality is ignored for PNG (lossless) and used as the encoder hint for JPEG and WebP (0–1). The blob's object URL is revoked when a new crop replaces it to avoid keeping decoded pixel data in memory.
- Crop coordinates (X/Y/W/H) are in original image pixels.
- All processing runs in the browser via Canvas API.
- The crop box overlay is a positioned <div> with 8 drag handles.
- Export uses off-screen canvases with drawImage 9-arg form.
- Old blob URLs are explicitly revoked on every state transition.
Examples
Square avatar from a portrait photo
Load photo (3024×4032) → Aspect 1:1 → Drag box over face → W=2000 H=2000 → Format JPEG, quality 0.9 → Crop → DownloadOpen Graph image (1200×630)
Load banner (1920×1080) → Aspect 16:9 → Type W=1200 H=630 → Drag to subject → Format WebP, quality 0.85 → Crop → DownloadYouTube thumbnail (1280×720)
Load shot → Aspect 16:9 → W=1280 H=720 → Drag onto focal point → Format JPEG, quality 0.9 → Crop → DownloadRotate a portrait shot from the camera
Load IMG_4321.jpg → Rotate right 90° → Aspect Free → keep full canvas → Format PNG → Crop → Download (orientation now baked in)Crop a screenshot region
Paste/upload screenshot → Free aspect → Drag tight around dialog (e.g. 740×420) → Format PNG → Crop → Download for the bug reportFAQ
Are my images uploaded anywhere?
No. Decoding, cropping, rotation, and encoding all run inside the Canvas API in this tab. You can verify in DevTools → Network: no request is sent while you crop or download.
Does cropping reduce image quality?
Cropping itself is lossless — only the pixels outside the box are removed; the ones inside are copied byte-for-byte. Quality only changes when you re-encode to JPEG or WebP below 100% quality, or apply rotation at angles other than 90/180/270 (we only offer those three for that reason).
How does this compare to Photoshop or Lightroom?
Desktop apps have more capabilities (layers, color grading, batch jobs, auto-selection), but they're slower to launch, cost money, and require local installation. The online tool's edge: open browser, use it. No install, no signup, often faster than launching Photoshop just to crop one image. For batch processing or complex edits, stay with PS; for a single crop, aspect lock, or avatar prep, this is faster.
What about the crop tool built into my phone gallery?
Phone gallery cropping is convenient but limited: usually only a handful of fixed ratios, no pixel input, no format switching, and the filename is locked. When you need to crop to a specific size like 1200×630, or convert HEIC to JPG while cropping, the gallery can't — this tool can.
Why are my X/Y/W/H values different from what I see on screen?
They are in the image's original pixels, not screen pixels. A 4000-pixel photo displayed at 800 px wide still reports coordinates up to 4000 — that's what your editor or upload target actually receives.
Does the exported image have a watermark?
No. This tool is 100% free with no watermark, no signup, and no usage limits. No logo or link is ever added to the cropped output.
Why can't I crop to a precise size like 1242×2208 when the original is smaller?
The crop box can't be larger than the image — if you need a bigger output, the image has to be up-scaled separately first. We don't upscale during cropping because nearest/bilinear up-scaling makes the result blurry, and good upscalers belong in a dedicated tool.
Can I lock to a custom aspect ratio that isn't in the preset list?
Type the exact W and H you want in the number fields with Aspect set to Free — the resulting ratio is whatever those numbers describe. Use the W/H ratio as a calculator: e.g. 1080 / 1350 = 0.8 = 4:5.
Can I crop multiple images at once?
Batch cropping isn't supported here — this tool is built for precise single-image work. For uniform batch crops, look at command-line tools like ImageMagick, or a dedicated batch editor.
How is rotation different from the EXIF orientation in my phone photo?
EXIF orientation is a metadata flag — apps that respect it rotate the image at display time, but the file's pixels are still in their original orientation. Rotating here re-renders the pixels, so the exported file is correct in any viewer, including printers and apps that ignore EXIF.
Which format should I export — PNG, JPEG, or WebP?
PNG for screenshots, UI mockups, and anything with text or sharp edges (lossless, larger file). JPEG for photographs going to print or where size matters more than transparency. WebP gives 25–35% smaller files than JPEG at the same visual quality and supports transparency — use it when the target audience is on modern browsers.
Why does the file size sometimes go up after cropping?
If the source was already heavily compressed JPEG and you export at PNG, the lossless re-encoding will be larger. Stay with the source's format (or WebP) to avoid this.