Practical guide
Inspect an embedded ICC profile and check whether cleaning preserved it
Removing descriptive metadata and retaining a color profile are separate choices. Extract a known profile, inspect its real version and color-space fields, then read the actual cleanup download to see whether that profile survived.
18 October 2026 · Check AI Free
Use one generated profile in three real containers
The examples contain the same 588-byte sRGB built-in profile generated with Pillow 12.3.0 and LittleCMS, using a fixed header date. This is a reproducible embedded profile, not a calibration of your screen. JPEG stores it in two APP2 packets; PNG stores compressed profile data in iCCP; WebP carries ICCP bytes.
The local ICC viewer inspects version, declared versus extracted size, device class, data color space, profile connection space, tag bounds and supported descriptions. It does not perform a full ICC conformance test, measure your display or verify that the image's colors are accurate.
- Download the PNG iCCP example — Project-authored 1 × 1 pixels with the generated profile and no text fields.
- Download the WebP ICCP example — Project-authored 4 × 3 static WebP with the same profile bytes.
Extract and compare the actual profiles
Step 1
Read the multi-packet JPEG example
Open the ICC viewer and click Try JPEG profile. The source is JPEG ICC APP2 sequence. Its packets are deliberately stored as sequence 2 then sequence 1; the reader reconstructs their sequence before inspecting the profile, rather than concatenating physical file order.
Step 2
Check the header values
Expect Inspection state read, Version 4.4.0, actual/declared length 588 / 588 bytes, device class mntr, color space RGB and PCS XYZ. Stored profile description is sRGB built-in. Expand Tag table: there are 11 entries, including desc with a localized en-US description.
Step 3
Save the complete profile and the inspected fields
Click Download extracted ICC bytes to save embedded-profile-1.icc. Copy inspection JSON saves the supported summary, not a rewritten profile. The binary download contains the complete extracted bytes; a shortened description preview does not truncate it.
Step 4
Repeat for PNG and WebP
Click Try PNG profile and Try WEBP profile, or choose the linked icc.png and icc.webp files. Both should produce the same 588-byte profile and header values. Keep each source label to distinguish decompressed iCCP from direct WebP ICCP or reassembled JPEG APP2.
Carry the PNG through both removal policies
Step 1
Keep the ICC profile on the first pass
Choose icc.png in the metadata remover. Leave Keep embedded ICC color profile checked and leave the other category choices at their defaults. This defined input has no matching descriptive metadata to remove, so the result is an unchanged copy with the profile kept byte for byte. Click Remove selected metadata, wait for the no-change result, then click Download unchanged file.
Step 2
Re-read the actual downloaded copy
Choose that download in the ICC viewer. The profile should still be read with the same 588-byte length and header fields. For an exact byte comparison, keep both extracted .icc downloads and compare their bytes in a local byte-comparison tool; matching descriptions alone are weaker evidence.
Step 3
Create a second copy with ICC removed
Choose the original icc.png again. Uncheck Keep embedded ICC color profile, then click Remove selected metadata. Download cleaned file and inspect that exact copy in the ICC viewer. The supported ICC result should be empty, rather than a guessed sRGB profile.
Use absence and damage as different outcomes
Try no ICC gives an empty result for a valid JPEG with no embedded profile. This does not identify the file's intended color space. A missing/duplicated JPEG packet, malformed tag range, bad zlib data or incomplete container instead has warnings or a processing failure; it is not proof that no profile was stored.
Files are bounded to 20 MiB, profiles to 4 MiB each and extracted PNG/WebP profiles to 8 MiB total. PNG iCCP needs browser decompression support; an unavailable capability is unsupported. Large descriptions and tag tables have additional bounds. Raw profile bytes remain downloadable when a supported container yields a partial profile result.
If color appearance matters, retain the original and document the profile policy alongside the output. Removing a profile can change how software displays the file. These tools do not convert pixels between profiles, calibrate devices or make a color-accuracy claim.
- ICC.1:2022 profile format, version 4.4 — Fixed primary specification for profile headers, tag tables and descriptions. Header/tag inspection is narrower than full profile conformance or color accuracy.
Sources and reproducible inputs
- ICC.1:2022 profile format, version 4.4 — Fixed primary specification for profile headers, tag tables and descriptions. Header/tag inspection is narrower than full profile conformance or color accuracy.
- Reproducible PNG ICC input — Generated profile bytes independently matched Pillow, ExifTool and LittleCMS in the B3 reference checks.
- Reproducible WebP ICC input — The same generated profile in a separately decodable static WebP.
Continue with your file
- Choose a batch profile policy — A batch ZIP records retained/removed profile status per verified output.
- Inspect the JPEG APP2 packet containers — Container inventory complements profile extraction.
- Compare WebP flags with observed ICCP — Presence flags and actual chunks can disagree; neither is color calibration.