Free image converter: WebP, PNG and JPEG
Drop an image and choose WebP, PNG or JPEG. The form calls the same free API your code can call: one POST, no API key and no account. The converted image waits in Storage for 24 hours, with the camera and GPS data removed.
curl -s -X POST https://aisenseapi.com/services/v1/image_convert \
-F "file=@photo.jpg" \
-F "format=webp"
{
"storage_id": "1ddd4269-b51c-4209-a4de-6908926f672b",
"storage_url": "https://aisenseapi.com/services/v1/storage/1ddd4269-b51c-4209-a4de-6908926f672b",
"sha256_hash": "97350f282284446cbb19db5a0695a654e0162fafd52db766fb12099b6497202d",
"bytes": 195648,
"expire_timestamp": 1790767674,
"expire_datetime": "2026-09-30T11:27:54+00:00",
"content_type": "image/webp",
"filename": "result.webp",
"operation": "image_convert",
"format": "webp",
"width": 1600,
"height": 1200,
"input_format": "jpeg",
"input_bytes": 641358
}Try it in the browser
This form posts your image to the same endpoint and shows the stored result. The image is sent to aisenseapi.com, and the result is kept for 24 hours at a link that anyone with the link can open.
How the conversion works
- JPEG, PNG and WebP in, any of the three out. The format is read from the file itself, not from its name. An animated image is converted from its first frame.
- Quality goes from 40 to 95 for JPEG and WebP, and is 82 when you send none. PNG is lossless and takes no quality.
- Lossless WebP keeps every pixel. For screenshots and graphics it is usually far smaller than PNG.
- Transparency is kept in PNG and WebP. JPEG has none, so transparent pixels become white.
- The image is turned upright from the orientation a phone camera writes in the EXIF data, before that data is removed.
- EXIF, XMP, IPTC and comments are removed, so the camera, the GPS position, the date and the software do not follow the image. The ICC colour profile is kept, so the colours stay the same. A CMYK JPEG is converted to RGB.
- Nothing is resized. The result has the width and height of the upload, turned upright.
The API
POST https://aisenseapi.com/services/v1/image_convert with multipart/form-data.
| Field | Required | Meaning |
|---|---|---|
file | yes | The image: JPEG, PNG or WebP. |
format | yes | jpeg, png or webp. jpg is read as jpeg. |
quality | no | 40 to 95, for JPEG and WebP. 82 when left out. |
lossless | no | true or false, for WebP only. Lossless takes no quality. |
A GET on storage_url returns the image with its own image type, so the link also works in an <img> tag.
The answer is a Storage link
The endpoint never sends the image in its answer. It stores the result for 24 hours and answers with the same fields the Temporary Storage API answers with, plus what the result is:
| Field | Meaning |
|---|---|
storage_id, storage_url | Where the result is. A GET on the URL returns the image. |
sha256_hash, bytes | The digest and size of the stored image. |
expire_timestamp, expire_datetime | When the result is removed, 24 hours after it was stored. |
content_type, filename | The type of the image and the name to save it under. |
operation, format, width, height | The endpoint that made it, and the format and size of the result in pixels. |
input_format, input_bytes | What the upload was, so the saving can be read off. |
The example at the top of the page comes from a test run with a test image of 1600 x 1200 pixels. The id and the expiry are different on every call, and the sizes depend on the image.
Anyone with the link can open the image until it expires, so do not send pictures of people or anything confidential. Stored results count against the Storage budget of 80 MB per IP address per day.
Limits
- The upload is at most 10 MB and 25 megapixels.
- The result is at most 8 MB. A photo saved as PNG often goes over that; as JPEG or WebP it is far smaller.
- WebP allows at most 16383 pixels per side.
- One conversion may take at most 45 seconds.
- At most two images are converted at a time. A third waits up to ten seconds and is then answered 503 with
Retry-After.
Errors
A refused request stores nothing and answers with error. The endpoint's own refusals also carry fix, a sentence saying what to send instead.
| Status | When |
|---|---|
400 | A field is missing, unknown or out of range, the upload is not one whole file, or ImageMagick cannot read the image. |
405 | The method is not POST. |
413 | The upload, its number of pixels or the result is over a limit. |
415 | The body is not multipart/form-data, or the file is not a JPEG, PNG or WebP. |
429 | More than 5000 requests from one IP address in 24 hours, or the day's Storage budget is used up. |
503 | Two images are being converted already, the conversion took more than 45 seconds, or the service cannot convert right now. |
Questions
Is the image converter API free?
Yes. No API key, no account and no sign up. The limit is 5000 requests per IP address per 24 hours, and stored results count against the Storage budget of 80 MB per IP address per day.
Does it keep transparency?
In PNG and WebP, yes. JPEG has no transparency, so transparent pixels become white.
Is the GPS position removed?
Yes. EXIF, XMP, IPTC and comments are removed from every result. The colour profile is kept, so the colours stay the same.
Can it convert HEIC or GIF?
No. It accepts JPEG, PNG and WebP.
Related tools
- Image converter and image compression for JPEG, PNG and WebP
- JSON to CSV, CSV to JSON and table matching
- JSON formatter and JSON validator
- File uploader and the Temporary Storage API, where every result is kept for 24 hours