Crop any image in seconds – no account needed
Drop your photo, drag the crop area to the exact size you want, and download the result. This image cropper runs entirely in your browser – nothing is uploaded to any server, so your photos stay private.
Works for square profile pictures, 16:9 YouTube thumbnails, circular avatars, or any custom size you need.
How to crop an image
- Upload your image – click the upload area or drag and drop a file (JPG, PNG, WebP, or GIF, up to 20 MB).
- Choose an aspect ratio – pick Free, 1:1 (square), 4:3, 16:9, 3:2, or Circle from the toolbar. The crop box snaps to that ratio automatically.
- Drag and resize the crop box – move it over the part of the image you want to keep. Drag the corners to resize while keeping the ratio locked.
- Pick an output format – PNG keeps transparency; JPEG is smaller for photos; WebP is the best of both.
- Click Download – the cropped image saves directly to your device.
Worked example
Goal: crop a 4000 × 3000 px vacation photo to a square (1:1) for an Instagram post.
- Input: landscape-photo.jpg, 4000 × 3000 px
- Select ratio: 1:1 – the crop box becomes a perfect square
- Drag the box to center on the main subject
- Output: cropped-photo.png, 1800 × 1800 px (example), ready to upload
The same workflow applies for a circular avatar: pick Circle as the ratio, center the face, and download a PNG with a transparent background around the circle.
Common crop ratios and when to use each
| Ratio | Use case | Example platform |
|---|---|---|
| 1:1 (square) | Profile photos, feed posts | Instagram, Facebook |
| 16:9 | Thumbnails, hero banners, video stills | YouTube, Twitter, LinkedIn |
| 4:3 | Standard photos, presentations | PowerPoint, Google Slides |
| 3:2 | DSLR-style prints, blog images | Photography sites |
| Circle | Avatars, logos | Twitter, Slack, Discord |
| Free | Any custom selection | Anywhere |
How to crop an image in code
Prefer automating this? Here are minimal, runnable snippets for the two most common languages.
Python (using Pillow)
from PIL import Image
img = Image.open('photo.jpg')
# Crop a square from the center
width, height = img.size
side = min(width, height)
left = (width - side) // 2
top = (height - side) // 2
cropped = img.crop((left, top, left + side, top + side))
cropped.save('square.jpg')
Install Pillow with pip install Pillow. The crop() method takes a box of (left, top, right, bottom) pixel coordinates.
JavaScript (Canvas API – runs in a browser or Node with canvas)
// Assume 'img' is an HTMLImageElement already loaded
const canvas = document.createElement('canvas');
const size = Math.min(img.naturalWidth, img.naturalHeight);
canvas.width = size;
canvas.height = size;
const ctx = canvas.getContext('2d');
const offsetX = (img.naturalWidth - size) / 2;
const offsetY = (img.naturalHeight - size) / 2;
// Draw only the square center region
ctx.drawImage(img, offsetX, offsetY, size, size, 0, 0, size, size);
// Get a PNG data URL
const dataUrl = canvas.toDataURL('image/png');
The browser's native Canvas API handles image clipping without any extra library. Swap toDataURL('image/jpeg', 0.9) for a smaller JPEG output.
How the browser cropper works
When you drop an image, the tool reads it with the File API and draws it onto an HTML Canvas element – entirely inside your browser tab. You drag the crop box to define a rectangular (or circular) region. On download, the canvas renders only those pixels and exports them as PNG, JPEG, or WebP using canvas.toDataURL().
For a circular crop, a clipping path is applied to the canvas before drawing, so pixels outside the circle are transparent. That's why the output is always PNG (JPEG doesn't support transparency).
Because the whole process happens in JavaScript locally, your image never leaves your device. There is no upload, no server, no storage.
When to use this tool – and when not to
Good fits
- Quickly trimming a photo for social media, a CV, or a blog post
- Making a clean circular avatar from a headshot
- Removing distracting background from the edges of a product photo
- Preparing a thumbnail at a fixed aspect ratio before uploading to YouTube or a CMS
Not ideal for
- Batch cropping many files at once – use Pillow (Python) or sharp (Node.js) for that
- Very large images over 50 MP – browser memory limits can cause slowdowns; a desktop app like GIMP or Photoshop handles those better
- Non-destructive editing – if you need to adjust the crop later and preserve the original layers, a proper editor like Adobe Lightroom is the right tool
- Precision pixel-perfect crops with exact coordinate input – script it in Python or use a vector editor
Your image data is processed 100% locally in your browser. Nothing is sent to any server at any point – you can even disconnect from the internet after the page loads and the tool will still work.
Ready to trim your photo? Drop your image into the cropper above, pick your ratio, and download the result in seconds.