A color-managed image can carry an ICC profile — a block of data defined by the International Color Consortium that tells software exactly how its colors should be interpreted. When colors look wrong across devices, the embedded profile is usually the first thing to check. This viewer extracts and decodes that profile in your browser.
How it works
The tool locates the raw ICC bytes inside the image container, then decodes the standard 128-byte ICC profile header:
- Extraction. In a JPEG it reads APP2 segments tagged
ICC_PROFILEand reassembles multi-part profiles in sequence; in a TIFF it reads tag 34675 from the first IFD. PNG profiles are detected in theiCCPchunk but are zlib-compressed, so it flags them rather than guessing. - Header decode. From the header it reads the profile size, CMM, version, device class (
mntr,prtr,scnr, etc.), color space, profile connection space (PCS), creation date, primary platform, and the rendering intent. - Tag table. It then reads the tag count and walks the tag table, listing each tag’s four-character signature, offset, and size, and decoding the human-readable
desc/mlucdescription tag.
What the profile fields mean
Device class. The four-character device class tells you what the profile is describing. mntr means a monitor display profile, prtr is a printer, scnr a scanner, spac an abstract color space, and link a device-link profile that converts directly between two color spaces without going through the PCS.
Color space. This is the color space of the device or data being profiled. Common values are RGB (for monitors, cameras, and most web images), CMYK (for print), and GRAY (for grayscale).
Profile Connection Space (PCS). The PCS is the intermediate color space used when converting between two device profiles. ICC profiles use either XYZ (CIEXYZ) or Lab (CIELAB) as the PCS. Most display profiles use XYZ.
Rendering intent. The rendering intent specifies how colors outside the destination gamut are handled during conversion. The four ICC intents are:
| Code | Intent | Typical use |
|---|---|---|
| 0 | Perceptual | Photography, gradients — compress the whole gamut |
| 1 | Media-relative colorimetric | Proofing — match in-gamut colors exactly |
| 2 | Saturation | Charts, logos — preserve vivid colors |
| 3 | ICC-absolute colorimetric | Match absolute white point |
Tag table. Each ICC profile contains a table of typed tags. Key ones to look for: desc (profile description, e.g., “Display P3”), wtpt (white point chromaticity), rXYZ/gXYZ/bXYZ (colorant matrix for RGB profiles), cprt (copyright), and chad (chromatic adaptation matrix).
Practical uses
- Print workflow. Before sending an image to a print provider, confirm the embedded profile is a CMYK or RGB profile appropriate for the output device. A screen-optimized sRGB profile embedded in a file destined for FOGRA39 offset printing will not reproduce colors correctly.
- Web publishing. Most browsers display images assuming sRGB when no profile is present. If your image is tagged with a wide-gamut profile like Display P3, browsers that support P3 will show more vivid colors, but browsers that don’t will interpret the values as sRGB — checking what’s actually embedded explains why colors look different across browsers.
- Camera raw processing. Raw processors often embed a ProPhoto RGB or AdobeRGB profile in exported TIFFs. Viewing the embedded profile confirms whether a downstream step (such as a web resize) has correctly converted to sRGB.
Example
A typical display profile shows device class Display device (monitor), color space RGB, PCS XYZ, rendering intent Perceptual, and a description such as Display P3 or sRGB IEC61966-2.1. The tag table lists entries like wtpt (white point), rXYZ / gXYZ / bXYZ (colorant matrix), and desc.
Notes
A missing profile is not an error — most web images simply assume sRGB. The viewer is read-only and runs entirely on your device, so you can inspect the color setup of confidential or print-bound images without sending them anywhere.