I converted one real iPhone photo at three quality settings, then compared every single pixel against the HEIC it came from. Here is the damage, in numbers.
Short answer: at the default 85%, the JPG differs from the HEIC by an average of 0.92 levels out of 255 — about a third of one percent. Two thirds of the picture comes through untouched: 67.33% of pixels are exactly the same values, and only 0.51% differ by 16 levels or more. The worst single pixel in the frame is off by 180, and it sits on a hard edge, which is where JPEG always struggles.
What I measured on this site: one real iPhone HEIC — 41,465 bytes, 700×476, which is 333,200 pixels — converted today at 75%, 85% and 95%, with each output downloaded and compared against the HEIC decoded on the same machine. The 85% JPG is 38,078 bytes, smaller than the 41,465-byte HEIC it came from. So at the default setting you are not paying in size; you are paying in a thin layer of detail along the edges.
One honest caveat up front: the reference is my decode of the HEIC, and the page decodes with its own build. A small part of every number below could be two decoders disagreeing rather than JPEG losing something. I did not separate the two, so treat these as “what you get out versus what went in”, not as a pure measure of the JPEG step.
| Setting | JPG out | Mean error (of 255) | RMSE | PSNR | Worst pixel | Pixels unchanged | Pixels off by 16+ |
|---|---|---|---|---|---|---|---|
| 75% — Smaller file | 30,231 B | 1.238 | 3.782 | 36.58 dB | 177 | 66.28% | 1.31% |
| 85% — Good (default) | 38,078 B | 0.920 | 3.131 | 38.22 dB | 180 | 67.33% | 0.51% |
| 95% — High | 57,617 B | 0.548 | 2.626 | 39.75 dB | 177 | 70.76% | 0.3% |
The middle column is the one to read: an average error of 0.92 out of 255 means that if you picked a pixel at random, it moved by less than one level. Broken down by how much pixels move at 85%: 26.72% shift by 2 levels or more, 3.28% by 8 or more, 0.51% by 16 or more, and 0.19% by 32 or more. The damage is not spread evenly — it piles up along edges and fine detail, which is exactly the shape of JPEG loss.
A single pixel off by 180 sounds alarming next to an average of 0.92, and the gap between those two numbers is the whole story. It means the loss is concentrated: a handful of pixels at high-contrast boundaries carry nearly all of it, while the bulk of the frame is untouched. Raising the quality does not fix that — the worst pixel is 177 at 75% and still 177 at 95%. What the higher setting buys is breadth, not the extremes: the share of pixels off by 8 or more falls from 5.84% to 0.87%.
Judge it by what you get for the bytes. Going from 75% to 95% nearly doubles the file — 30,231 to 57,617 bytes — and moves PSNR from 36.58 dB to 39.75 dB, while the mean error halves from 1.238 to 0.548. That is real improvement with sharply diminishing returns, and it lands you with a file 39% larger than the HEIC you started from. At 85% you get the middle: 38,078 bytes, smaller than the original, with two thirds of the frame untouched.
To check that these numbers are not something odd about this page, I re-encoded the same decoded pixels with a plain JPEG encoder at quality 85 on my own machine:
| Output | Bytes | Mean error | RMSE | PSNR | Worst pixel |
|---|---|---|---|---|---|
| This page at 85% | 38,078 | 0.920 | 3.131 | 38.22 dB | 180 |
| Local encoder at quality 85 | 38,869 | 0.807 | 2.045 | 41.92 dB | 36 |
Similar size, similar average error — so this is ordinary JPEG behaviour, not a strange encoder. The one number that does not match is the worst pixel: 180 versus 36. Two encoders handling hard edges differently (chroma subsampling is the likely culprit) would do that. I did not dig into which, so I am not going to claim a cause — but it is a reminder that “quality 85” is not one single recipe across encoders, and that the quality scales are not directly comparable either.
For handing a photo to a person or a website, today’s numbers say yes: average error 0.92 of 255, 67.33% of pixels identical, and a file smaller than the HEIC it came from. I did not run a viewing test, so I am giving you measurements, not an opinion about what your eye can see.
No. It is still JPEG. At 95% the worst pixel is off by 177 and 20.35% of pixels still differ from the original by at least 2 levels. It is closer, not exact.
Not at 85%, not with this photo: 41,465 bytes in, 38,078 bytes out. At 95% it does — 57,617 bytes.
One real iPhone photo, 700×476. That is one picture, and this is a photo-specific question — a shot full of fine detail would measure worse than a soft one. The size-and-speed side of the trade is measured across more files in the file-size runs.
Yes. All three outputs are 700×476, and larger files keep their full size too — verified up to 12,000×9,000 in the large-file test.
Want to check it on your own photo? Convert it here and compare the two files yourself — nothing leaves your device.
First published: 27 September 2026