Converter
CMYK to HEX Converter
For taking a colour that was specified for print and getting it onto a screen. Move the ink sliders and the hex code updates as you go.
These values are mathematical approximations. Ink, paper, press calibration and colour profile all change the printed result — always approve colour from a physical proof. Full disclaimer.
How the conversion works #
This runs in two moves. First the ink percentages become RGB channel values, then those become a hex string.
Each ink multiplies rather than subtracts, which is what makes the model subtractive: 50% cyan lets through half the red light, and 50% black on top of that lets through half of what remains, leaving a quarter.
A worked example #
Take C 88, M 44, Y 0, K 0.
- As fractions: c = 0.88, m = 0.44, y = 0, k = 0.
- R = 255 × 0.12 × 1 = 30.6, rounded to 31.
- G = 255 × 0.56 × 1 = 142.8, rounded to 143.
- B = 255 × 1 × 1 = 255.
- To hex: 31 is 1F, 143 is 8F, 255 is FF.
- The result is #1F8FFF.
Convert #1E90FF to CMYK and back and you land on #1F8FFF — one digit adrift in two channels. That drift is rounding, not error: percentages are whole numbers, and 8-bit channels are whole numbers, and they do not divide evenly into each other. It is invisible to the eye but worth knowing if you are writing tests against these functions.
Common CMYK to HEX values #
| Colour | CMYK | HEX | RGB |
|---|---|---|---|
| Black | 0, 0, 0, 100 | #000000 | 0, 0, 0 |
| White | 0, 0, 0, 0 | #FFFFFF | 255, 255, 255 |
| Red | 0, 100, 100, 0 | #FF0000 | 255, 0, 0 |
| Lime | 100, 0, 100, 0 | #00FF00 | 0, 255, 0 |
| Blue | 100, 100, 0, 0 | #0000FF | 0, 0, 255 |
| Yellow | 0, 0, 100, 0 | #FFFF00 | 255, 255, 0 |
| Cyan | 100, 0, 0, 0 | #00FFFF | 0, 255, 255 |
| Magenta | 0, 100, 0, 0 | #FF00FF | 255, 0, 255 |
| Dodger blue | 88, 44, 0, 0 | #1E90FF | 30, 144, 255 |
| Navy | 100, 100, 0, 50 | #000080 | 0, 0, 128 |
| Teal | 100, 0, 0, 50 | #008080 | 0, 128, 128 |
| Forest green | 76, 0, 76, 45 | #228B22 | 34, 139, 34 |
| Olive | 0, 0, 100, 50 | #808000 | 128, 128, 0 |
| Orange | 0, 35, 100, 0 | #FFA500 | 255, 165, 0 |
| Crimson | 0, 91, 73, 14 | #DC143C | 220, 20, 60 |
| Maroon | 0, 100, 100, 50 | #800000 | 128, 0, 0 |
| Purple | 0, 100, 0, 50 | #800080 | 128, 0, 128 |
| Hot pink | 0, 59, 29, 0 | #FF69B4 | 255, 105, 180 |
| Silver | 0, 0, 0, 25 | #C0C0C0 | 192, 192, 192 |
| Charcoal | 32, 13, 0, 69 | #36454F | 54, 69, 79 |
When you should not use this #
If you are trying to reproduce a brand colour that has a Pantone reference behind it, do not route it through CMYK to get a hex value. Each conversion loses something, and going spot to process to screen loses twice. Go back to the brand guidelines and find the specified screen value, or match the spot colour directly.
Questions #
Will this hex code match my printed colour?
It will be close, and it is the right starting point, but it will not be identical. Ink on paper reflects light and a screen emits it, so the two can never be the same thing. Expect the hex version to look brighter and cleaner than the print.
Our brand colour is defined in CMYK. What should the website use?
Convert it here to get a starting hex value, then look at it on a few screens and adjust by eye if it feels off. Many brands end up with a web colour that is deliberately a little different from the print colour, because the goal is that both look right in their own medium, not that both share the same numbers.
Why do I get a different hex than Photoshop gives me?
Photoshop is converting through the CMYK profile assigned to your document, which encodes real ink and paper behaviour. This page uses the plain arithmetic. Both answers are valid for different purposes; the profile-aware answer is better when you have a specific press in mind.
Can I enter values over 100?
No, each ink runs from 0 to 100 percent. If you have been given a number above 100, it is probably a total ink coverage figure for all four inks combined rather than a single channel.
What happens to rich blacks?
A rich black such as 60, 40, 40, 100 converts to pure #000000, because once K is at 100 the arithmetic zeroes everything else. That is correct for screen — there is no way to show a richer black than black — but it means the conversion is one-way. You cannot recover the original build from the hex code.