RGB vs CMYK: Screen Colour and Print Colour Compared

RGB makes colour by adding red, green and blue light on a screen. CMYK makes colour with cyan, magenta, yellow and black ink that takes light away from white paper.

What is CMYK?

CMYK is the colour model of four-colour printing, named after its four inks: cyan, magenta, yellow and black.

CMYK is subtractive: it starts from white paper and each ink takes light away, so its primaries are cyan, magenta and yellow.

Equal amounts of cyan, magenta and yellow ink usually print a dark brown rather than black, which is why CMYK adds black ink as a fourth component, K.

In CSS, device-cmyk() takes cyan, magenta, yellow and black each as a number from 0 to 1 or a percentage from 0% to 100%.

A device CMYK value has no colorimetric interpretation of its own; the colour it produces depends on the characteristics of the output device.

Each printer implements its own version of the CMYK colour space, so the same CMYK numbers can print as slightly different colours on different printers.

What is the difference between RGB and CMYK?

They describe colour for two kinds of device. A screen gives off light, so RGB says how much light to add; paper only reflects light, so CMYK says how much ink to put down to hold light back.

RGB is additive: it starts from black and adds red, green and blue light, and all three at full strength make white.

RGB and CMYK side by side.
AttributeRGBCMYK
How colour is made Adds light Takes light away with ink
Starting point Black White paper
Components Red, green, blue Cyan, magenta, yellow, plus black ink
Values in CSS 0 to 255 per channel 0% to 100% per component
Typical device Screens Printers
What the numbers mean A point in sRGB for a hex code or rgb() value Amounts of ink for one printer

Screens typically display colour directly in RGB, while printers often represent colour with CMYK.

On the screen side, CSS fixes the numbers. An RGB colour is three channel values - red, green and blue - and each one is a whole number from 0 to 255, where 0 is none of that channel and 255 is the most of it. From there you can write RGB values as a hex code.

A hex code and an rgb() value both name a point in sRGB, the colour space CSS resolves these notations into. That space is the one every page in the colour converter section reads.

Why do printers use CMYK instead of RGB?

Because paper gives off no light of its own. A screen starts dark and adds light; paper starts white, and the only way to make a colour on it is for ink to absorb part of the light falling on it.

With black at 0, the naive conversion makes cyan 1 minus red, magenta 1 minus green and yellow 1 minus blue.

Each printing ink holds back one of the three screen lights, so red on paper is magenta and yellow together: between them they hold back green and blue.

Under the naive formula, rgb(255, 0, 0) becomes 0% cyan, 100% magenta, 100% yellow and 0% black.

Why can some screen colours not be printed?

Because a printer can only make the colours its inks and paper allow, and a screen can show colours outside that range.

A device's gamut is the set of colours it can produce.

A colour outside the printer's gamut cannot be printed as it is; it is matched to the closest colour the printer can produce.

The closest printable colour is still a different colour, so a screen colour and its print can visibly disagree. Writing the numbers in CMYK does not change that; the press prints only what its inks can make.

The limit runs both ways: CSS Color Module Level 5 gives a bright green, specified through a FOGRA39 CMYK profile, that lies outside the sRGB gamut.

So neither range contains the other, and which colours fall outside depends on the particular screen and press.

Why is a formula-only CMYK conversion approximate?

Without a profile there is only arithmetic. CSS Color Module Level 5 publishes the naive conversion, on channel values scaled to 0 to 1 and written R′, G′ and B′:

The naive conversion scales red, green and blue to 0 to 1, takes black as 1 minus the largest of the three, and takes cyan as (1 minus red minus black) divided by (1 minus black), with magenta and yellow worked the same way.

  • K = 1 − max(R′, G′, B′)
  • C = (1 − R′ − K) / (1 − K)
  • M = (1 − G′ − K) / (1 − K)
  • Y = (1 − B′ − K) / (1 − K), and C, M and Y are 0 when K is 1

The CMYK converters on this site use exactly this formula: you can convert RGB to CMYK with this formula or turn a hex code into CMYK percentages.

Under the naive formula a grey, where red, green and blue are equal, becomes black ink alone, with 0% cyan, magenta and yellow.

Read back with the naive formula, 100% black on its own and 100% of all four inks both give rgb(0, 0, 0).

So the formula moves as much of a colour as it can into black ink, and a trip from CMYK to RGB and back does not always return the ink mix you started with.

You can read an ink mix back as RGB or write the same mix as a hex code and see 100% black alone and 100% of all four inks land on the same screen colour.

The naive conversion is necessarily approximate, because it knows nothing about the colorimetry of the inks, dot gain or the colorimetry of the RGB space.

A formula-made CMYK number shows roughly which inks a colour leans on, not what a particular press will print.

Why do print workflows convert colour through ICC profiles?

Because a profile carries what the formula lacks: a measured description of how one device reproduces colour.

An ICC profile gives a colour management system the information it needs to convert colour data between a device's own colour space and a device-independent colour space.

ICC device profiles meet in a shared profile connection space, based on the CIE 1931 standard colorimetric observer, so input and output profiles made separately can be paired at run time.

Calibrated CMYK needs an ICC profile made for the particular combination of inks, paper, total ink coverage and equipment.

For print, colours are typically converted to the printer's colour space by looking up CMYK values in an ICC profile.

A profile still cannot print what the press cannot make, but it states what happens to that colour instead.

The ICC defines four rendering intents for colours a device cannot reproduce: perceptual, saturation, media-relative colorimetric and ICC-absolute colorimetric.

Perceptual suits photographs, saturation suits charts and diagrams, and ICC-absolute colorimetric suits spot colours and proofing.

The current ICC specification is ICC.1:2022, profile version 4.4, and the ICC specification was published as ISO 15076-1 in 2005.

The screen side has no such loss: a hex code already names an sRGB colour, so nothing changes when you convert a hex code to RGB.

Frequently Asked Questions

What happens if you print an RGB file?

It still prints. A printer lays down ink, so the RGB values are converted to the printer's colour space first, and any colour outside its gamut is matched to the closest one it can produce. The profile and rendering intent used for that step decide how close the print gets.

Is a hex colour code RGB or CMYK?

RGB. A hex colour code writes the red, green and blue channels of an sRGB colour, so it has no CMYK form of its own. Ink percentages for it come from an RGB to CMYK conversion, with the same gamut limits as any other.

Is CMYK or RGB better?

Neither, in general, because they describe different devices. RGB describes light from a screen and CMYK describes ink on paper, so the right one is the model of the device the colour will end up on.

Do professional printers use CMYK or RGB?

Four-colour presses print with cyan, magenta, yellow and black ink, so a job for one is sent as CMYK, ideally converted through an ICC profile for that press's inks and paper. Some wide-gamut printing adds inks: CSS Color 5 describes seven-colour CMYKOGV.

The converters themselves sit in the colour converter section.