Bulk Image Converter & Resizer: WebP, JPG, PNG to ZIP avatar

Bulk Image Converter & Resizer: WebP, JPG, PNG to ZIP

Pricing

from $0.70 / 1,000 converted images

Go to Apify Store
Bulk Image Converter & Resizer: WebP, JPG, PNG to ZIP

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

Chris Elder

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

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

  1. Click Start. The prefilled example converts 2 public images to WebP in a few seconds and costs about $0.0015.
  2. Replace the example links with your own, or add a CSV/Google Sheet link, or a dataset ID from another run.
  3. Pick a preset or set format, size, quality and target KB yourself. Anything you set overrides the preset.
  4. Open the Output tab for a table with image previews, or download images.zip from 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

FieldMeaning
oktrue if the image was converted (and charged), false for a free error row
fileName, urlOutput file name and its public download link
format, width, height, bytesThe converted image
originalFormat, originalWidth, originalHeight, originalBytesThe source image
savedPercentSize saved versus the original (negative when an image was enlarged)
quality, targetKb, targetMetEncoder quality used and whether the KB target was reached
skuName from your CSV column or dataset field, when given
error, errorCodeWhy 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?

EventPrice
Converted image$0.0007 ($0.70 per 1,000)
Actor start$0.00005 per GB of memory, once per run (default 1 GB)
JobArithmeticCost
One-click example (2 images)2 x $0.0007 + $0.00005about $0.0015
500 product photos to white squares500 x $0.0007 + $0.00005about $0.35
5,000 site images to WebP5,000 x $0.0007 + $0.00005about $3.50
5,000 images with a KB target and SKU namessame: options are freeabout $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 ApifyClient
client = 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 maxInputMb up 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: false and keeps the smallest version.

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/