Compact ICC Profiles

June 7, 2023 ยท View on GitHub

The ICC profiles in this collection contain the minimum tags necessary to correctly represent a color space and, in the case of ICC V2 profiles, use custom packing to minimize file size. These profiles are intended for embedding in image files or software where the size of the profile is a consideration.

Profile description and copyright text are minimal. All profiles in this collection are released to the public domain under the Creative Commons CC0 license. They are free from restrictions on distribution and use to the extent allowed by law.

Details on the process used for creating these profiles can be found here

Conventions

For color spaces that use a constant gamma value, profiles are provided in both ICC V2 and V4 versions (with the exception of HDR video color spaces, which are V4 only). V2 profiles can be made smaller, and V2 has better software support, but V4 allows for a slight increase in the gamma precision.

For color spaces that have complex tone reproduction curves (TRCs), I have provided multiple options. These color spaces are best represented using the newer V4 parametric curve type, so if you know the software reading the image is V4 compatible, those are the best choice. For the V2 profiles, I have created two variants: -micro and -magic.

The -micro version of the profile uses a TRC that is balanced between accuracy and size and should be more than adequate for any 8-bit per channel images (e.g. JPEG). For more accuracy, the -magic version of the profile uses a TRC with a larger number of points while still being significantly smaller than the standard profiles that use 1024 curve points. These curves have been tuned so that in many cases they will give greater accuracy than the standard TRCs despite the smaller size, hence the name: magic.

Profiles in this Collection

sRGB/scRGB

These profiles are defined using the true sRGB primaries, as defined in both the sRGB and scRGB standards, using the process defined in the ICC's extension spec for sRGB profile makers. The values in these profiles differ very slightly from those in profiles derived from the Rec. 709 primaries, which are commonly given as sRGB.

In addition to the usual V2 variants, I have created a -nano version of the sRGB profile. This was done partially as an exercise to determine the minimum size for a useable sRGB-compatible profile and partially because sRGB is a special case where an extra-small profile may be useful.

The scRGB color space uses the same primaries as sRGB but with a linear curve. It defines an expanded gamut by means of encoding pixel values outside the normal range of [0-1]. It should be used only with images that are encoded in linear RGB with at least 16 bits per channel.

File NameFile SizeDescription StringNotes
sRGB-v2-nano.icc410 bytesnRGB20-Point Curve
sRGB-v2-micro.icc456 bytesuRGB42-Point Curve
sRGB-v2-magic.icc736 bytessRGB182-Point Curve
sRGB-v4.icc480 bytessRGBParametric Curve
scRGB-v2.icc372 bytescRGBLinear Curve

Greyscale

These are greyscale versions of the sRGB profiles, with the same TRC and white point.

File NameFile SizeDescription StringNotes
sGrey-v2-nano.icc290 bytesnGry20-Point Curve
sGrey-v2-micro.icc336 bytesuGry42-Point Curve
sGrey-v2-magic.icc616 bytessGry182-Point Curve
sGrey-v4.icc360 bytessGryParametric Curve

Display P3

The Display P3 color space is based on the DCI-P3 D65 color space but uses the sRGB transfer function rather than a constant gamma of 2.6. This color space is becoming popular as a display profile on newer wide-gamut displays.

Note: Apple has shipped at least two versions of their Display P3 profile. The newer one, dated 2017, uses the sRGB TRC. The older one, dated 2015, has slightly different values for the linear segment of the curve. The profiles in this collection use the true sRGB curves as documented by Apple and used by other vendors, such as Adobe.

Warning: The P3 color space requires a negative Z value for the red primary when adapted to the profile illuminant, which is not allowed according the ICC spec. While some software will handle the negative value correctly, it may cause issues with software that adheres strictly to the ICC specs.

Max-Correctness

These profiles use the correct negative Z value for the profile-adapted red primary.

File NameFile SizeDescription StringNotes
DisplayP3-v2-micro.icc456 bytesuP342-Point Curve
DisplayP3-v2-magic.icc736 bytessP3182-Point Curve
DisplayP3-v4.icc480 bytessP3Parametric Curve

Max-Compatibility

These profiles have the red Z value nudged up to 0, with adjustments made to the other colors and chromatic adaptation tags to compensate and restore balance. Use these if you're not sure of software compatibility.

File NameFile SizeDescription StringNotes
DisplayP3Compat-v2-micro.icc456 bytesuP3C42-Point Curve
DisplayP3Compat-v2-magic.icc736 bytessP3C182-Point Curve
DisplayP3Compat-v4.icc480 bytessP3CParametric Curve

DCI-P3

This profile defines a constant gamma of 2.6 and the P3 Theater whitepoint (x=0.314,y=0.351). It is intended only for video use at high bit depths (HDR).

File NameFile SizeDescription StringNotes
DCI-P3-v4.icc464 bytesTP3Gamma 2.6

ProPhoto RGB (ROMM RGB)

ProPhoto is an extremely wide gamut color space and should be used only for images encoded with at least 16 bits per channel. The -micro curve for this color space is larger than others to ensure greater accuracy in these higher bit depth files.

File NameFile SizeDescription StringNotes
ProPhoto-v2-micro.icc496 bytesuROM62-Point Curve
ProPhoto-v2-magic.icc756 bytesROMM192-Point Curve
ProPhoto-v4.icc480 bytesROMMParametric Curve

Rec. 601 (BT.601)

Rec. 601 is a color space created for video but occasionally appears in image files. Rec. 601 defines different color primaries for NTSC (525 line) and PAL (625 line) video formats. Profiles are included for both color spaces.

File NameFile SizeDescription StringNotes
Rec601NTSC-v2-micro.icc460 bytesu60144-Point Curve
Rec601NTSC-v2-magic.icc738 bytesR601183-Point Curve
Rec601NTSC-v4.icc480 bytesR601Parametric Curve
Rec601PAL-v2-micro.icc460 bytesu60P44-Point Curve
Rec601PAL-v2-magic.icc738 bytesR60P183-Point Curve
Rec601PAL-v4.icc480 bytesR60PParametric Curve

Rec. 709 (BT.709)

Rec. 709 is a color space created for video but occasionally appears in image files. Note that although the color primaries are nearly identical to sRGB, Rec. 709 uses a different transfer curve, so these color spaces are not interchangeable.

File NameFile SizeDescription StringNotes
Rec709-v2-micro.icc460 bytesu70944-Point Curve
Rec709-v2-magic.icc738 bytesR709183-Point Curve
Rec709-v4.icc480 bytesR709Parametric Curve

Rec. 2020

Warning: The Rec. 2020 color space requires a negative Z value for the red primary when adapted to the profile illuminant, which is not allowed according to the ICC spec. While some software will handle the negative value correctly, it may cause issues with software that adheres strictly to the ICC specs.

Max-Correctness

These profiles use the correct negative Z value for the profile-adapted red primary.

File NameFile SizeDescription StringNotes
Rec2020-v2-micro.icc460 bytesu20244-Point Curve
Rec2020-v2-magic.icc790 bytes2020209-Point Curve
Rec2020-v4.icc480 bytes2020Parametric Curve

Max-Compatibility

These profiles have the red Z value nudged up to 0, with adjustments made to the other colors and chromatic adaptation tags to compensate and restore balance. Use these if you're not sure of software compatibility.

File NameFile SizeDescription StringNotes
Rec2020Compat-v2-micro.icc460 bytesu20C44-Point Curve
Rec2020Compat-v2-magic.icc790 bytes202C209-Point Curve
Rec2020Compat-v4.icc480 bytes202CParametric Curve

Gamma 2.4

This profile uses a constant gamma of 2.4 instead of the transfer function given by the standard, which matches that of Rec. 709. The standard defines a gamma of 2.4 for the reference display device, so some applications use gamma 2.4 encoding to match.

File NameFile SizeDescription StringNotes
Rec2020-g24-v4.icc464 bytes2024Gamma 2.4

Adobe Compatible

These profiles are compact versions of commonly used Adobe-created color spaces. Because these color spaces all use constant gamma values, the Adobe versions of the profiles are quite small. However, with custom packing and abbreviated text tags, these profiles are almost 200 bytes smaller. They are also free of the license restrictions that burden Adobe's versions of the profiles.

The primary colorants and whitepoint values in these profiles were adapted from the published x,y chromaticity coordinates and then tested for compatibility with the Adobe profiles. Most of Adobe's ICC profiles are well-behaved, but in cases where they are not, these compatible profiles have very slightly different primaries to bring them into balance. No values deviate from those in the Adobe profiles by more than 1/216.

The V4 profiles in this section encode the gamma value using the newer parametric curve tag, allowing for a slight increase in precision. For example, the Adobe RGB (1998) color space specification defines a gamma of precisely 2.19921875 (2+51/256), which is the nearest value to an ideal gamma of 2.2 that could be represented in a V2 profile. V4 profiles allow encoding 2.2 gamma as 2.19999695 (2+13107/65536). These profiles also include the slope limiting function recommended by Adobe (see Adobe RGB spec, Annex C) and implemented in the Adobe Color Engine. The V4 profiles may give better conversion results when used with software that does not implement slope limiting internally.

File NameFile SizeDescription StringColor Space
AdobeCompat-v2.icc374 bytesA98CAdobe RGB (1998)
AdobeCompat-v4.icc480 bytesA98C
AppleCompat-v2.icc374 bytesAPLCApple RGB
AppleCompat-v4.icc480 bytesAPLC
ColorMatchCompat-v2.icc374 bytesACMCColorMatch RGB
ColorMatchCompat-v4.icc480 bytesACMC
WideGamutCompat-v2.icc374 bytesAWGCWide Gamut RGB
WideGamutCompat-v4.icc480 bytesAWGC

CMYK

Unlike RGB profiles, which need only define 3 primary colorant triplets and a single shared curve, CMYK profiles typically contain multiple complex transforms -- each of which consists of a 3x3 matrix, a set of distinct input curves per channel, an N-dimensional mapping table, and separate output curves per channel. It is not uncommon for CMYK ICC profiles to be in the range of 500KB to 4MB, or more.

While the different structure of CMYK profiles makes it impossible to achieve the same small file sizes as we can for RGB profiles, it is possible to trim a CMYK profile down to the minimum required for a specific use. Since the main purpose of the profiles in this collection is to enable correct display of images on a screen, I have included one such CMYK profile for that purpose.

This profile contains only the A2B0 mapping tag, which defines a perceptual intent mapping from the source CMYK space. The mapping is based on the CGATS TR 001-1995 characterization data, with the gamut stretched to D50 white and black. The primary purpose of this profile is to serve as a default for image viewing or conversion software to use when a CMYK image does not contain an embedded profile. It cannot be used for conversion to CMYK or for other rendering intents.

The perceptual mapping is modeled on the appearance of Adobe's U.S. Web Coated (SWOP) v2 profile, which is the long-time Photoshop default for North American users -- though it is not intended to be a direct replacement for the Adobe profile. Due to the small size of the 4D LUT, this profile will not match the Adobe profile's output exactly, but it should give a correct overall appearance to an image when converted for display.

File NameFile SizeDescription StringNotes
CGATS001Compat-v2-micro.icc8464 bytesuCMY48-Point Input Curves, 6-Point 4D LUT