Cut Image

Crop or cut images with format preservation, JPEG quality control, and crop presets. Free, offline, client-side, instant, secure.

Crop a rectangular region from any image with format preservation (PNG/JPEG/WebP, defaults to source format), JPEG quality control, and 5 crop presets.

Click to upload or drag & drop

JPG, PNG, WebP, GIF (static frame only), BMP, SVG (re-rastered)

How to Use Cut Image

  1. Upload - click the drop zone or drag a file in. Image loads in the browser (no upload to any server).
  2. Pick a preset (center 50%, corner quarters) or enter X, Y, Width, Height in pixels. Origin (0,0) is the top-left corner.
  3. Output format: leave as "Match source" to preserve JPEG/PNG/WebP, or force a specific format. JPEG and WebP show a quality slider (1-100).
  4. Preview updates live (200 ms debounced).
  5. Press Ctrl+Enter to re-render manually if needed.
  6. Copy puts the cropped image on your clipboard (paste into any app); Download saves it with a -cut suffix.

Frequently Asked Questions

Does “Match source” really preserve everything?

It preserves the pixel format (JPEG → JPEG, PNG → PNG, WebP → WebP). It does NOT preserve: EXIF metadata (camera info, date taken, GPS), ICC color profiles, animated GIF frames (only the first frame is kept – canvas can’t emit animated GIF), or original JPEG quantization tables (browser re-encodes from scratch). For pixel-exact crops on a JPEG, expect minor recompression artifacts even at quality 100. PNG and WebP-lossless re-encodes are pixel-identical.

What does the JPEG quality slider do?

Controls the JPEG/WebP encoder quality from 1 (tiny, blocky) to 100 (largest, near-original). 85-95 is the typical sweet spot for photos – visible quality differences below 80 in most images. WebP at 85 typically produces 25-35% smaller files than JPEG at 85 with equivalent visual quality, but lacks PNG-level transparency support without extra flags.

Why does my GIF lose animation?

Canvas API (which all browser image tools use) can’t emit animated GIF. Only the first frame is read and emitted as a static PNG (or whatever format you pick). To preserve animation you’d need a dedicated GIF encoder library, which would add ~150 KB to the page – not worth it for a tool this small. For animated GIF cropping use ezgif.com or a desktop tool.

Why is the file size sometimes BIGGER than the source?

Two reasons. (a) Source was over-compressed: if you crop a JPEG that was already saved at quality 60, then re-save at quality 90, the new file is larger even with fewer pixels – you’re encoding at higher quality. Lower the quality slider to match the source. (b) Format change: cropping a JPEG to PNG produces a larger file because PNG is lossless. To match source size, leave format as “Match source” or pick the source’s format manually.

What’s the maximum image size?

Honest answer: browser-dependent. Chrome/Edge typically handle 16K × 16K (268 MP) images; Firefox handles ~11K × 11K reliably; Safari is more restrictive (~4K × 4K on some iOS devices). Beyond those limits, canvas.toBlob may silently return null. Very large images also consume memory in proportion to width × height × 4 bytes (RGBA) – a 16K × 16K image uses 1 GB of RAM. Mobile devices typically fail before desktop.

Why is “Copy image” sometimes unavailable?

Browser support varies. Chrome, Edge, and Safari 13.1+ support ClipboardItem; Firefox supports it as of v127 (mid-2024) – older Firefox shows “Clipboard image copy not supported”. Also requires HTTPS (or localhost) – won’t work on plain HTTP. The Download button always works as a fallback.

Does this work for SVG?

Yes, but SVGs are rasterized to bitmap before cropping. The output is a pixel image at the rendered size, not a smaller SVG. To crop an SVG and keep it as SVG, you’d need to edit the viewBox attribute manually (or use a vector editor). For most use cases (cropping an SVG icon to use in a raster context), the rasterized output is what you want.

Is my data secure?

Yes. The image is loaded via FileReader into a Canvas in your browser. No network requests are made. The Object URLs for previews are revoked on Reset (memory freed). Close the tab and everything is gone – nothing logged, nothing uploaded.