Image Converter & Resizer: WebP, AVIF, JPG, PNG in Bulk
Pricing
from $3.50 / 1,000 converted images
Image Converter & Resizer: WebP, AVIF, JPG, PNG in Bulk
Convert images in bulk to WebP, AVIF, JPEG or PNG: resize, crop, compress to a target file size and strip EXIF/GPS metadata. Image URLs or a dataset column in, download links and an optional ZIP out. Failed images are free.
Pricing
from $3.50 / 1,000 converted images
Rating
0.0
(0)
Developer
Charles Markette
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Image Converter & Resizer converts images in bulk to WebP, AVIF, JPEG or PNG. It can also resize or crop them, compress them to a target file size and strip EXIF metadata, including GPS location. Paste image URLs, or point it at any Apify dataset with image links (product photos, listing pictures, profile images) and every image in it is converted. Each converted file is saved in the run's key-value store with a direct link, one row per image tells you its new size and dimensions, and you can get all files in one ZIP as well.
Why this Actor
- Modern formats, real savings. WebP and AVIF files are usually much smaller than the JPEGs and PNGs they replace at similar visual quality. Every row reports
originalBytes,outputBytesandsavedPercent, so you can see what you saved. - Resize the way you need. Inside fits images within a max width and/or height and keeps the aspect ratio. Cover fills an exact box and crops the overflow from the centre (square thumbnails, banners). Exact stretches to the exact size. Small images are never enlarged unless you ask.
- Hit a file-size budget. Set Target max file size (for example 200 KB for a marketplace upload limit). For JPEG, WebP and AVIF, the Actor picks the highest quality that fits (a binary search over quality, up to your Quality setting). If even the lowest quality is too big, it keeps the smallest file and says so (
targetMet: false). It never pretends. - Privacy by default. EXIF metadata (GPS location, camera, date taken) is removed. The EXIF rotation is applied to the pixels first, so phone photos don't come out sideways. The colour profile is kept, because it holds no personal data and removing it can shift colours.
- Safe with untrusted URLs. Private, loopback, link-local and cloud-metadata addresses are refused, on every redirect hop too. Downloads are capped (25 MB by default), and images over 60 megapixels are refused before they are decoded, so a "decompression bomb" can't exhaust the run's memory.
- One bad image never stops the run. A missing, private, oversized or broken image gets one error row that explains the problem, and that row is free.
Use cases
- Speed up a website or store: convert product photos to WebP or AVIF at a max width of 1600 px.
- Marketplace and CMS uploads: square 1000×1000 cover crops, JPEG under 500 KB, white background behind transparent PNGs.
- Thumbnails: 300×300 centre crops of every image a scraper found.
- Remove location data from photos before you publish or share them.
- Normalise a mixed archive (TIFF, BMP, PNG, GIF, JPEG) into one format.
How to use it
- Add Image URLs (one per line), and/or pick a Dataset to convert. For datasets, set Image URL fields if your field isn't one of
imageUrl,imageUrls,image,images,thumbnailUrl,thumbnail,photo,srcorurl. A field that holds a list of URLs gives one row per image. - Pick the Output format and Quality (80 by default). Optionally set Max width / Max height, the Resize mode, and a Target max file size.
- Run it. Open the Storage → Key-value store tab of the run to see the files, or use the
outputUrlof each row. Turn on Also create a ZIP to get everything in one download.
Input example
{"imageUrls": ["https://www.gstatic.com/webp/gallery/1.jpg","https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"],"format": "webp","quality": 80,"maxWidth": 1200,"outputNameTemplate": "{name}-{width}w","createZip": true}
Output example (one row per image)
{"sourceUrl": "https://www.gstatic.com/webp/gallery/1.jpg","outputUrl": "https://api.apify.com/v2/key-value-stores/a1B2c3D4e5F6g7H8i/records/1-550w.webp?signature=3kQ9xY…","key": "1-550w.webp","format": "webp","width": 550,"height": 368,"originalWidth": 550,"originalHeight": 368,"originalFormat": "jpeg","originalBytes": 50604,"outputBytes": 25118,"savedPercent": 50.4,"quality": 80,"animated": false,"frames": 1,"metadataStripped": true,"targetMet": null,"error": null,"convertedAt": "2026-10-21T12:00:00Z"}
(The byte counts above are illustrative.) quality is the quality actually used: with a target size it can be lower than your setting, and it is null for lossless output (PNG, GIF, lossless WebP). targetMet is null when no target is set. A failed image has error set and the other result fields null. When you convert a dataset with Keep the item's original fields on, the item's own fields come first in each row.
The run summary is saved as OUTPUT in the key-value store: counts, total bytes before and after, savedPercent, and zipUrl when you asked for a ZIP.
Where are my files?
- Key-value store. Every converted image is a record in the run's default key-value store, under the key shown in the row (
key). The file name comes from the File name template (default{name}, the original file name) plus the format's extension. Placeholders:{name},{index},{width},{height},{format},{hash}. Repeated names get-2,-3… so nothing is overwritten. - Direct links.
outputUrlopens the file directly. Each link carries a signature, so it should work without an API token even when your account's storage access is set to restricted. - ZIP. With Also create a ZIP, all converted files are also stored together as
converted-images.zip(link inOUTPUT→zipUrl). The ZIP is capped at 2 GB; later files are then only stored individually, andOUTPUTsays so. - How long they're kept. The run's default storages are unnamed, and Apify deletes unnamed storages after your plan's data retention period. To keep files longer, download them (or the ZIP), give the key-value store a name in Apify Console (named storages aren't removed automatically), or send the files on with Dataset Delivery.
Supported formats
| Read | Write | |
|---|---|---|
| JPEG | yes | yes |
| PNG (and animated PNG) | yes | yes |
| WebP (and animated WebP) | yes | yes |
| AVIF | yes | yes |
| GIF (and animated GIF) | yes | with Keep the original format |
| TIFF, BMP | yes | with Keep the original format |
| HEIC / HEIF (iPhone photos) | no (convert to JPEG on the phone first) | no |
| SVG, PDF, RAW camera files | no | no |
Animations: by default, the first frame of an animated GIF, WebP or PNG is converted. With Keep animation and WebP output (or GIF kept as GIF), all frames and their timing are kept. An animation is limited to 1,000 frames and 60 megapixels across all its output frames; a larger one gets a free error row that suggests a smaller size.
Transparency: WebP, AVIF and PNG keep it. JPEG and BMP have none, so transparent areas are filled with the Background colour (white by default).
How much does it cost?
Pay per event, Apify platform usage included (including storing the converted files for your plan's retention period):
- $0.005 per converted image (
image-converted): each image that was converted and stored. - $0.005 run start per GB of Actor memory (minimum one; at the default 1 GB that's $0.005 a run). The run start applies to every run, even one where every image fails.
Apify Store discounts: the price above is for Apify's Free plan. Paid plans pay less per converted image: $0.0045 on Starter, $0.004 on Scale, $0.0035 on Business. The "from" price at the top of the Store page is the Business price.
Free: images that fail (download errors, HTTP errors such as 404 or 403, blocked private addresses, invalid URLs, files over the download limit, pages or files that aren't images, images over 60 megapixels, damaged files) and repeats skipped by Convert each URL once.
Worked examples:
Examples use the Free-plan rate.
- 1,000 product photos to WebP at the default 1 GB: 1,000 × $0.005 + $0.005 run start = $5.005.
- 200 image links where 15 return 404: 185 × $0.005 + $0.005 = $0.93. The 15 failed rows are free.
- A daily run that converts 40 new images: 40 × $0.005 + $0.005 = $0.205 per run, about $6.15 per month (30 runs).
- 500 large photos with the memory raised to 4 GB: 500 × $0.005 + 4 × $0.005 = $2.52.
If you set a maximum cost per run, the Actor stops cleanly at that limit. An image is charged when its file and row are stored, and a file whose charge doesn't go through is deleted again, so the store never holds converted files you haven't paid for.
FAQ and limits
Some images fail with "HTTP 403" or return a web page.
Some sites block downloads that don't come from their own pages (hotlink protection), or need a sign-in or cookies. The Actor sends a plain request from Apify's servers, without a proxy, cookies or a browser, so those images can't be fetched. Use the image's direct address (right-click the image, Copy image address), or host the files somewhere public.
Do Google Drive and Dropbox links work?
Yes, share links to a single file: a Drive link (/file/d/…/view) is turned into its download link, and a Dropbox ?dl=0 link into ?dl=1. The file must be shared as Anyone with the link. Folder links aren't supported.
Which quality should I pick?
80 is a good default for photos in WebP and JPEG. AVIF looks good at lower numbers (60–70). For logos, screenshots and graphics with sharp edges, try PNG or Lossless WebP.
Why is my WebP bigger than the original?
Small or already heavily compressed images, and graphics with few colours, can grow when re-encoded. savedPercent is negative in that case. Try a lower quality, PNG for graphics, or keep the original.
Will rotated phone photos come out the right way up?
Yes. The EXIF orientation is applied to the pixels before anything else, whether or not metadata is removed.
What exactly is removed by "Remove metadata"?
All EXIF data, including GPS location, camera make and model, and date taken. XMP metadata is never copied, with the option on or off. The ICC colour profile is kept. With the option off, EXIF (including any GPS data) is copied to JPEG, WebP, AVIF, PNG and TIFF output (minus the orientation tag, which has already been applied).
Limits
- Download size: 25 MB per image by default (up to 100 MB with Max download size).
- Image size: 60 megapixels (for example 9,000 × 6,600). Larger images get a free error row.
- Very large images need memory: the Actor limits how many pixels it decodes at once to fit the run's memory, so a run with many big photos is safe but slower at the default 1 GB. Give the run more memory to go faster.
- No proxy and no browser: images behind sign-ins, bot protection or hotlink protection can fail.
- If the platform restarts a run, already stored rows are skipped and the run continues after them.
Related Actors
| Actor | Use it to |
|---|---|
| Dataset Delivery: Export to SFTP, FTP, Dropbox, Google Drive | Send the converted files and their rows on to your own storage. |
| CSV & Excel to Dataset | Turn a spreadsheet of image links into a dataset to convert. |
| Dataset Filter & Transform | Keep only the rows you need, or rename and flatten fields before or after converting. |
| HTTP Request: API Calls in Bulk | Fetch image links from an API, or push the converted links to your own API. |
| Google Sheets Import & Export | Put the rows with the new image links into a Google Sheet. |
Image processing: Pillow (with libwebp and libavif).