Skip to the tool workspace
Browser 123

How-to Print

How to convert RGB to CMYK for print

A printer asked for CMYK, or your colours came back dull. Which profile to use, the ImageMagick and Ghostscript commands, what happens to bright greens and blues, and when to let the printer convert instead.

Converting to CMYK means translating each colour into ink amounts for one particular press and paper. That translation is an ICC profile, and the profile is the part that matters: the same RGB colour needs different ink on coated paper in Germany than on newsprint in Ohio. So the first step is to ask the printer which profile they want, or whether they would rather convert the file themselves.

The direct wayImageMagickmacOS · Linux · Windows

For an image, convert from sRGB to the printer's profile, keeping in-gamut colours exact (relative colorimetric) and the shadows open (black point compensation):

magick artwork.png -depth 8 -intent Relative -black-point-compensation -profile sRGB.icc -profile FOGRA39L_coated.icc -compress lzw artwork-cmyk.tif
magick identify -format '%[colorspace] %[profile:icc]\n' artwork-cmyk.tif
CMYK FOGRA39L Coated

Install it with brew install imagemagick on a Mac, apt install imagemagick on Debian and Ubuntu, or the installer from imagemagick.org on Windows. The two profile files are below. For a whole PDF, use Ghostscript.

Ask the printer first

There are two ways a printer can want the file, and they are opposite:

  • "Send CMYK." Then you convert, with their profile, and you see the result before they do. Ask which profile. If they say "just CMYK", ask what paper and press it will be on.
  • "Send PDF/X-4." PDF/X-4 is allowed to carry RGB images, as long as the file names the press condition it was made for (the output intent). The printer's software converts at the last moment, with the profile of the press the job actually runs on. Many printers prefer this, because a file someone else converted with the wrong profile can't be undone.

If you don't know which your printer wants, ask before you convert anything. Making the PDF/X file itself is in how to make a print-ready PDF.

Which profile

Printing on Profile to ask about Where it comes from
Coated paper, Europe FOGRA39 (ISO Coated v2), or the newer FOGRA51 (PSO Coated v3) European Color Initiative downloads; Adobe apps ship Coated FOGRA39
Coated paper, US commercial print GRACoL 2013 (CRPC6) Idealliance; Adobe apps ship Coated GRACoL 2006
US magazines (web offset) SWOP Adobe apps ship U.S. Web Coated (SWOP) v2
Uncoated paper The uncoated one the printer names (FOGRA47 or FOGRA52 in Europe) The printer, or the same sites

Many printers publish the profile on their file-preparation page. Use theirs over anything in this table.

The commands here were run with the profiles in Debian's colord-data and icc-profiles-free packages: FOGRA39L_coated.icc (built with ArgyllCMS from the FOGRA39 data) and sRGB.icc. ISO Coated v2 and Adobe's Coated FOGRA39 are built from the same data by other people, so their numbers won't match ours exactly.

What happens to bright colours

A screen makes colour from light and can show greens, blues and pinks that four inks on paper cannot. The profile moves those to the nearest colour the press can print, and the nearest one is duller. Colours already inside the press's range barely change.

Six sRGB colours through FOGRA39 with the command above, then converted back to sRGB to show what the print will look like:

sRGB Naive formula FOGRA39 profile Looks like in print
#00FF00 screen green 100 0 100 0 63 0 96 0 #6BB436
#0066FF electric blue 100 60 0 0 84 53 0 0 #256DB5
#FF6600 orange 0 60 100 0 0 71 98 0 #EC6414
#FF00FF magenta 0 100 0 0 33 69 0 0 #B466A6
#1F3A5F navy 67 39 0 63 89 61 15 51 #1D3A5F
#C8102E red 0 92 77 22 0 98 75 16 #C9152F

The navy and the red come through almost unchanged. The green, the blue and the magenta are where "it came back dull" comes from, and no profile or setting fixes that: the ink can't do it. If one of those is your brand colour, pick a printable version on purpose, or print it as a spot ink (see how to match a Pantone colour in CMYK).

The "naive formula" column is what most online converters do, ours included: it works out the ink from the RGB numbers alone, with no paper and no press. It gets the in-gamut navy wrong too, and it would print the green as solid cyan and yellow, far darker than the screen colour.

The Color Converter with RGB 0, 255, 0 entered: the result reads cmyk(100%, 0%, 100%, 0%), above the note that CMYK is a browser-safe approximation with no ICC profile, ink set or substrate modelled

A formula's answer for screen green, and the tool's own note on what it doesn't model.

Images: the details

Untagged or tagged. The first -profile tells ImageMagick what the pixels are now; the second converts them. If the image already carries a profile, the first one converts from that profile to sRGB instead. Check before you convert:

magick identify -format '%[profile:icc]\n' artwork.png

It prints the profile's name (sRGB for our test image). If it prints a warning that %[profile:icc] is unknown, the image has no profile: keep both -profile options. With only the CMYK one, ImageMagick attaches that profile to the unchanged RGB pixels and converts nothing. If it names a wider space such as Adobe RGB or Display P3, drop the sRGB one: going through sRGB first clips colours the press could have printed. An Adobe RGB green came out as 80 0 100 0 converted directly, and 63 0 96 0 through sRGB.

Keep -depth 8. A logo saved as a palette PNG with a handful of colours reads as 4 bits per channel, and without -depth 8 straight after the file name ImageMagick wrote the TIFF that way too: the green came out as 60 0 93 0 instead of 63 0 96 0, every ink rounded to steps of about 7%. Put at the end of the command instead, it rounds a few values down by one step in 255.

Intent. Relative colorimetric keeps every colour the press can print exactly as it is and moves only the ones it can't. Perceptual squeezes the whole image to fit, so in-gamut colours move too: the navy above became 94 63 9 55 instead of 89 61 15 51. Relative with black point compensation is the usual choice for graphics and most photos; try perceptual on a photo full of saturated colour and compare.

See it before the printer does. Convert the CMYK file back to sRGB and look at the two side by side. This is a soft proof, and it is how the right column of the table was made:

magick artwork-cmyk.tif -intent Relative -black-point-compensation -profile sRGB.icc proof.png

Total ink. Each profile has a limit on how much ink the paper can take at one spot. To see the most your image uses, as a percentage of all four inks:

magick artwork-cmyk.tif -fx '(c+m+y+k)/4' -channel C -separate -format '%[fx:round(400*maxima)]%%\n' info:
216%

That is the navy. A profile conversion stays inside its own limit, so this matters more for CMYK values someone typed in by hand.

A whole PDF: Ghostscript

The direct wayGhostscriptmacOS · Linux · Windows

Ghostscript rewrites every colour in the PDF, text, shapes and images, through the profile you give it:

gs -o flyer-cmyk.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=CMYK -sOutputICCProfile=FOGRA39L_coated.icc --permit-file-read=FOGRA39L_coated.icc flyer.pdf

Keep the --permit-file-read. Ghostscript 10.05.1 refuses to read a profile from outside its own folder without it, stops with Error: /undefined in --runpdf--, and still leaves a half-written file behind. Install it with brew install ghostscript or apt install ghostscript.

On a test flyer with a blue heading, a green panel, the six colours above as an image and a line of black text, the colours came out the same as ImageMagick's, to the percent. Then check the result:

pdfimages -list flyer-cmyk.pdf
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image     600   100  cmyk    4   8  image  no         8  0   124   124 1729B 0.7%

cmyk with 4 components is what you want. Before, it read rgb and 3. icc with 3 components is RGB too, with a profile attached. That covers images only. For text and shapes, count what is left in RGB (qpdf unpacks the file so grep can read it):

qpdf --qdf --object-streams=disable flyer-cmyk.pdf - | grep -a -c -E ' (rg|RG)$|/DeviceRGB|/CalRGB|^ */N 3$'

It printed 4 for the original flyer and 0 for the converted one.

Black text becomes four inks

RGB black is a colour like any other, so the profile turned the black text into 79 70 53 98: 299% ink on 12 pt letters. On a press, any misregistration between the four plates shows as a coloured fringe on small text. Text that was set as grey black (0 g in the PDF) stayed on the black plate only. Set body text to black ink in the design app, or let the printer convert. To find the heaviest spot on a page:

gs -q -o page.tif -sDEVICE=tiff32nc -r150 flyer-cmyk.pdf
magick page.tif -fx '(c+m+y+k)/4' -channel C -separate -format '%[fx:round(400*maxima)]%%\n' info:
299%

What Ghostscript does not do here: the result is a CMYK PDF, not a PDF/X file. It has no output intent (grep -c OutputIntent found none), so a printer's preflight can't tell which press it was converted for. Say so when you send it.

You may see gs -sDEVICE=inkcov suggested for checking a PDF. It prints the average coverage of each ink over the page, and it printed four CMYK numbers for the RGB original too, because it converts as it measures. It is not a test of whether a file is CMYK.

In a design app

If the file comes out of a design app, convert there. The app knows which black is text, keeps spot colours and can write a real PDF/X file.

  • InDesign: File › Export, Adobe PDF (Print), preset PDF/X-4:2008. Under Output, Color Conversion: Convert to Destination (Preserve Numbers), and set Destination to the printer's profile.
  • Affinity Publisher, Designer or Photo: File › Export, PDF, choose a PDF/X preset, and under More set the colour space to CMYK and the profile to the printer's.
  • Photoshop, for one image: Edit › Convert to Profile, the printer's profile as destination, Relative Colorimetric, Use Black Point Compensation. View › Proof Colors and View › Gamut Warning show the problem colours first.
  • Scribus (free, macOS, Windows, Linux): File › Export › Save as PDF, with a PDF/X output and the printer's profile as the output intent.

One colour, such as a brand colour

For a single value to type into a design app, LittleCMS's transicc (apt install liblcms2-utils) converts through the same profile:

echo "0 102 255" | transicc -t1 -b -o FOGRA39L_coated.icc
C=84.3107 M=52.8542 Y=0.0000 K=0.0000

It also prints a two-line banner. How to check whether a colour fits, and what to do when it doesn't, is in how to match a Pantone colour in CMYK.

With no design software

On a Chromebook, a locked-down work laptop or a tablet, there may be nothing to run a command in and no design app to export from. The printer still wants a CMYK PDF.

Designing is free and needs no account; exporting the print PDF needs a paid plan. Its output profiles are GRACoL 2013 (the default), SWOP 2013 and GRACoL 2006. It doesn't ship FOGRA39, so if a European printer names that profile, ask them whether a GRACoL file will do. Popcorn's own walkthrough of colour mode and the gamut warning is RGB vs CMYK.

Before you send it

  1. You asked the printer: CMYK from you with their profile, or PDF/X-4 and they convert.
  2. Images report CMYK and the right profile in magick identify, and pdfimages -list shows cmyk for every image in the PDF.
  3. You looked at a soft proof, and every colour that matters still looks right.
  4. Body text is black ink only, not four-colour black.
  5. You kept the RGB original. Converting is one way.

Bleed, crop marks and image resolution are the other half of the job: how to make a print-ready PDF, how to add bleed and crop marks and how to check an image is sharp enough to print.

Questions people ask

Should I convert to CMYK myself or let the printer do it?

Ask them. Many printers prefer a PDF/X-4 file with RGB images and an output intent, and convert it with the profile of the press it will actually run on. If they want CMYK from you, ask which profile. Converting with the wrong one is worse than not converting.

Which CMYK profile should I use?

The one your printer names. Without one: FOGRA39 (ISO Coated v2) or the newer FOGRA51 (PSO Coated v3) for coated paper in Europe, GRACoL 2013 for coated commercial print in the US, and SWOP for US magazines. Uncoated paper has profiles of its own.

Why did my bright green come out dull?

Ink on paper cannot reach it. Screen green #00FF00 converts to 63 0 96 0 through FOGRA39, and that previews as #6BB436, a grass green. No setting brings back a colour the press cannot print. Pick a colour inside the gamut, or print it as a spot ink.

Can I convert the CMYK file back to RGB to get the colours back?

No. Colours outside the gamut were moved to the nearest printable one, and converting back gives you that duller colour in RGB. Keep the RGB original and convert a copy.

Is the CMYK value from an online colour converter right?

Usually not for a press. Most, ours included, use a formula with no profile: it gives 100 0 100 0 for #00FF00, where FOGRA39 gives 63 0 96 0. It is a starting value to type into a design app, not a value to print.

Why is my black text in four inks after converting?

RGB black goes through the profile like any other colour and comes out as rich black: 79 70 53 98 in our test, 299% ink. Small text in four inks blurs when the plates are a fraction out of register. Set text to black ink only (grey or K 100) before converting; Ghostscript left grey black text on the black plate.

Tools in this guide

Everything runs on your device

All guides

/
123 items
Runs in your browser·Your files stay on this device
Out0 B
Ready—