Goals for profile assessment
ICC recommends the following checklist for creating or assessing ICC v4 profiles. These goals are intended to avoid security risks, ensure conformance with the ICC specification, and enable a common framework for reporting profile quality.
On this page we summarize the recommended assessment criteria for ICC profiles. We recommend that all profile builders validate profiles against these criteria. These criteria apply to all profile versions unless stated. ICC specification section numbers relate to ISO 15076-1:2025 (based on ICC.1:2022).
Security
Channel counts in tags match data colour space
Permitted data colour spaces and associated channels can be found in section 7, table 20 of the ICC specification.
Header is 128 bytes and correctly encoded
The profile header is defined in section 7.2 of the ICC specification.
Platform, Creator, Manufacturer and CMM fields correspond to registered signatures or are zero
Signatures for these elements can be found in the ICC signature registry. Zero is hex zero (00h).
Illuminant corresponds to D50 (if profile is ICC v4)
See https://www.color.org/whyd50.xalter for an explanation.
PCS is Lab or XYZ
See section 8.6 in the ICC specification for details of DeviceLink class profiles.
Note: The PCS of a DeviceLink profile should match the data colour space of the last profile in the profile sequence used to build the profile. In an iccMAX profile other connection spaces are possible, including spectral or multiplex.
Tags correctly aligned - offset and length correspond to tag table, no overlapping tags or gaps between tags - and correctly encoded
See section 7.3 of the ICC specification for details of tag table construction.
Tag table correctly encoded
See section 7.3 of the ICC specification for details of tag table construction.
No known malware signatures present
If the profile is constructed as described in this section there is no room for malware. Profiles can be checked against a current database of malware signatures.
EOF follows last tag (including four-byte boundary)
If the EOF is correctly placed, with no additional bytes before or after, malware cannot be inserted at the end of the profile.
Excessive calculator elements not present
iccMAX profiles have unrestricted processing elements, and care should be taken to avoid these requiring excessive memory or processing operations. ICC recommends that an estimate of computation cost is provided, in terms of bytes per pixel and floating point operations per pixel.
Private tags not present
ICC recommends that private tags are not used in a profile, although it is recognised that some vendors prefer to insert such tags. Where present, tags should ideally not include processing elements, to ensure consistency across CMMs. Profile creators should consider use of the dictType metadata tag in place of a private tag.
Where present, private tags should preferably be documented
Profile creators may register documentation for private tags with ICC.
Private tags do not contain malware
Creators of private tags should take steps to ensure that no vulnerabilities or potential exploits are afforded by a private tag.
Private tags do not contain exploitable non-operation (NOP) instructions
Creators of private tags should take steps to ensure that no vulnerabilities or potential exploits are afforded by a private tag.
Conformance
Tags are correctly encoded according to the tag type
See section 10 of the specification for tag type encodings.
Note: This includes signature, structure, data types, ranges and encoded values.
cprt and desc tags encoded as Unicode or text according to specification version
ICC v2 profile versions define these as ASCII text; in ICC v4 and iccMAX they are Unicode.
Tags only use tag types allowed for the tag
Permitted tag types are identified in section 9 of the ICC specification.
All required tags for profile class are present
See section 8 of the ICC specification for a listing of tags required for each profile class.
Additional tags not required for profile class (other than allowed optional tags) are not present; or are flagged as private tags
Non-required tags create uncertainty on the processing outcome, since most CMMs will not process them.
Private tags have a registered signature
All private tags must be registered with the ICC. Registered tag signatures can be seen in the private tag registry.
Private tag documentation is available through the tag registry
ICC recommends that profile builders provide documentation on the structure and encoding of any private tags.
Undocumented private tags are identified
When assessing an ICC profile, any private tags without documentation should be identified.
Profile class is consistent with data colourspace
The ICC specification associates different profile classes with permitted data colourspaces. See section 7.2.6 and section 8.
Header content conforms with specification
See section 7.2 in the ICC specification for header encoding requirements.
Tags present correspond to profile version
Different versions of the specification define slightly different sets of tags and tag types. Care should be taken that the tags used in a profile match the profile version stated in the header.
Wtpt correctly encoded - D50 for v4 display; or valid value for other profile classes
In all ICC profiles, the XYZ value of the media white is chromatically adapted to D50, and normalised so that Y=1 for a perfect reflecting diffuser (for reflective media) or the display white (for emissive media). In iccMAX profiles, the media white is also chromatically adapted to the PCS adopted white colorimetry, but this may be different from D50.
Reserved bytes are zero
The header and many tag types define reserved bytes. These should always be set to (hex) zero.
Tags start and end on four-byte boundaries
ICC specifications require all tags to be a multiple of four bytes.
Quality
While it is not possible to assess all aspects of transform quality, the recommended tests below give some indication of the colorimetric accuracy and invertibility of the profile.
Recommended error statistics are average, maximum and 95th percentile in DE2000.
First and second round trip
A round trip is performed when the profile is used to convert data from the PCS to the data colour space and back. First round trip errors are usually larger as they include differences between the PCS and media gamuts.
Curve round trip differences
If the round trip error is small the curve can be inverted. Note that curves in AToBx tags may not necessarily be the inverse of corresponding curves in BToAx tags.
Smoothness metric values of overall transform
Discontinuities in a transform can lead to contouring ('banding') in a reproduction. The smoothness metric quantifies the lack of smoothness in the encoded transform.
If characterization data is present, round trip differences of profile output
These round trip errors indicate the accuracy of the relative colorimetric rendering intent with respect to the characterization data from which it was generated.
Characterization data CIELAB → data encoding → CIELAB.
Note: Media-relative colorimetric data should be converted to values relative to a perfect diffuser.
This list is a guide only and is not comprehensive. There is no guarantee that a profile that meets the requirements listed will be suitable for a given application. iccMAX profiles may have different conformance requirements.
The ICC Profile Assessment Working Group has developed a tool for assessing ICC profiles, using the above criteria. It evaluates profiles in terms of their conformance with the ICC specification, their security against vulnerabilities, and some aspects of the quality of the transform provided in the profile. It can be found at iccPawgreport. The tool is free to use, and will provide a comprehensive report on the validation and any issues found.
Compare ICC profiles and characterization data sets at https://chardata.colourbill.com/.