Total ink coverage, or total area coverage (TAC), is the cyan, magenta, yellow and black at one spot added together. Solid cyan is 100 %. All four inks at full strength is 400 %. A press can't put that much ink on paper: it doesn't dry in time, it rubs off onto the back of the next sheet (set-off), and the shadows fill in to a flat, muddy dark. So every printing condition has a ceiling, usually somewhere between 240 % and 350 %, and a printer's preflight rejects a file that goes over theirs.
What counts is the darkest point on the page, not the average. One black box mixed at 100 100 100 100 is enough to fail a file that is otherwise light.
Render each page as CMYK and print the highest total:
gs -q -sDEVICE=tiff32nc -r150 -sOutputICCProfile=FOGRA39L_coated.icc -sDefaultCMYKProfile=FOGRA39L_coated.icc --permit-file-read=FOGRA39L_coated.icc -o page-%02d.tif poster.pdf
for f in page-*.tif; do
magick "$f" -separate -evaluate-sequence mean -format "$f %[fx:round(maxima*400)]%%\n" info:
done
page-01.tif 400%
page-02.tif 100%
Page 1 has a spot where all four inks are at 100 %. Use the printer's ICC
profile in place of FOGRA39L_coated.icc, in all three places; where profiles
come from is in how to convert RGB to CMYK.
Install the tools
with brew install ghostscript imagemagick on a Mac, or
apt install ghostscript imagemagick on Debian and Ubuntu.
The rest of this guide covers where the limit comes from, how to see which part of the page is over and which ink is causing it, and how to fix it. The short version of this check is in how to make a print-ready PDF, alongside the other checks a print file needs.
What the limit is
The number comes from the printer. Their file-preparation page or spec sheet names it, usually next to the ICC profile they want. If it isn't there, ask: "what total ink limit, and which profile?" is one short email.
The profile and the limit go together. A CMYK profile builds its colours under a ceiling, and the ICC's profile registry lists that ceiling for each profile it publishes:
| Printing condition | Profile | TAC |
|---|---|---|
| Premium coated paper, Europe (FOGRA51) | PSO Coated v3 (ECI) | 300 % |
| Uncoated paper, Europe (FOGRA52) | PSO Uncoated v3 (ECI) | 300 % |
| Coated commercial print, US | GRACoL 2013 (CRPC6) | 320 % |
| US magazines, web offset | SWOP 2013 (CRPC5) | 300 % |
| Coated paper, FOGRA39 | Coated Fogra39L VIGC 300 / 260 | 300 % / 260 % |
| Newsprint, US | SNAP 2007 | 240 % |
From the ICC profile registry, checked October 2026. The FOGRA39 row shows the catch: the same printing condition, published as two files with two ceilings. ECI does the same with ISO Coated v2, which comes as a standard version and one with 300 % in its name. So "FOGRA39" doesn't tell you the limit, and the printer's number does.
You can read a profile's ceiling yourself by converting the darkest colour there is through it:
for p in FOGRA39L_coated Coated_Fogra39L_VIGC_300 Coated_Fogra39L_VIGC_260; do
magick xc:black -intent Relative -black-point-compensation -profile sRGB.icc -profile $p.icc \
-separate -evaluate-sequence mean -format "$p %[fx:round(maxima*400)]%%\n" info:
done
FOGRA39L_coated 300%
Coated_Fogra39L_VIGC_300 286%
Coated_Fogra39L_VIGC_260 257%
FOGRA39L_coated.icc is the free profile in Debian's colord-data package,
used throughout these print guides. The two VIGC files are free downloads from
the registry. Each one stays under its own limit.
Find the heaviest point
The command at the top does two things. Ghostscript renders each page into a
CMYK TIFF, page-01.tif, page-02.tif and so on, at 150 pixels per inch. Then
ImageMagick averages the four inks at every pixel, takes the highest average,
and multiplies by four: that is the total at the darkest point. 150 ppi is
enough to find a heavy area. For fine rich-black text or hairlines, use -r300.
The two profile options matter, and they do different jobs:
-sOutputICCProfileconverts any RGB in the file the way the printer's profile would. Without it, Ghostscript uses its own default CMYK profile, which is not your printer's. The dark photo in our test measured 72 68 66 88 that way, and 77 71 52 98 through FOGRA39.-sDefaultCMYKProfile, set to the same file, keeps CMYK colours exactly as they are. Leave it out and Ghostscript converts the CMYK too, from its default profile to yours. The check then lies in both directions: the 100 100 100 100 heading measured 77 71 45 100 (293 %) and the page passed at 300 %, while black-only text on page 2 was turned into a 281 % four-colour black that isn't in the file.
The test file, poster.pdf, is a two-page A5 poster as a designer might export
it from an app with no print settings: a heading band mixed as 100 100 100 100,
a dark RGB night photo, body text in RGB black, a footer in 60 40 40 100, and a
second page with black-only text on a pale grey panel.
Why not inkcov
gs -sDEVICE=inkcov comes up in every search for this, and it answers a
different question:
gs -q -o - -sDEVICE=inkcov poster.pdf
gs -q -o - -sDEVICE=ink_cov poster.pdf
0.84692 0.84692 0.84692 0.84690 CMYK OK
0.00000 0.00000 0.00000 0.29096 CMYK OK
66.79924 61.43524 59.21847 77.45716 CMYK OK
0.00000 0.00000 0.00000 2.79086 CMYK OK
inkcov (the first two lines) is the share of the page each ink touches at
all: on page 2, the 8 % grey panel counts as fully covered, the same as solid
black would. ink_cov (the last two) is the amount of each ink, averaged over
the page. Neither has a 400 in it. Both also convert RGB as they go, with
Ghostscript's default profile, so they report CMYK for a file that has none.
They are good for one thing: confirming that a page meant to print in black
only uses no other ink.
See where it is
A number tells you the page is over. A map tells you what to fix. This makes a pale grey copy of the page and paints every pixel over the limit red:
magick page-01.tif -colorspace sRGB -modulate 100,0 +level 45%,100% \
\( page-01.tif -separate -evaluate-sequence mean -threshold 75% -background red -alpha shape \) \
-composite map-01.png
Open map-01.png in any image viewer. On our poster the heading band is solid
red, with the white lettering standing out of it, and everything else is grey
apart from a few stray red pixels at the edges of the lights in the photo. The
night photo, the footer and the body text are under the line.
The 75% is the limit divided by 400: 75 % for 300 %, 80 % for 320 %, 82.5 %
for 330 %, 65 % for 260 %. The same threshold tells you how much of the page is
over:
magick page-01.tif -separate -evaluate-sequence mean -threshold 75% -format "%[fx:round(mean*1000)/10]%%\n" info:
22.7%
That is the heading. Run it again with 65% for a printer with a 260 % limit
and the answer is 70%: the photo and the RGB black text are over as well,
because a 300 % profile put them at up to 300 %. Of the dark areas, only the
240 % footer passes.
Which ink is causing it
Ghostscript's tiffsep device writes one greyscale file per ink, which is
what a printer's plates will carry:
gs -q -sDEVICE=tiffsep -r150 -sOutputICCProfile=FOGRA39L_coated.icc -sDefaultCMYKProfile=FOGRA39L_coated.icc --permit-file-read=FOGRA39L_coated.icc -o sep-%02d.tif poster.pdf
for f in sep-01\(*\).tif; do magick "$f" -format "$f %[fx:round(100-100*p{100,60})]%%\n" info:; done
sep-01(Black).tif 100%
sep-01(Cyan).tif 100%
sep-01(Magenta).tif 100%
sep-01(Yellow).tif 100%
p{100,60} is one pixel, 100 across and 60 down from the top left, here in the
heading. The map has the same pixel size, so any image viewer that shows the
cursor position gives you the point to read. The plates store ink as dark on
light, hence the 100-. In the photo's deepest shadow the same loop gives
black 98, cyan 77, magenta 71 and yellow 52: four inks adding up to the
profile's ceiling.
tiffsep matters most when the job has a spot colour. tiff32nc folds a spot
into its CMYK stand-in, while tiffsep writes it as a plate of its own,
sep-01(Brand Orange).tif, say. To add every plate on the page, spot inks
included:
n=$(ls sep-01\(*\).tif | wc -l)
magick sep-01\(*\).tif -negate -evaluate-sequence mean -format "%[fx:round(maxima*100*$n)]%%\n" info:
On a test with a spot ink overprinting solid black, that printed 200%.
Spot inks and plates in general are in
how to match a Pantone colour in CMYK.
Where too much ink comes from
Three causes cover nearly every rejected file:
- A black mixed by hand. Someone wanted a deeper black and typed 100 in every box: 400 %. Ghostscript's CMYK conversion, like the "preserve numbers" settings in design apps, leaves CMYK values already in the file as they are, so this survives the export. It is also the easiest to fix.
- RGB black and dark photos, converted. RGB black goes through the profile like any other colour and comes out at the profile's ceiling: 79 70 53 98, 299 %, in our RGB-to-CMYK test. Fine for a printer with a 300 % limit, over for one with 260 %. On text it is a problem whatever the limit, because small type in four inks blurs.
- The wrong profile. A CMYK image separated for one press, such as a stock photo or a file from a previous job, keeps that press's ceiling. A 330 % shadow sent to a 300 % printer is over before you start.
Fix it
Fix it in the design file if you have one, then export again and repeat the check.
- Replace the hand-mixed black. A rich black of 60 40 40 100 is 240 %, and still prints deep on a large area. Use the printer's own recipe if they give one.
- Put text and thin lines on black only. 0 0 0 100. Body text, small type, hairlines and barcodes never need the other three inks.
- Convert RGB with the printer's profile. The profile carries their limit, and the conversion stays under it. If their limit is lower than your profile's, ask them for the profile that matches it.
A profile also decides how much of a dark colour goes on the black plate. That
is GCR (grey component replacement) or UCR (under colour removal), set
when the profile is built: the more black does the work, the less of the other
three is needed. RGB 40 40 40, a dark grey, comes out as 76 67 61 72 (276 %)
through FOGRA39L_coated.icc, and 51 42 39 86 (218 %) through the VIGC 300
profile, which uses maximum GCR. Same printing condition, same grey, 58 points
less ink. You choose GCR by choosing the profile, and Photoshop also lets you
build your own (Edit › Color Settings, CMYK, Custom
CMYK, with Total Ink Limit and Black Generation).
With Ghostscript
On our poster, after steps 1 and 2 in the design file, the RGB photo is the only thing left to convert. Ghostscript does the whole PDF:
gs -q -o poster-cmyk.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=CMYK -sOutputICCProfile=FOGRA39L_coated.icc --permit-file-read=FOGRA39L_coated.icc poster-fixed-src.pdf
The check on poster-cmyk.pdf then reads 300% on page 1, the photo's deepest
shadow at the profile's ceiling, and 100% on page 2, still black ink only.
For a printer with a 260 % limit, Coated_Fogra39L_VIGC_260.icc in place of
FOGRA39L_coated.icc, in the conversion and in the check, gave 257%, and the
65 % threshold found nothing over.
Two things Ghostscript won't do. It leaves CMYK colours that are already in the PDF exactly as they are, so a 400 % box stays 400 %. And the result is a CMYK PDF, not a PDF/X file; the recipe for that is in how to make a print-ready PDF.
A CMYK image that is too heavy
ImageMagick can re-separate a CMYK image for a different profile. It reads the profile embedded in the image and converts to the new one:
magick photo-cmyk.tif -intent Relative -black-point-compensation -profile Coated_Fogra39L_VIGC_260.icc photo-260.tif
magick photo-260.tif -separate -evaluate-sequence mean -format "%[fx:round(maxima*400)]%%\n" info:
249%
The same night photo, separated with FOGRA39L, peaked at 300 %. If the image
has no embedded profile, put -profile with the one it was made for before
the new one, or ImageMagick has nothing to convert from.
In a design app
- InDesign: Window › Output › Separations Preview, set View to Ink Limit and type the printer's number. Everything above it turns red.
- Acrobat Pro: Output Preview in the print production tools. Tick Total Area Coverage and set the limit to highlight the areas over it.
- Photoshop: the Info panel shows the CMYK values under the cursor; add them up. Custom CMYK (above) sets the limit for conversions.
No design software
If the file came from Word or a phone app, there may be no separations preview and no way to set CMYK values at all. The commands above still check any PDF, but fixing a hand-mixed black needs something that can edit CMYK.
Its limits follow the output profile: 320 % for GRACoL 2013 and GRACoL 2006, 300 % for SWOP 2013. The overlay covers the first selected page. It doesn't ship a FOGRA profile, so for a European printer with a lower limit, check the exported PDF with the commands above. How the overlay and the plate view work is in Popcorn's soft proof and separations page.
Before you send it
- You have the printer's limit and profile, from their spec or by asking.
- The peak check gives a number at or under the limit on every page.
- If it didn't, the map shows what was over, and you fixed it in the design file: rich black at 240 % or so, text on black only.
- RGB is converted with the printer's profile, or left for them to convert in a PDF/X-4 file, as they prefer.
- Run the check once more on the file you are actually sending.
The rest of the print checklist (size, bleed, fonts, resolution and PDF/X) is in how to make a print-ready PDF.