Why your PDF viewer cannot tell you this
Open a PDF in any viewer and every colour on screen is RGB — including the ones the file declares in CMYK, and including the Pantone spot inks. That is not a display convenience, it happens during parsing: pdf.js rewrites setFillCMYKColor into setFillRGBColor while it evaluates the page. By the time anything renders, the original colour model is gone.
So this tool does not look at the render. It lexes the raw content stream and reads the operators the producer actually wrote — g, rg, k, cs and scn — resolves the named spaces against /Resources /ColorSpace, and reads each image XObject's own /ColorSpace and /BitsPerComponent.
Text, vectors and images, separately
"There is RGB on page 4" does not help anyone. "The logo image on page 4 is RGB while every text object on that page is CMYK" is a fix you can act on. Objects are classified by what they are as well as by what colour model they use, so you can see immediately whether the problem is a placed photo, a stray box, or the body text.
An RGB JPEG in an otherwise-CMYK document is the single most common preflight failure there is, and it gets its own flag.
Swatches you can click
Every distinct colour found is shown as a swatch with its actual component values — C 90 M 20 Y 0 K 5, R 217 G 38 B 51, K 35 — grouped by model and counted. Click one and the page preview highlights every object painted with it.
The greyscale check
Declaring CMYK and being CMYK are different things. A page painted entirely in equal amounts of C, M, Y and K, or entirely in black, can be printed on one plate — a real difference in price. The rendered greyscale check answers that separately, on demand, because it costs one rasterisation per page.
Limits
Counts are counts of painting operations, not of visual elements: one logo may be three hundred separate fills. Text overlay boxes are approximate, because placing them exactly would need each font's own glyph widths.
Privacy
Everything happens in your browser. The file is never uploaded.
Tiny Online Tools







