Color Match (UTK)
Make one image's color grade match another — without a model
- image_target
- image_ref
- image
Color grading is the cheapest way to make a batch of images look like they came from the same shoot - and you don't need a model or a LoRA to do it. Color Match (UTK) takes a target image and a reference image and transfers the reference's color characteristics onto the target, using the classic color-matcher algorithms. It's the same trick film editors used long before diffusion existed: steal the grade, keep the content.
How it works
Feed image_target (the image you want recolored) and image_ref (the image whose colors you want) into the node, pick a method, and it runs one of the established color transfer algorithms:
mkl(default) - the Monge-Kantorovitch linear method from the color-matcher library. Fast, robust, and the best first try for most photos.reinhard- the classic Reinhard color transfer (mean/std in LAB). Simple, occasionally muddier.hm- histogram matching, stronger and less natural, good for stylized looks.mvgd,hm-mvgd-hm,hm-mkl-hm- combinations of histogram matching and Gaussian methods for when a single pass isn't enough. Niche; try them if the simpler ones wash out.
Then strength (default 1.0) blends between the original and the matched result - 0.5 gives you a hint of the grade instead of a full takeover, which is usually the tasteful setting for realistic work. multithread (default on) parallelizes batch processing.
One output: image, ready to wire onward.
Where it earns its keep
- Batch consistency - generate 20 images of the same scene, match them all to one reference, and the set finally looks coherent.
- Matching a generation to a photograph - you have a real photo's look you want your renders to sit next to.
- Repairing VAE color shift - the classic "everything came out slightly green/grey" problem; match to a known-good frame and it snaps back.
Because there's no neural net involved, it's instant and runs on CPU if needed. That's the appeal: no download, no VRAM, no prompt.
Installing it
Standard pack install - ComfyUI Manager → search ComfyUI-UniversalToolkit, or clone into custom_nodes/ and pip install -r requirements.txt, then restart. Note this node specifically needs the color-matcher package, which is in the pack's requirements - if you installed the pack by hand and skipped that step, this node throws on load.
Gotchas
- It matches global statistics, not objects. A red car in the reference won't make your red shirt match; it shifts the whole image's color balance. If you need per-object color, this isn't the tool - you want a proper recoloring model.
- Strong methods wash out saturation. If the result looks grey or plastic, dial strength down to 0.5–0.7 before changing methods.
- Different source lighting = muddy results. Matching a studio-shot target to a golden-hour reference fights the shadows as hard as the tint. The method does what it does; the grade won't fix incompatible lighting.
It's one of those quiet utility nodes you don't think about until a set of images refuses to look unified - then it's the answer in thirty seconds.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image_target | IMAGE | Target image to apply color matching to | |
| image_ref | IMAGE | Reference image to match colors from | |
| method | COMBO | mkl | Color matching method to use |
| strengthopt | FLOAT | 1.000–10 | Strength of the color matching effect |
| multithreadopt | BOOLEAN | true | Use multithreading for batch processing |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |