Bulk Image Converter & Resizer: WebP, JPG, PNG to ZIP
Pricing
from $0.70 / 1,000 converted images
Bulk Image Converter & Resizer: WebP, JPG, PNG to ZIP
Convert, resize and compress images in bulk: WebP, JPEG, PNG, AVIF. White-square product photo presets, target file size in KB, SKU file names from a CSV or dataset, one ZIP. Reads Bulk File Downloader results directly. $0.70 per 1,000 images; failed images are free.
Pricing
from $0.70 / 1,000 converted images
Rating
0.0
(0)
Developer
Chris Elder
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
Bulk Image Converter & Resizer converts, resizes and compresses hundreds of images in one run: JPG, PNG, WebP, AVIF, GIF, TIFF and SVG in; WebP, JPEG, PNG or AVIF out. Paste image links, a CSV or Google Sheet (such as a Shopify product export), or another Actor's dataset, and get every image back as a download link plus one ZIP, named by SKU if you like.
✅ Pay per result: $0.70 per 1,000 images · 🆓 Failed images are never charged · 🔑 No API key, no login, no third-party image service
▶ Try it with one click · 📄 Real example output · 💲 Pricing · 🔌 API & integrations · ❓ FAQ · 🛟 Support
What does Bulk Image Converter & Resizer do?
- 🔄 Convert formats: WebP, JPEG, PNG or AVIF, or keep each image's own format and just compress it
- 📐 Resize four ways: fit inside a box, pad to an exact size, crop to fill, or stretch; small images are not enlarged unless you allow it
- 🛍️ Product photo presets: trim plain borders, centre the product with a 5% margin on a white 2048, 1600 or 1000 px square, saved as JPEG
- 🎯 Target file size: set a limit in KB and each image gets the highest quality that fits; every row says whether the target was met
- 🏷️ SKU file names: name files from a CSV column or dataset field (SKU, Handle) with a template such as
{sku}-{width}x{height} - 📦 One ZIP: every converted image in
images.zip, plus a public link per image in the dataset - 🔗 Works after Bulk File Downloader: paste its dataset ID (and key-value store ID) and the files it already saved are converted
- 🧹 Clean output: EXIF and GPS removed, phone photos auto-rotated, transparency put on white for JPEG
Use cases
- Shopify, eBay and Etsy sellers: turn a product export into uniform white-square photos named by SKU, ready to upload
- Web developers and SEO teams: convert a site's images to WebP or AVIF at a set width and see the bytes saved per image
- Agencies migrating stores: download a catalogue with Bulk File Downloader, then resize and rename it here in one pass
- Scraper users: shrink the images from any scraper's dataset before storing them
- Marketplace feeds: keep every image under a size limit with the KB target
How to use it
- Click Start. The prefilled example converts 2 public images to WebP in a few seconds and costs about $0.0015.
- Replace the example links with your own, or add a CSV/Google Sheet link, or a dataset ID from another run.
- Pick a preset or set format, size, quality and target KB yourself. Anything you set overrides the preset.
- Open the Output tab for a table with image previews, or download
images.zipfrom the key-value store.
Input example
{"imageUrls": ["https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png","https://upload.wikimedia.org/wikipedia/commons/a/a9/Example.jpg"]}
A Shopify export to 1600 px white squares named by handle:
{"csvUrl": "https://api.apify.com/v2/key-value-stores/b4gAQBUYH6cUo2aUC/records/shopify-products-sample.csv","nameField": "Handle","preset": "square-1600-white","fileNameTemplate": "{sku}"}
Other options: datasetId, keyValueStoreId, urlField, outputFormat, quality, targetKb, width, height, fit, allowUpscale, backgroundColor, trim, marginPercent, stripMetadata, autoRotate, createZip, maxImages, maxInputMb, maxConcurrency.
Output example (from a real public run)
{"index": 0,"sourceUrl": "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png","ok": true,"fileName": "PNG_transparency_demonstration_1.webp","key": "img-00001-PNG_transparency_demonstration_1.webp","url": "https://api.apify.com/v2/key-value-stores/Dm1WMrlPZvA4r6loI/records/img-00001-PNG_transparency_demonstration_1.webp","format": "webp","width": 800,"height": 600,"bytes": 69056,"originalFormat": "png","originalWidth": 800,"originalHeight": 600,"originalBytes": 224566,"savedPercent": 69.2,"quality": 80}
Public example run: dataset as JSON · CSV · images.zip
| Field | Meaning |
|---|---|
ok | true if the image was converted (and charged), false for a free error row |
fileName, url | Output file name and its public download link |
format, width, height, bytes | The converted image |
originalFormat, originalWidth, originalHeight, originalBytes | The source image |
savedPercent | Size saved versus the original (negative when an image was enlarged) |
quality, targetKb, targetMet | Encoder quality used and whether the KB target was reached |
sku | Name from your CSV column or dataset field, when given |
error, errorCode | Why an image failed (not charged) |
The run's OUTPUT record has totals (converted, failed, MB in and out) and the ZIP link(s).
How much does it cost to convert images?
| Event | Price |
|---|---|
| Converted image | $0.0007 ($0.70 per 1,000) |
| Actor start | $0.00005 per GB of memory, once per run (default 1 GB) |
| Job | Arithmetic | Cost |
|---|---|---|
| One-click example (2 images) | 2 x $0.0007 + $0.00005 | about $0.0015 |
| 500 product photos to white squares | 500 x $0.0007 + $0.00005 | about $0.35 |
| 5,000 site images to WebP | 5,000 x $0.0007 + $0.00005 | about $3.50 |
| 5,000 images with a KB target and SKU names | same: options are free | about $3.50 |
Never charged: links that fail to download, files that are not images, images over the size limit, duplicates and rows without a link. Set Max cost per run in the run options to cap spending.
Integrations (API, AI agents, Make, Zapier)
curl -X POST "https://api.apify.com/v2/acts/chris_elder~bulk-image-converter/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"imageUrls":["https://httpbin.org/image/jpeg"],"outputFormat":"webp","width":800}'
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("chris_elder/bulk-image-converter").call(run_input={"imageUrls": ["https://httpbin.org/image/jpeg"],"preset": "square-1600-white",})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["ok"], row.get("fileName"), row.get("url"))zip_url = f"https://api.apify.com/v2/key-value-stores/{run['defaultKeyValueStoreId']}/records/images.zip"
MCP (AI agents): https://mcp.apify.com/?tools=chris_elder/bulk-image-converter
Make / Zapier / n8n: use the Apify Run Actor module with chris_elder/bulk-image-converter, pass image links in imageUrls or the previous run's dataset ID in datasetId, then read the dataset rows or fetch images.zip. Schedules and webhooks work as with any Actor.
Limits and good to know
- Animated GIFs are converted from their first frame.
- SVG files are rendered to pixels: at their own size by default, or sharply at the width or height you set.
- Images over 30 MB are skipped for free (raise
maxInputMbup to 100). - Sites that block automated downloads may fail; those rows are free. Downloading with Bulk File Downloader first and passing its key-value store avoids downloading twice.
- Trim removes plain borders only; it is not background removal.
- A KB target can't always be met for very large images; the row then says
targetMet: falseand keeps the smallest version.
Is it legal?
The Actor downloads only the public image links you give it, or reads the datasets and stores you pass in, and changes the files for you. It does not log in anywhere. You are responsible for having the right to use and modify the images. See Apify's post on whether web scraping is legal.
FAQ
Can I convert a Shopify product export? Yes. Pass the CSV or Google Sheet link as csvUrl; the Image Src column is found automatically. Set nameField to Handle or your SKU column for file names.
How do I make every product photo a white square? Choose a square-...-white preset. It trims plain borders, centres the product with a 5% margin and pads it to an exact square on white.
How do I get every image under 200 KB? Set targetKb to 200. Each image gets the highest quality that fits, and targetMet tells you if one could not.
Does it work with the results of Bulk File Downloader? Yes. Paste its dataset ID. Add its key-value store ID too and the saved files are used directly.
Is PNG output lossless? Yes, unless you set a KB target, which switches PNG to palette compression.
Support, reliability and feature requests
- Failed images are free.
- Every release is tested on real public images; the one-click example works.
- Issues answered within 2 business days via the Actor Issues tab.
- Breaking input or price changes are announced in this README first.
Built by GPT Shop Ltd with AI-assisted development; every release is reviewed and tested.
More tools from GPT Shop Ltd
Bulk Image & File Downloader · AI Image Upscaler · Image to Text OCR · Bulk Website Screenshot · Dataset Transformer · all tools
Done-for-you
Need this run for you or customised? Done-for-you data from £49: https://tools.gptshopltd.com/done-for-you-scraper/