Image Compressor avatar

Image Compressor

Pricing

Pay per usage

Go to Apify Store
Image Compressor

Image Compressor

Compress images in bulk without losing quality you can see. Paste a list of image URLs, choose lossy or lossless, and get every file compressed as small as it will go — with a download link for each one and a single ZIP of the whole batch at the end.

Pricing

Pay per usage

Rating

5.0

(2)

Developer

One Scales

One Scales

Maintained by Community

Actor stats

3

Bookmarked

2

Total users

2

Monthly active users

10 days ago

Last modified

Share


Introduction

Compress images in bulk without losing quality you can see. Paste a list of image URLs, choose lossy or lossless, and get every file compressed as small as it will go — with a download link for each one and a single ZIP of the whole batch at the end.

Every image is run through several different encoders, the results are compared, and whichever came out smallest wins. Built on MozJPEG and libimagequant — two best-in-class open source image encoders — plus SVGO for vector files.

Two rules are never broken. The output is never larger than the input — if no encoder beats the original, you get the original back untouched. And lossless means lossless — every lossless result is decoded and compared pixel-for-pixel against the source before it is saved.


Features

  • Smallest-wins compression — several encoders per image, best result kept, never larger than the original.
  • Verified lossless mode — pixel-for-pixel checked before saving, so archives and masters are provably unchanged.
  • All common formats — JPEG, PNG, WebP, GIF, TIFF, AVIF, HEIC and SVG, detected from the file itself rather than the URL.
  • One-click bulk download — every successful image bundled into a single all-images.zip as the final result row.
  • Built for scale — flat memory use at any batch size, residential proxy support, and 3 automatic retries per file.

Use Cases

  • Speed up a website — images are usually the heaviest thing on a page; halving them halves load time.
  • Cut CDN and bandwidth bills — egress costs scale directly with bytes served.
  • Improve SEO — page speed is a ranking factor and image weight is the biggest lever most sites have.
  • Optimize a product catalog — store photography is often uploaded straight from a camera, uncompressed and full of EXIF.
  • Clean up after a migration — process an entire media library in one pass instead of one file at a time.
  • Archive without loss — lossless mode reduces size with a guarantee that not one pixel changed.
  • Fit email and app assets under size limits — without opening an image editor.
  • Strip metadata before publishing — EXIF, GPS and camera details removed as part of compression.

Input

Configure the actor in the UI, or pass the same fields via the API.

FieldTypeRequiredDescription
Image URLs (imageUrls)Array of stringsYesDirect image URLs, one per line. Redirects are followed and the file type is detected from the image data, so extensions are optional.
Compression Type (compressionType)lossy | losslessNo — defaults to lossylossy targets quality 85 for the smallest files. lossless guarantees a pixel-identical result.
Proxy Configuration (proxyConfiguration)ObjectNo — defaults to residentialProxy used for downloading the images. Compression itself runs locally and is unaffected.
{
"imageUrls": [
"https://example.com/photos/beach.jpg",
"https://cdn.example.com/logo.png",
"https://example.com/assets/icon.svg"
],
"compressionType": "lossy",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Output

One row per image, in the order you submitted them, each with a direct download link. The final row is the ZIP containing every image that compressed successfully — the quickest way to grab the whole batch. Export the table as CSV, JSON, or Excel.

FieldTypeDescription
imageUrlstringThe image URL that was requested
fileNamestringSuggested file name for the compressed image
formatstringFormat detected from the file bytes, or zip on the final row
modestringlossy or lossless
widthintegerImage width in pixels
heightintegerImage height in pixels
originalBytesintegerSize of the original image
compressedBytesintegerSize after compression, never larger than the original
savedBytesintegerBytes saved
savedPercentnumberPercentage of the original size saved
encoderstringWhich encoder won, or none (already optimal)
pixelIdenticalbooleanTrue when verified pixel-for-pixel identical to the source
downloadUrlstringDirect download link to the compressed file
statusstringsuccess, or error: <reason>
[
{
"imageUrl": "https://example.com/photos/beach.jpg",
"fileName": "beach.jpg",
"format": "jpeg",
"mode": "lossy",
"width": 1280,
"height": 575,
"originalBytes": 221419,
"compressedBytes": 173739,
"savedBytes": 47680,
"savedPercent": 21.5,
"encoder": "mozjpeg-q85",
"pixelIdentical": false,
"downloadUrl": "https://api.apify.com/v2/key-value-stores/.../records/00000-beach.jpg",
"status": "success"
},
{
"imageUrl": "ALL IMAGES (ZIP)",
"fileName": "all-images.zip",
"format": "zip",
"mode": "lossy",
"width": 0,
"height": 0,
"originalBytes": 445985,
"compressedBytes": 228064,
"savedBytes": 217921,
"savedPercent": 48.9,
"encoder": "zip bundle of 2 images",
"pixelIdentical": false,
"downloadUrl": "https://api.apify.com/v2/key-value-stores/.../records/all-images.zip",
"status": "success"
}
]

Good to know

  • Formats are preserved — this optimizes images, it does not convert them.
  • Lossless savings are modest. On an already-optimized file the honest answer is 0%, and the original is returned unchanged. Animated GIFs usually come back unchanged in lossless mode, because re-encoding shifts the palette. Use lossy for real reductions.
  • Quality is fixed at 85 in lossy mode — the point where savings are large and loss is invisible.
  • Files over 50 MB are skipped with an error status.
  • Retries — every download and file write is retried up to 3 times (2s, 8s, 20s), rotating proxy IP each attempt. Permanent failures like a 404 fail fast.
  • Speed and memory — roughly 600 images per minute on a 2 GB run. Give the run at least 1 GB; 2 GB is the sweet spot, and more does not make it faster.
  • Pricing — pay-per-event. You only pay for rows actually produced. The actor reads your spending limit and remaining account balance before it starts, processes exactly what the budget covers, and never overruns it.

Support

Need help or want a feature added?

Contact Support at https://docs.google.com/forms/d/e/1FAIpQLSfsKyzZ3nRED7mML47I4LAfNh_mBwkuFMp1FgYYJ4AkDRgaRw/viewform?usp=dialog — Fill out this quick form.

We respond quickly and are happy to add new fields or custom integrations.


Tags

image compressor, bulk image compression, compress images online, image optimizer, image optimization api, reduce image file size, shrink images, jpeg compressor, jpg compression, png compressor, compress png, webp compressor, gif compressor, tiff compressor, avif compressor, heic compressor, svg optimizer, svgo, mozjpeg, pngquant, libimagequant, lossless image compression, lossy image compression, pixel perfect compression, batch image compressor, bulk image optimizer, image compression api, compress images from url, image cdn optimization, reduce bandwidth costs, core web vitals, page speed optimization, image seo, website performance, ecommerce image optimization, product photo optimization, shopify image compression, wordpress image optimization, strip exif metadata, remove image metadata, image resizing alternative, apify actor, image processing api, bulk media optimization, zip download images, compress image batch, web image optimization, faster website images


Built with care by One Scales Inc.