Crop a batch of images and add a watermark
One crop frame for the whole batch, a watermark drawn after the crop so it is never cut in half, and a row of real pixel sizes to check before you download.
🔒 100% client-side · zero server upload
Results
Everything runs in this browser tab. Nothing is uploaded.
Malaysian rules & edge cases
What "crop" means here. The frame you pick is filled by cutting pixels away from the longer side — a cover crop. Nothing is letterboxed, nothing is stretched and no background is invented. A 1600×900 banner cropped to 1:1 loses 350 px from each side; the same banner cropped to 4:5 loses more. If you wanted the whole photo inside a square with a coloured border, that is padding, which is a different tool.
| Frame | Typical use | Pixels — longest-side preset in brackets |
|---|---|---|
| 1:1 | Shopee and Lazada listings, Instagram grid, profile pictures | 1080×1080 (1080) |
| 4:5 | Instagram and Facebook feed, the tallest portrait a feed allows | 1080×1350 (1350) |
| 3:4 | Portrait photo prints and some marketplace categories | 1080×1440 (1440) |
| 16:9 | Website banners, YouTube thumbnails, slide decks | 1920×1080 (1920) |
| 9:16 | Reels, TikTok, WhatsApp Status — full-screen vertical | 1080×1920 (1920) |
The order that matters. The EXIF orientation is read first and the photo is rotated upright, then the crop is taken. Doing it the other way round cuts the wrong axis: a phone photo stored 3200×2400 with orientation 6 is really a 2400×3200 portrait, so a square must come out of the upright frame — 2400×2400 starting 400 px down — not out of the stored one. The demo file on this page is exactly that photo, and its row names the crop it took.
Size. The longest side is scaled to the preset you choose, and the tool never upscales: a 600 px product shot asked for 1080 px stays 600 px and the row says so. Anything above 16.7 megapixels is scaled into the canvas ceiling, because a bigger canvas is what kills a mobile tab.
Watermark. Text or a logo image (PNG with transparency), at any of nine positions, sized 2–20 % of the short edge and drawn 10–100 % opaque. It is painted after the crop, so it can never be sliced by the frame. A logo, when one is loaded, takes the place of the text.
What is lost on purpose. The image is redrawn on a canvas and encoded again, so the camera model, the GPS fix, the timestamp and the software tag are gone — which is usually the point of posting a product photo. A wide-gamut profile (Display P3, Adobe RGB) comes back as sRGB. PNG output is lossless and keeps transparency; JPEG has no alpha, so transparent pixels take the background colour you choose.
Honest limits. WebP output needs a browser that can really encode it — Safari cannot, and asking for image/webp there silently returns a PNG, so this tool checks the type of the bytes it received and saves an honest JPEG named .jpg when it has to. AVIF is not offered at all. And a batch is one download: two or more files arrive as a single ZIP built inside the tab, because iOS blocks the second automatic download.
Before and after
Before
produk-kopi-01.jpg — stored 3200×2400, EXIF orientation 6 (upright 2400×3200) — iPhone 15 Pro — GPS 3.1390, 101.6869
banner-raya-2026.png — 2400×1350 — the wide banner a square crop has to lose pixels from
logo-kedai-kopi.png — 600×600 with a transparent background After
produk-kopi-01-1x1-1080.jpg — 1080×1080 upright, cropped from 2400×2400 — camera, GPS and date removed
banner-raya-2026-1x1-1080.png — 1080×1080 — 525 px cut from each side, nothing stretched
logo-kedai-kopi-1x1-600.png — 600×600 — 1:1 already, so only the transparency survives untouched How it works
- Drop your images, or press "Load sample data" for a portrait photo that really carries EXIF orientation 6 plus a camera and GPS block, a wide 2400×1350 banner, and a transparent logo.
- Choose the frame (1:1 for a Shopee listing, 4:5 for a feed, 9:16 for a Story), the longest side, and where the crop should start. Add a watermark text or a logo if you need one.
- Press Run, check each row — real output size, real pixels, what was removed — then download one image or the whole batch as a single ZIP.
FAQ
Are my photos uploaded to a server?
No. Each file is read with the browser File API and redrawn on a canvas inside this tab. Open the Network panel and press Run: no request is made, which also means the GPS coordinates and the exact shooting time in a phone photo never leave your device.
Why is the crop not where I expected?
The "Crop from" control decides which part of the photo survives: Centre keeps the middle, Top left keeps the top-left corner, and so on. For a square from a portrait photo, Centre removes the same number of rows from the top and the bottom. Change the control and press Run again — the row shows the exact output size, so a wrong anchor is visible immediately.
Does cropping lose quality?
The image is decoded and encoded once, so a JPEG loses a little detail — at quality 90 it is hard to see at normal size, and repeatedly re-cropping the same file is what makes a photo visibly soft. A crop almost always produces a smaller file because fewer pixels are left; PNG output is the exception, since PNG is lossless and gets bigger.
Where should the watermark go on a product photo?
A corner, small — around 5–6 % of the short edge is enough to be readable without covering the product. A mark across the middle costs you clicks, and some marketplaces reject main images that carry contact details or another shop's logo, so keep a phone number out of the image itself.
Can it add a border instead of cutting the photo?
No, and that is deliberate. Filling a frame by cutting is what makes a 1:1 listing image look full-bleed; fitting the whole photo inside a square with a coloured background is padding, a different promise with different rules, and mixing the two in one control would make both hard to predict.