Image Converter — Convert Images to WebP, AVIF, JPEG or PNG
Pricing
from $3.20 / 1,000 image conversions
Image Converter — Convert Images to WebP, AVIF, JPEG or PNG
Convert an image from PNG to JPEG, or to WebP, AVIF, PNG, GIF or TIFF, with optional resizing, quality control and metadata stripping. Batch URLs in; converted files and signed download links out. $0.004 per image; failures never charged, demo run free.
Pricing
from $3.20 / 1,000 image conversions
Rating
0.0
(0)
Developer
Broke to Built
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
Image Converter — WebP · AVIF · JPEG · PNG · GIF · TIFF
Batch-convert images between modern and classic formats with optional resizing, quality control and metadata stripping. Feed it public image URLs; it returns one converted file per image in the run's key-value store, with a direct download URL, dimensions, byte sizes and the exact space saved in every dataset row.
Powered by libvips (sharp) — the same engine behind most production image CDNs — so conversions are fast and color-accurate.
Try it free first
Run the actor with no input at all and it converts a built-in demo image (unbilled) so you can see the exact output shape before spending anything.
What it does
- Formats: WebP, AVIF, JPEG, PNG, GIF, TIFF — any direction. Animated GIF/WebP inputs keep their animation when converting between those two.
- Resize: target width/height with five fit modes (
inside,cover,contain,fill,outside). Images are never upscaled. - Quality: 1–100 for lossy formats. WebP at quality 80 typically cuts a JPEG's size 25–35%; AVIF often more.
- Privacy by default: EXIF/GPS/ICC metadata is stripped unless you set
keepMetadata. Orientation is applied to the pixels first, so photos never come out sideways. - Honest billing: you pay per successfully converted image. Dead URLs, non-images, and oversized sources are recorded in the dataset but never charged. Output is stored before the charge, so hitting your spending limit never loses finished work.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
imageUrls | string[] | [] | Empty = free demo conversion |
format | enum | webp | webp / avif / jpeg / png / gif / tiff |
quality | integer | 80 | Lossy formats only |
width / height | integer | 0 | 0 keeps original; never upscales |
fit | enum | inside | Used when both width & height are set |
keepMetadata | boolean | false | Keep EXIF/ICC |
maxFileSizeMb | integer | 50 | Larger sources skipped (unbilled) |
What you get
One dataset row per image:
| Field | Meaning |
|---|---|
sourceUrl | The URL you supplied (null for the built-in demo) |
demo | true only for the free built-in demo conversion |
outputFormat | The format you asked for |
fileKey | Key of the converted file in the run's key-value store |
downloadUrl | Signed, shareable direct link to the converted file |
sourceFormat / sourceWidth / sourceHeight | What the original actually was |
width / height | Dimensions of the converted file |
bytesIn / bytesOut | Sizes before and after |
savedPercent | Exactly how much smaller it got, to one decimal |
convertedAt | ISO timestamp |
error | Present instead of the above when that image failed. Never charged |
Examples
1. JPEG to WebP with a resize — real run
Input:
{"imageUrls": ["https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1280px-Cat03.jpg"],"format": "webp","quality": 80,"width": 800}
Output row, copied verbatim:
{"sourceUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1280px-Cat03.jpg","demo": false,"outputFormat": "webp","fileKey": "image-0001.webp","downloadUrl": "https://api.apify.com/v2/key-value-stores/jezZm13dyXVcaYv5R/records/image-0001.webp?signature=TAH7FYpPhp2rOLchWVwS","sourceFormat": "jpeg","sourceWidth": 1280,"sourceHeight": 1278,"width": 800,"height": 799,"bytesIn": 236906,"bytesOut": 50486,"savedPercent": 78.7,"convertedAt": "2026-08-15T16:34:40.411Z"}
That is 237 KB down to 50 KB — most of it from the resize, the rest from WebP. Cost: $0.004.
Note height: 799 — with fit: "inside" only width was pinned and the aspect ratio was kept.
2. Batch to AVIF, metadata kept
{"imageUrls": ["https://example.com/a.png", "https://example.com/b.png"],"format": "avif","quality": 55,"keepMetadata": true}
Two rows back, each with its own downloadUrl. AVIF is the slowest encoder of the six — expect
a few seconds per large photo.
3. A dead URL
{ "sourceUrl": "https://example.com/missing.png", "error": "HTTP 404", "convertedAt": "2026-08-15T16:35:02.118Z" }
Recorded, and never charged. One bad URL never stops the rest of the batch.
Run it from the API
curl -X POST "https://api.apify.com/v2/acts/eliai~image-converter/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"imageUrls":["https://example.com/photo.jpg"],"format":"webp","width":1600,"quality":80}'
Node.js (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('eliai/image-converter').call({imageUrls: ['https://example.com/photo.jpg'],format: 'avif',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0].downloadUrl, items[0].savedPercent + '% smaller');
Each row's downloadUrl serves the converted file directly — pipe it into the next step of your workflow, no unzipping.
When NOT to use this
- You have the image on your machine, not online. The input is a URL; there is no upload. Host it first.
- You need the file to live somewhere permanent. Converted files sit in the run's key-value store on your Apify account, which follows your account's data-retention policy. Copy anything you want to keep to your own storage.
- You want a CDN that converts on the fly. This is a batch job, not an image-resizing proxy. For per-request transformation use an image CDN.
- You need cropping to a subject, background removal, watermarks, or any editing. Format, size, quality and metadata only.
- You need PDF, SVG output, or ICO. Output is WebP, AVIF, JPEG, PNG, GIF or TIFF. SVG is accepted as input only, rasterized at its intrinsic size.
- The images are behind a login or bot protection. Only public URLs you supply are fetched.
Honest limits
- Sources are capped at
maxFileSizeMb(max 100 MB) and 60 s download time each. - SVG input is rasterized at its intrinsic size; fonts inside SVGs may not render.
- AVIF encoding is the slowest of the six formats — expect a few seconds per large photo.
- The actor fetches only the public URLs you explicitly supply — no crawling, no login-walled content.
Pricing
Pay per event, one event: image-converted.
| Event | What one event covers | Price |
|---|---|---|
image-converted | One image downloaded, converted (and resized, if asked) and stored with a download link | $0.004 |
100 images cost $0.40; 1,000 cost $4.00. There is no start fee and no monthly fee. Dead URLs, non-images and oversized sources are recorded but never charged, the built-in demo run is free, and output is stored before the charge so a spending cap never loses finished work.
Honest comparison: sharp, ImageMagick and cwebp are free and do this locally, and if you are
already running a build step you should use them. What $0.004 buys is the hosted batch — no
binary to install, no libvips version to fight, a signed download URL per file, and a JSON
report with the exact bytes saved that a no-code tool or an agent can act on.
FAQ
How do I convert an image to WebP (or AVIF) by URL? Put the URLs in imageUrls, set format, run — each row returns a downloadUrl serving the converted file directly, plus byte sizes and the exact percentage saved.
How much smaller do images get? WebP at quality 80 typically cuts a JPEG's size 25–35%; AVIF usually more. Every result reports bytesIn, bytesOut, and savedPercent, so the answer for your images is measured, not estimated.
Can it resize images too? Yes — set width/height with one of five fit modes. Images are never upscaled, so thumbnails stay sharp and originals stay untouched.
Does it keep EXIF and GPS metadata? Stripped by default for privacy (set keepMetadata to keep it). Orientation is applied to the pixels first, so photos never come out sideways.
Do animated GIFs stay animated? Yes when converting between GIF and WebP — the two animated formats. Converting an animation to a still format keeps the first frame.
Is there a free way to test the output format? Run with no input at all — a built-in demo image is converted unbilled so you can inspect the exact output shape before spending anything.
How do I bulk convert images to WebP? Put every URL in imageUrls (one run, one row per image), set format: "webp", and collect each row's downloadUrl. One dead URL never stops the batch, and only successful conversions are charged.
Where does the converted file actually live, and for how long? In the run's key-value store on your Apify account, reachable through the signed downloadUrl in each row. It follows your account's data-retention settings — copy anything you need to keep into your own storage.
Can I convert AVIF or WebP back to JPEG or PNG? Yes, any direction between the six supported formats. Set format to the one you want out.
Why is my output the same size as the input, or bigger? Converting an already-optimized file, or converting to a lossless format like PNG, can do that. savedPercent will be small or negative, and it is reported honestly rather than hidden.
For AI agents
This Actor is built to be called by software, not just by people.
- Mount it directly as an MCP tool — no Store search, no ranking, just this one tool:
https://mcp.apify.com/?actors=eliai/image-converter - Or call it over HTTP and get the results in the same request:
POST https://api.apify.com/v2/acts/eliai~image-converter/run-sync-get-dataset-items - Pay with x402, without an Apify account. This Actor is whitelisted for agentic payments, so an agent holding USDC on Base can buy a prepaid token and spend it here. The minimum purchase is $1, the token balance is an absolute spending cap, and it expires 14 days after purchase.
- Costs are predictable before you call. Pricing is pay-per-event (see Pricing above), so an agent can budget a run in advance instead of discovering the bill afterwards.
- Send only the field you mean. If you pass the bulk field, it is used on its own; the single-value field is a fallback, never merged into your request. You are charged for the items you sent and nothing else.