VCGT (video card gamma table) is an optional tag in an ICC display profile, with the signature vcgt, that stores one calibration curve each for red, green, and blue. Calibration software writes these curves so the computer can adjust each channel of the video signal before it reaches the display. The rest of the profile then describes how the display behaves with that adjustment in place.
VCGT is not part of the core ICC specification. It is a private tag that Apple introduced and that calibration tools on macOS and Windows widely use.
How is VCGT different from the TRC?
An ICC display profile usually has two kinds of curves, and they do different jobs:
TRC (rTRC, gTRC, bTRC) | VCGT (vcgt) | |
|---|---|---|
| Purpose | Describes the display’s tone response for color management | Changes the signal sent to the display |
| Used by | Color-managed applications converting colors | The system’s per-display gamma table |
| Required? | Yes, for a matrix/TRC display profile | No, it is optional |
| Shape | Gamma value, parametric curve, or sampled table | Per-channel table or a simple formula |
In short, the TRC says “this is how the display responds”, while VCGT says “adjust each channel like this first”. A profile can have a TRC without any VCGT; many do.
What can a VCGT tag hold?
The tag stores either a table or a formula:
- Table: three channels of sampled values, stored as 8-bit or 16-bit entries. A common size is 256 entries per channel.
- Formula: for each channel, a gamma value with a minimum and maximum output. The curve runs from the minimum to the maximum following that gamma.
Either way, VCGT holds three independent 1D curves. It cannot store a full 3D color transform, so it can correct per-channel tone and white balance but not cross-channel color errors. That is why a 3D calibration LUT can only become VCGT when its red, green, and blue outputs behave independently.
Stored curves are not active curves
On macOS, a display profile’s VCGT curves are normally loaded into that display’s gamma table when the profile is in use. But the gamma table can change afterwards: another application, a calibration tool, or a display reconfiguration can replace it. So keep three states apart:
- Profile contents: the curves stored in the
.iccfile. - Assigned profile: the profile macOS currently uses for the display.
- Active curves: what is in the display’s gamma table right now.
Reading a profile file tells you only the first. None of the three measures what the display actually shows; that takes a meter and calibration software.
How do you check a profile’s VCGT?
- In your browser: drop the profile on the free online ICC profile inspector. It reports whether the profile has no VCGT tag, readable curves, a form it does not read, or damaged data, and plots readable curves.
- In PatternSpace for Mac: the Inspect tab of the ICC tools shows the stored VCGT entry count and curves, for an imported file or a display’s active profile. The Display tab handles profile assignment and temporary calibration and reads the active state back.
A flat diagonal VCGT, where output equals input, means the curves change nothing. Curves that bend or end below the top usually lower contrast or adjust white balance on purpose.
Can you add VCGT to a profile?
In PatternSpace’s ICC tools, the Build tab can attach calibration curves from a supported .cube LUT. A 1D LUT supplies the channel curves directly; a 3D LUT is accepted only when its channels are independent within tolerance. PatternSpace checks range, endpoints, monotonicity, and separability, then resamples the curves to 256 entries by default. Building and inspecting profiles is free; exporting a generated profile requires Pro.
Have the calibration LUT in another format? Convert it to Cube with the free online LUT converter.
Next steps
See the ICC profile tools guide for building, comparing, verifying, and assigning profiles on Mac, or learn how to inspect an ICC profile on Mac.