WebP Converter – Compress Images in Bulk avatar

WebP Converter – Compress Images in Bulk

Pricing

from $1.00 / 1,000 images

Go to Apify Store
WebP Converter – Compress Images in Bulk

WebP Converter – Compress Images in Bulk

Convert images to WebP in bulk and see exactly how many megabytes you saved: old size, new size and percent saved on every row. Quality or lossless, optional resize, one ZIP of the lot. $1 per 1,000 images; failed images are free.

Pricing

from $1.00 / 1,000 images

Rating

0.0

(0)

Developer

Tidyrun

Tidyrun

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

WebP Converter – Shrink Images in Bulk

Give it image URLs, get WebP files back — and a straight answer to "how much did I actually save?". Every row shows the old size, the new size and the percentage saved, so you can prove the win instead of guessing.

Quick start

  1. Paste your image links into Image URLs (or upload a text file with one URL per line).
  2. Click Start.
  3. The Output tab shows each WebP with its Saved %, and the run summary totals the megabytes.

Input example:

{
"imageUrls": [
{ "url": "https://example.com/photo.jpg" },
{ "url": "https://example.com/logo.png" }
],
"quality": 80,
"maxWidth": 1600,
"zip": true
}

Output row (shortened):

{
"sourceUrl": "https://example.com/photo.jpg",
"status": "converted",
"fileUrl": "https://api.apify.com/v2/key-value-stores/.../photo-3f1c2a9b7e.webp",
"originalBytes": 546059,
"webpBytes": 373905,
"savedBytes": 172154,
"savedPercent": 31.5,
"width": 1280,
"height": 853,
"originalFormat": "jpeg",
"chargedAsImages": 1
}

Run it after a scraper

On your scraper or its task, open Integrations, search for this Actor and set its input:

{
"datasetId": "{{resource.defaultDatasetId}}",
"urlField": "images.url"
}

Every time the scraper finishes, its images go through this Actor. Leave URL field empty and it finds the image links itself; use a dot path (images.0.url, images.url for a whole list) when you want one exact field. Each row keeps recordIndexes, the dataset rows the image came from.

Settings worth knowing

SettingWhat it does
Quality80 by default: most photos look unchanged and lose about a third of their weight. Lower it for smaller files.
LosslessEvery pixel kept. Use it for logos, screenshots and line art.
Max width / Max heightShrink anything bigger to fit. Aspect ratio is kept and small images are never enlarged. Resizing saves far more than quality alone.
Put everything in one ZIPOne file to download instead of clicking through a list.
Max file sizeSkip source images bigger than this instead of spending the run on them.

Why this one

Common problemWhat happens here
"Did that actually help?"Every row carries originalBytes, webpBytes, savedBytes and savedPercent, and the summary totals the megabytes saved.
Transparency turns blackAlpha is kept, so PNG logos stay transparent as WebP.
Animated GIFs lose their animationAnimated sources keep every frame.
Photos come out rotatedEXIF orientation is applied before encoding.
"Out of memory" on big batchesImages are encoded a few at a time within the run's memory, and an image too large to encode gets a clear error instead of crashing the run.
One site gets hammered and blocks youAt most 4 images at a time per site, with an automatic slow-down if a site rate-limits.
Paying for broken links404s, pages that are not images and oversized files are never charged.
Surprise bills on huge photosBig images cost more to encode, so each row shows chargedAsImages before you scale up.

Already-optimised images may shrink only a little, or not at all — the row still tells you exactly what happened.

Pricing

Pay per converted image. Images that fail are never charged, and there is no fee just for starting a run.

An image up to 3 megapixels (about 2048 × 1448, which covers ordinary web images) counts as one. Encoding cost follows pixels, so a much larger image counts as one more per 3 megapixels — a 24-megapixel photo counts as 8. Each row says what it was charged as in chargedAsImages, and Max width lowers both the file size and the count.

Call it from your code

curl -X POST "https://api.apify.com/v2/acts/tidyrun~webp-converter/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"imageUrls":[{"url":"https://example.com/photo.jpg"}],"quality":80}'

Tips

  • Shrinking for a website? Set Max width to the widest your layout ever shows (often 1600 px). That usually saves more than any quality setting.
  • Logos and screenshots? Turn Lossless on; text edges stay crisp.
  • Want the files saved as they are instead of converted? Use Bulk Image Downloader (tidyrun/bulk-image-downloader).

Responsible use

Downloads the image URLs you provide, as an ordinary visitor. It does not log in, does not solve CAPTCHAs and does not collect personal data. Only convert images you have the right to use.