Editor › CMYK Image Editor
What does a real CMYK image editor need, and does PhotoAIA have it?
A real CMYK editor needs actual ICC-based separation — a selectable destination profile, rendering intents, black point compensation, soft proofing and plate inspection — not a fixed-look CMYK filter. PhotoAIA does this through LittleCMS in WebAssembly, with 8-bit editing and independently validated CMYK TIFF export.
Why most online editors fake CMYK
A convincing CMYK "look" is easy: desaturate slightly, shift a few hues, call it CMYK preview. Real separation is harder — it requires an actual colour-management engine, a real destination ICC profile, and a defined rendering intent, all running client-side or server-side without a licensing cost most free tools will not carry.
That is why the common pattern in browser editors is a CMYK preview mode rather than a genuine separation. It looks plausible and is not the same thing.
What real ICC separation actually means
- A destination ICC profile you can choose, not a hardcoded conversion matrix.
- A rendering intent — Perceptual, Relative Colorimetric, Saturation, Absolute Colorimetric — because different source-to-destination gamut mappings genuinely change the result.
- Black point compensation (BPC), which affects how the darkest tones map into the destination gamut.
- Soft proofing: simulating, on screen, how the file will look once separated to the target profile.
- Per-plate inspection: viewing the individual C, M, Y and K channels in isolation before anything goes to print.
- A default working profile suited to commercial print (PhotoAIA defaults to GRACoL, a common US commercial-print standard) with other profiles selectable.
- CMYK output in formats a print shop can actually use: TIFF and PDF with the profile embedded, not just an on-screen colour shift.
How PhotoAIA implements this
- LittleCMS — the same colour-management library used in many desktop workflows — compiled to WebAssembly, running the separation client-side.
- Four selectable rendering intents plus black point compensation.
- Live soft proofing and per-plate (single-channel) isolation for checking individual separations.
- CMYK 8-bit TIFF export — strips or 256×256 tiles, LZW (default), ZIP-Deflate or uncompressed, with the ICC profile embedded — independently validated with libtiff `tiffinfo` and UTIF.
- CMYK output also reaches the print PDF export path, which carries an ICC OutputIntent, bleed, crop and registration marks (structure validated with poppler `pdfinfo`; not PDF/X-certified — see limits below).
Honest limits of editing in CMYK here
- Editing is 8-bit only. There is no 16-bit CMYK editing path.
- CMYK documents export as RGB pixels in PSD — a CMYK ICC profile is withheld rather than embedded incorrectly, because tagging RGB pixel data as CMYK would mislabel the file. This is reported to you, never silently wrong.
- PSD CMYK mode itself is not independently verified end to end (RGB mode is).
- PDF/X certification is not achieved: the exporter writes full PDF/X-4 structure — GTS_PDFX OutputIntent with embedded profile, correct box nesting, XMP pdfxid, /Trapped /False — and passes every decidable item of a 16-requirement self-check, but no tool checked (veraPDF, pdfcpu, qpdf, Ghostscript) certifies PDF/X, and it is never labelled "PDF/X-4" in the UI as a result.
- No CMYK alpha channel support in TIFF export.
What real separation gets you versus a preview
| Capability | CMYK "preview" editors | PhotoAIA |
|---|---|---|
| Destination profile selection | Fixed | Selectable ICC profile |
| Rendering intent | Not exposed | Four intents, selectable |
| Black point compensation | No | Yes |
| Soft proofing | Approximate or none | Yes |
| Per-plate (channel) inspection | No | Yes |
| CMYK TIFF export, ICC embedded | Often missing or unverified | Yes, independently validated |
| Bit depth | Varies | 8-bit |
Reading the numbers
A CMYK value is four percentages — cyan, magenta, yellow, key (black) ink coverage — not a single colour code. A rich black used in design might read 60/40/40/100; pure registration black used for text is usually 0/0/0/100 only. Which one a file actually contains matters: the first prints as four overlapping plates that can misregister and blur small type; the second prints as a single, crisp K plate.
Two files can show the same colour on screen and still carry different CMYK numbers, because rendering intent and black generation both change how RGB maps into CMYK. Perceptual and Relative Colorimetric intents compress or clip out-of-gamut colours differently, and how much of the shadow detail moves into the K channel versus the CMY channels (black generation) shifts the specific plate percentages even for a visually identical result.
This is exactly why values must not drift between tools. If one editor separates through a fixed SWOP preview and another through a chosen ICC profile with a chosen intent, the same source image will not produce the same CMYK numbers in both — which is the practical version of the Photopea CMYK-drift issue described above.
Common CMYK tasks
- Convert RGB to CMYK through a chosen profile: pick the destination ICC profile and rendering intent (GRACoL is PhotoAIA's default; load FOGRA or a printer-supplied profile for other markets), enable black point compensation if needed, then convert. See /docs/color-management for the exact settings panel.
- Check total ink coverage via the plates: open the Channels panel and inspect each ink in isolation to confirm nothing exceeds what your printer allows, and that black text sits on K only rather than a four-colour build.
- Prepare a press-ready TIFF: export CMYK 8-bit, choose LZW (default), ZIP-Deflate or uncompressed, and confirm the ICC profile is embedded — independently validated output, covered on /features/tiff-export.
- Soft-proof before sending anything: turn on soft proofing with paper/media simulation and review the shift on screen. It is a preview of pixels, never a change to them, and it is not a substitute for a contract proof from your printer — see /docs/printing for the full prepress workflow.
How the CMYK output is actually checked
A separation claim is only as good as its verification. PhotoAIA's CMYK TIFF export is checked against libtiff's `tiffinfo` and against UTIF, an independent JavaScript TIFF decoder — not just re-opened in the same app that wrote it. The print PDF's structure is checked with poppler's `pdfinfo`. This matters because a file that only "looks right" in the tool that produced it can still be silently wrong in a RIP or a different decoder; independent tooling is what catches that.
The one place this verification stops short is PDF/X certification itself: PhotoAIA writes full PDF/X-4 structure and passes a 16-requirement internal self-check, but no independent certifier was found that can confirm it — veraPDF has no PDF/X profile at all (checked against 1.30.2), and pdfcpu, qpdf and Ghostscript do not certify PDF/X either. That gap is stated plainly rather than papered over with an unverified "PDF/X-4" label.
When to use this, and when not to
Use PhotoAIA when you need to check or produce a real CMYK separation before print — a plate check, a soft proof, or a validated CMYK TIFF or print PDF. Do not use it if you need 16-bit CMYK editing or certified PDF/X output; no free browser tool currently offers certified PDF/X, and this one does not claim to.
Questions
- Is PhotoAIA's CMYK mode a real separation or just a preview filter?
- A real separation. It runs LittleCMS in WebAssembly with a selectable ICC profile, four rendering intents and black point compensation — not a fixed-look colour shift.
- Can I export CMYK TIFF files from PhotoAIA?
- Yes. CMYK 8-bit TIFF, strips or tiles, with a choice of LZW, ZIP-Deflate or uncompressed, and the ICC profile embedded. This has been independently validated with libtiff `tiffinfo` and UTIF.
- What ICC profile does PhotoAIA use by default?
- GRACoL, a common US commercial-print standard, with other profiles selectable for different print conditions.
- Is PhotoAIA's print PDF export PDF/X certified?
- No. It writes complete PDF/X-4 structure — OutputIntent, embedded profile, correct box nesting, XMP metadata — and passes a 16-requirement internal self-check, but this is not independently certified by any tool checked, and it is not labelled PDF/X-4 in the interface.
- Can I edit in 16-bit CMYK?
- No. Editing is 8-bit only in PhotoAIA, including CMYK work. There is no 16-bit CMYK editing path.
- What happens to a CMYK document if I export it as PSD?
- It exports as RGB pixels — the CMYK ICC profile is withheld rather than embedded against mismatched pixel data, since tagging RGB pixels as CMYK would mislabel the file. This is reported, not silently wrong.