ComfyUI Node

Color Match (UTK)

Make one image's color grade match another — without a model

By whmc76·Created about a year ago·Updated about a month ago· 72
Color Match (UTK)
  • image_target
  • image_ref
  • image
methodmkl
strength1.00
multithreadtrue

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.

CategoryUniversalToolkit/Image

Inputs (5)

NameTypeDefaultDescription
image_targetIMAGETarget image to apply color matching to
image_refIMAGEReference image to match colors from
methodCOMBOmklColor matching method to use
strengthoptFLOAT1.000–10Strength of the color matching effect
multithreadoptBOOLEANtrueUse multithreading for batch processing

Outputs (1)

NameTypeDescription
imageIMAGE