Pick the format by what is in the picture
Six formats cover everything you will do. The choice is not a matter of taste.
- JPEG — lossy, 8-bit, no transparency. It compresses by throwing away detail your eye is least likely to miss. Correct for photographs, and only for photographs. Every save re-compresses, so never edit and re-save the same JPEG repeatedly.
- PNG — lossless, supports transparency. Correct for screenshots, logos, flat graphics, anything with hard edges and large flat areas, and anything needing an alpha channel. Wrong for photographs: a PNG photo is routinely three to six times the size of a visually identical JPEG, and PNG photographs are one of the biggest causes of slow pages on slow connections.
- WebP — does both lossy and lossless, supports transparency, typically 25 to 35 per cent smaller than JPEG at matched quality. Supported by every current browser since around 2020. The sensible default for the web today.
- AVIF — smaller again, especially at low bitrates, supported across the major browsers by about 2024. Slower to encode, and it can smear very fine detail at aggressive settings, so check it on a texture-heavy image.
- TIFF — lossless, 16-bit capable, huge. For print delivery and archives.
- PSD / XCF / KRA — working files with layers. Not delivery formats. Do not send one to a printer expecting it to work.
The red-text problem
JPEG stores brightness at full resolution but usually stores colour at half resolution in each direction. That is chroma subsampling, written 4:2:0, and it is invisible in a photograph of a face or a landscape because colour genuinely does change slowly there.
It is very visible on saturated coloured text and hard colour edges. Red type on white saved as JPEG gets a soft, dirty fringe. That is not a quality-setting problem; it is structural to how the format stores colour.
So red text on white goes out as PNG or WebP, never JPEG. Screenshots of code, spreadsheets, anything with thin coloured lines: the same. This one rule will save you an argument with a client who thinks you delivered a blurry file.
Convert, do not assign
Now the question in the title.
A colour profile tells software what the numbers in your file mean. Red at 255 is a different physical red in sRGB than in Adobe RGB, because Adobe RGB describes a larger range of colours — a wider gamut — with the same 0-to-255 scale.
So here is the washed-out mechanism, exactly. You edit in Adobe RGB. You export with the Adobe RGB profile attached. The file goes to a marketplace, a chat app or an older Android gallery that ignores or strips the embedded profile. That software assumes sRGB, because everything assumes sRGB. Your numbers are now read against a smaller gamut, every saturated colour is pulled inwards, and the image looks flat and dull compared with what you saw.
The reverse also happens: an sRGB file interpreted as Display P3 comes out garish, with orange skin.
Two menu items sit next to each other and do opposite things:
- Assign Profile changes the label without changing a single number. The appearance shifts, because you have changed what the numbers mean.
- Convert to Profile recalculates every number so the appearance stays as close as possible in the new space.
For anything going onto the internet: Convert to Profile > sRGB IEC61966-2.1, then export with *Embed Colour Profile* ticked. In Photoshop's *Export As* or *Save for Web* there is a checkbox called "Convert to sRGB" — leave it on. GIMP has *Image > Colour Management > Convert to Colour Profile*. Photopea's colour management is limited, which in practice means it mostly works in sRGB and that is usually fine for web work and a liability for print.
Edit in a wide gamut if your monitor shows one and you know why. Deliver sRGB. Print is a different conversation — CMYK, paper profiles, soft proofing — and belongs in vector and print.
Sizes that matter on a slow connection
A large share of the people who will open your image are on a phone on mobile data, paying per megabyte. Treat file size as part of the design.
- Resize to the size it will be displayed. A 4000-pixel photo shown in a 600-pixel column is 40 times more data than necessary. If the site serves high-density screens, export at twice the display width and stop there.
- Quality 100 is a waste. JPEG quality 75 to 82 is typically indistinguishable from 100 at a third of the size. Test it: export both, flip between them at 100 per cent zoom, and see whether you can tell.
- Aim for 100 to 300 KB for a full-width photograph on a page. A 3 MB hero image is a decision to lose readers.
- Check the actual number. Squoosh (squoosh.app) shows original and compressed side by side with a live file size, in a browser, free. If it has gone by the time you read this, ImageMagick and
cwebpdo the same from a command line, and GIMP's export dialogue shows the size as you move the quality slider.
Metadata, including the part about your address
A photo from a phone carries EXIF: camera, settings, date, and often GPS coordinates. Posting a picture of something you are selling, taken in your home, with the coordinates attached, tells every stranger where you live.
Most export dialogues have a metadata dropdown. Set it to *None* or *Copyright only* for anything public; exiftool -all= photo.jpg strips the lot. Some platforms remove EXIF on upload, several do not, and a file sent as a document rather than an image keeps everything.
Today: check your last exported image — pixel width, file size, colour profile. If it is 4000 pixels and 4 MB for a web page, you have found a five-minute fix worth more than an hour of retouching.
Before you move on