Free HEIC to JPG converter
Drop a HEIC photo from an iPhone and get a JPG back, turned the right way, with its colours and without its GPS position. The form calls the same free API your code can call: one POST, no API key and no account. The JPG waits in Storage for 24 hours.
curl -s -X POST https://aisenseapi.com/services/v1/image_convert \
-F "file=@IMG_0001.HEIC" \
-F "format=jpeg"
{
"storage_id": "4bb715b0-e38f-49c0-b107-8971bb0da14d",
"storage_url": "https://aisenseapi.com/services/v1/storage/4bb715b0-e38f-49c0-b107-8971bb0da14d",
"sha256_hash": "3973005e87eabd09798f4306817dc2c56f3b7fb81a5d590502ffb3768689bb63",
"bytes": 98701,
"expire_timestamp": 1790788252,
"expire_datetime": "2026-09-30T17:10:52+00:00",
"content_type": "image/jpeg",
"filename": "result.jpg",
"operation": "image_convert",
"format": "jpeg",
"width": 1600,
"height": 1200,
"input_format": "heic",
"input_bytes": 84381
}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.
What HEIC is, and why convert it
HEIC is the format an iPhone has saved photos in since iOS 11. It stores a photo in less space than JPEG, which is why Apple uses it, but many websites, upload forms and programs cannot open it, and Windows needs extra extensions from the Microsoft Store to show it. A JPG opens everywhere.
The JPG is usually somewhat larger than the HEIC it came from, as in the example at the top of the page: 84 381 bytes of HEIC became 98 701 bytes of JPG at quality 82. That is the price of a format everything can read.
How the conversion works
- Turned the right way, once. An iPhone records how a photo is turned twice, once in the HEIC file for HEIC readers and once in EXIF. A converter that applies both turns a portrait sideways. This one applies it once, and we test that with a file built the way an iPhone builds one.
- The colours are kept. A recent iPhone takes photos in the Display P3 colour space. The colour profile is read from the HEIC file and written into the JPG, so the colours look the same.
- The GPS position is removed, with the rest of EXIF, XMP and comments, so the JPG does not say where or with what it was taken.
- JPG, PNG or WebP out. JPG takes a quality from 40 to 95 and is 82 when you send none. PNG is lossless and much larger. WebP is smaller than JPG at the same quality.
- The main photo only. Depth maps and other extra images inside the HEIC file are left out, and nothing is resized.
HEIC on the iPhone itself
Two settings decide whether an iPhone hands out HEIC at all:
- Settings, Camera, Formats, Most Compatible makes the camera save new photos as JPG instead of HEIC. Photos already taken stay HEIC.
- Settings, Photos, Transfer to Mac or PC, Automatic converts photos to JPG when they are copied to a computer by cable.
Photos sent another way, or already on a computer as HEIC, are what this converter is for. The guide to the location in photos has more on what an iPhone photo can carry.
The API
POST https://aisenseapi.com/services/v1/image_convert with multipart/form-data, the same endpoint as the image converter.
| Field | Required | Meaning |
|---|---|---|
file | yes | The photo: HEIC, JPEG, PNG or WebP. |
format | yes | jpeg, png or webp. jpg is read as jpeg. |
quality | no | 40 to 95, for JPG and WebP. 82 when left out. |
lossless | no | true or false, for WebP only. |
A folder of photos is converted with one request per photo. At most two images are converted at a time, so a script should wait the seconds in Retry-After when it gets 503.
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 default photos of recent iPhones, 12 or 24 megapixels, are within the limit; a 48 megapixel photo taken with HEIF Max is not.
- 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, WebP or HEIC. |
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 HEIC to JPG converter 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 work on Windows?
Yes. The conversion happens on the server, so the browser only sends the file. No extension or app is needed.
Is the location removed?
Yes. EXIF with the GPS position, XMP and comments are removed from every result. The colour profile is kept.
Will my photo be turned the right way?
Yes. An iPhone records the turn both in the HEIC file and in EXIF, and the converter applies it once.
Does it keep the quality?
JPG is saved at quality 82 unless you choose from 40 to 95. For the least loss choose 95, or PNG, which is lossless but much larger.
Can it convert HEIF and AVIF?
HEIC and other HEIF files with HEVC inside, yes. AVIF, no.
Related tools
- Image converter and image compression, and the HEIC to JPG converter for iPhone photos
- Image metadata viewer and EXIF remover
- Guide: how to see and remove the location hidden in your photos
- Colour palette and favicon generator
- 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