Social Media Cropper takes one source image and produces a tidy ZIP of platform-specific crops. The implementation is built on the Canvas 2D API: each preset defines a target width, height, and aspect ratio, and the source image is drawn into a fresh Canvas at the exact platform dimensions using cover-fit logic — the source is centred and scaled so that the shorter axis matches the target while the longer axis overflows and is clipped.
Crop position is interactive. A draggable preview lets you reposition the source inside each platform's frame so the important content (a face, a logo, the focal point of the photo) lands in the visible area instead of being cropped out. Position is stored independently per preset, so you can centre a face for Instagram and a logo for the LinkedIn banner from the same source.
The preset library covers what social platforms actually want. Instagram square posts (1080x1080), portrait posts (1080x1350), stories and reels (1080x1920); Facebook covers (820x312) and post images (1200x630); X profile headers (1500x500) and post images (1200x675); LinkedIn personal banners (1584x396) and company page banners (1128x191); YouTube thumbnails (1280x720) and channel art (2560x1440); Pinterest standard pins (1000x1500). Each preset is the platform's recommended pixel dimension at the time of writing.
Quality is preserved through the resize. Canvas drawImage uses bilinear interpolation when downsampling, which is the same algorithm macOS Preview and Windows Photos apply. The export Canvas runs at full target resolution, so an Instagram crop is encoded at 1080x1080 directly rather than scaled down from a larger preview.
Format choice is exposed per export. PNG keeps screenshots and graphics with hard edges sharp; JPEG is the safest bet for photos uploaded to platforms that re-encode aggressively (most of them). WebP is offered as a smaller alternative but some social platforms recompress it back into JPEG on upload.
Batch export packages every selected preset into a single ZIP, named with the platform and dimensions for clarity (instagram-square-1080x1080.jpg, youtube-thumbnail-1280x720.jpg, etc.). The ZIP is built in JavaScript before download so nothing leaves the browser.
Everything happens locally — the source image lives as an object URL in your tab, every Canvas pass runs in the page, and the ZIP is assembled before download. No upload step, which is helpful for confidential brand assets, embargoed product photos, and personal portraits used as profile pictures.