Circle Image Crop
Crop any image into a perfect circle with adjustable size, position, and zoom. Export as transparent PNG or JPG instantly in-browser.
About
Most image editors default to rectangular selections. Extracting a circular region requires manual masking, alpha-channel management, and careful anti-aliasing at the boundary. This tool performs a true geometric clip using the Canvas arc(cx, cy, r, 0, 2Ο) path, producing a pixel-perfect circle with transparent alpha outside the boundary. Output resolution is user-defined, independent of source dimensions. The result is a lossless PNG with pre-multiplied alpha or a flat-background JPG. Note: JPEG does not support transparency. Choosing JPG export fills the exterior with white.
Incorrect cropping for profile avatars causes clipped faces, off-center framing, or visible compression artifacts at the mask edge. Platform upload validators (LinkedIn, GitHub, Slack) re-compress poorly cropped images further. Starting from a cleanly masked, correctly sized circular source avoids double-compression loss. This tool approximates sub-pixel anti-aliasing via the browserβs native canvas rasterizer, which applies implicit 4Γ MSAA on most GPU-accelerated backends. Limitation: very small output radii (< 32px) will show visible aliasing steps.
Formulas
The circular crop operation maps source image pixels to a circular output region. The canvas clip path defines the boundary via the parametric circle equation:
where cx, cy = circle center in canvas coordinates, r = crop radius in pixels, and t = parameter angle. The pixel inclusion test for any point (px, py) is:
For the export canvas, the image is drawn with a scale factor s computed as:
where outputSize = desired export dimension in pixels. The source region is translated so that the crop center maps to the output center. Alpha compositing uses globalCompositeOperation = "destination-in", which retains only pixels inside the circular mask.
Reference Data
| Platform | Recommended Size | Format | Shape | Max File Size |
|---|---|---|---|---|
| GitHub | 460 Γ 460px | PNG / JPG | Circle (auto-masked) | 1MB |
| 400 Γ 400px | PNG / JPG | Circle | 8MB | |
| Twitter / X | 400 Γ 400px | PNG / JPG | Circle | 2MB |
| 320 Γ 320px | JPG | Circle | 30MB | |
| 170 Γ 170px | PNG / JPG | Circle | 10MB | |
| Slack | 512 Γ 512px | PNG / JPG / GIF | Square (circle mask) | 1MB |
| Discord | 128 Γ 128px | PNG / JPG / GIF | Circle | 8MB |
| YouTube | 800 Γ 800px | PNG / JPG | Circle | 2MB |
| TikTok | 200 Γ 200px | JPG | Circle | 5MB |
| 500 Γ 500px | JPG | Circle | 5MB | |
| Telegram | 512 Γ 512px | PNG / JPG | Circle | 5MB |
| 256 Γ 256px | PNG / JPG | Circle (snoovatar) | 0.5MB | |
| Twitch | 256 Γ 256px | PNG / JPG | Circle | 10MB |
| 165 Γ 165px | JPG | Circle | 10MB | |
| Gravatar | 600 Γ 600px | PNG / JPG | Square (circle display) | 1MB |