The ICC Profile to JSON Converter opens the binary internals of an ICC or ICM color profile and turns them into clean, readable JSON. It is useful for color engineers, print and photography workflows, and anyone debugging color management who needs to see exactly what a profile claims about a device.
How it works
An ICC profile follows the ICC.1 specification with a rigid binary layout, which makes it fully parseable in the browser:
- Header (bytes 0–127). Fixed-position fields including profile size, CMM
type, version, device class, color space, profile connection space (PCS),
creation date, the
acspsignature, platform, manufacturer, model, and rendering intent. Multi-byte numbers are big-endian. - Tag table (from byte 128). A 4-byte count followed by 12-byte entries — each a 4-character signature, a byte offset, and a size pointing into the tag data.
- Tag data. The tool decodes the common tag types it finds.
Decoded tag types
- Text —
text,desc(textDescription), andmluc(multiLocalizedUnicode, UTF-16BE) are read as strings, used for the profile description and copyright. - XYZ — stored as
s15Fixed16fixed-point and converted to decimals by dividing by 65536, giving the white point, black point, and RGB primaries. - Curves —
curvtone-reproduction curves report a single gamma value or a point count;paraparametric curves are flagged by type.
Tags the tool doesn’t specifically decode are still listed with their data type, offset, and size so nothing is hidden.
Notes and tips
The decoder validates the acsp signature at byte 36 before doing any work, so
a non-profile file produces a clear error rather than nonsense. Because parsing
is purely structural and runs locally, it is fast and safe for proprietary or
custom-built profiles. Use the JSON output to document a profile, diff two
profiles, or feed profile metadata into your own color-management tooling.