Why Won't My iPhone Photos Upload? (And How to Fix It)
You're filling out a form — a job application, an ID verification, a marketplace listing — and it asks for a photo. You pick a recent one from your iPhone. Instead of uploading, you get "unsupported file type", or the upload just quietly fails and nothing happens. The photo looks completely normal in your camera roll.
Almost every article on this will tell you the answer is HEIC. That's the most common cause, but it is genuinely not always the one, and if you convert a file that was never the problem you'll be right back where you started. So let's work out which of five things is actually happening.
Start from the symptom
| What you're seeing | Most likely cause |
|---|---|
| "Unsupported file type" / "invalid format" | HEIC, or a HEIC with no MIME type (causes 1) |
| "File too large" — or nothing happens at all | Size or dimensions (cause 2) |
| Upload bar starts, then fails near the end | Size, hitting a server limit rather than a browser one |
| It uploaded but looks rotated | EXIF orientation (cause 5) |
| Works from your computer, fails from your phone | Picker format, or a Live Photo (causes 1 and 3) |
| Fails only for one specific photo | That photo is ProRAW, a panorama, or a Live Photo |
A silent failure with no message at all is worth calling out: that's usually a size limit being enforced client-side, and it's the single most misdiagnosed case, because nothing on screen points at the file.
First: you may not have uploaded a HEIC at all
Since 2017, iPhones save new photos as HEIC instead of JPG. But here's the part that gets left out: Safari converts it for you. Since Safari 17, when you pick a photo through a web form's file picker, iOS defaults to a format setting called "Automatic", which means "the best format for the destination" — and in practice that usually means it hands the website a JPEG.
So if you picked the photo from a web form in Safari, the file that arrived may well have been a perfectly ordinary JPEG, and HEIC isn't your problem at all.
Where you do still get a raw HEIC:
- You attached it from the Files app rather than the photo picker.
- You tapped the picker's Options button and set Format to Current.
- You're using a browser other than Safari, or a native app with its own picker.
- You transferred the photos to a computer first and are uploading from there.
How to check: look at the filename the form shows after you select it. Ending in .HEIC or .HEIF means it really is HEIC. Ending in .JPG means your problem is somewhere below.
Cause 1: it really is a HEIC file
If the extension confirms it, this is the straightforward case. Plenty of sites, forms and older apps were never built to read HEIC. WordPress and Shopify media libraries reject .heic, print services generally don't recognise it, and a long tail of internal corporate tools has never heard of it.
There's a subtler version of this failure that explains a lot of "invalid file type" errors on files that look fine. Many operating-system and browser combinations hand over HEIC files with an empty or generic MIME type rather than image/heic. We ran into this building this site's own HEIC handling: you can't trust the reported type, you have to check the extension as well. A form doing a strict server-side MIME check sees a file claiming to be nothing in particular, and rejects it — the message says "invalid format" but the real cause is a missing label.
Cause 2: the file is simply too big
The second most common cause, and it's invisible if you're only thinking about formats. A standard 12-megapixel iPhone photo is a few megabytes, which is fine. But:
- ProRAW photos run to several tens of megabytes each. Many forms cap at 5 MB, some at 2 MB.
- Panoramas are enormous in both dimensions and bytes.
- Some forms also cap pixel dimensions, not just file size, and reject a 4032 × 3024 photo for being too large in a way the error message never explains.
If converting to JPG didn't fix it, this is the next thing to check. Compressing genuinely helps here, and so does choosing a sensible quality setting rather than uploading at maximum.
Cause 3: it's a Live Photo
A Live Photo isn't one file — it's a still image plus a short video, stored together. Depending on how you attach it, some pickers send the still, some try to send both, and some upload targets choke on the pairing.
The fix is to strip the motion before uploading: open the photo, tap Edit, tap the LIVE button at the top left to turn it off, and save. You now have an ordinary still image.
Cause 4: it's a screenshot, not a photo
Worth knowing because it inverts the usual advice: iPhone screenshots are PNG, not HEIC. So if the thing failing to upload is a screenshot, HEIC conversion is not your answer, and a form that only accepts JPG will reject it for a completely different reason.
Screenshots of text should stay lossless where possible, but if the form demands JPG, that's the conversion you need — with the caveat that text edges will soften slightly.
Cause 5: it uploaded, but sideways
Not an error, but it lands in the same bucket of "my iPhone photo didn't work". Photos carry an EXIF orientation flag: the pixels are stored one way, and a tag says which way up to display them. Software that ignores the tag shows your photo rotated 90 degrees.
Re-encoding the photo generally fixes this, because the exported file has the rotation baked into the pixels rather than described in a tag.
The fixes, from quickest to most permanent
Just this once — use the picker's own conversion. In the iOS photo picker, tap Options at the top and set Format to Most Compatible. The photo arrives as a JPEG without you changing anything else. This is the fastest fix and almost nobody knows it's there.
Stop it happening again — change the camera. Go to Settings → Camera → Formats and choose Most Compatible. New photos save as JPG from then on. The trade-off is real: your photos will take roughly twice the storage. If you shoot a lot, consider leaving the camera on High Efficiency and using the per-upload fix instead.
If you move photos to a computer — Settings → Photos → Transfer to Mac or PC controls this. Note that "Automatic" no longer means "always convert": since iOS 16.3.1 it checks whether the receiving system can handle HEIC and skips the conversion if it can. If you specifically want JPEGs on the other end, that check can work against you.
Convert what you already have. img-compress's HEIC to JPG converter reads HEIC files and saves them back out as JPG that any form will accept, with nothing uploaded anywhere — the conversion runs in your browser. Need a lossless copy for editing rather than uploading? The HEIC to PNG converter works the same way.
One honest limitation: that converter needs Safari — on an iPhone, iPad or Mac it works; in Chrome, Edge or Firefox it can't, because those browsers don't ship an HEVC decoder and we deliberately don't bundle our own. If you're on Windows, opening HEIC files on Windows covers what does work there.
Why doesn't everything just support HEIC?
Because it isn't only a technical question. HEIC stores its image data using HEVC, a video codec covered by a large pool of patents with licensing terms that make shipping a decoder a legal and financial decision rather than an engineering one. That's why Chrome, Edge and Firefox — all of which could technically do it — still don't, nearly a decade after the format arrived.
JPG has been the universal, no-surprises default for three decades and carries none of that baggage. Which is the unsatisfying but practical answer: when something needs to accept your photo, JPG is still the format that always works.