Nodes/ComfyUI GOAT Nodes/🐐 Fast Color Match
ComfyUI Node

🐐 Fast Color Match

Make two images look like they were lit the same way

By AconexOfficialΒ·Created 2 years agoΒ·Updated 12 months agoΒ· 11
🐐 Fast Color Match
  • image
  • reference
  • IMAGE
β—„strength1.00β–Ί
β—„adaptive_matchingtrueβ–Ί
β—„deviceautoβ–Ί

Any time you edit part of an image separately and put it back - a detail pass on a crop, an inpainted region, a frame you regenerated in a video - you get a color mismatch. The edited piece was sampled fresh, so its color balance drifts slightly from the piece around it, and even a perfect blend at the seam can't fix a tone that's just plain different. Fast Color Match exists to fix that before you paste anything back: feed it your edited image and a reference (usually the original, unedited image), and it nudges the edited one's color statistics to match.

How it works

This is a statistical color transfer - matching the color distribution of one image to another, not literally copying pixel colors across. Think of it as pulling the edited image's overall brightness, contrast, and color balance per channel toward what the reference image has, so the two read as "shot under the same light" even though they were generated independently. It's the same general technique that sits behind "match this shot to that shot" tools in video editing color grading, applied here as a quick node rather than a full grading suite - and, true to the pack's naming, built to run fast rather than being the most exhaustive version of the technique available.

adaptive_matching (on by default) is the one behavioral toggle: it's a reasonable bet this makes the matching content-aware rather than a single global shift - adapting differently across regions of the image instead of applying one flat correction everywhere, which handles images with mixed lighting (a shadowed area next to a bright one) better than a naive global match would. Leave it on unless you have a specific reason to want a simpler, uniform shift.

Inputs and outputs that matter

  • image - the one you're correcting.
  • reference - the one you're matching toward. In the detail-pass use case, this is your original, pre-edit image.
  • strength (0–1, default 1) - how much of the correction to apply. 1.0 is a full match; dial it down if a full match overcorrects and you want a partial nudge instead.
  • adaptive_matching (default on) - leave it on for mixed-lighting images.

One output: IMAGE - the corrected version of image, matched toward reference.

How to install it

ComfyUI Manager: search "GOAT Nodes", install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/AconexOfficial/ComfyUI_GOAT_Nodes.git

then restart ComfyUI. No models required - a device input (auto/cuda/cpu) lets you force CPU if auto picks the wrong backend for your setup, but there's nothing to download either way.

Common issues & troubleshooting

Where this actually belongs in your graph. It's designed to run before you composite an edited piece back into a larger image, not after - the point is fixing the color mismatch before the paste, so a downstream blend (GOAT's own Image Stitch, or any other compositing node) has less of a seam to hide. Running it after compositing defeats the purpose.

Result looks flat or overcorrected. That's strength at 1.0 doing a full statistical match, which can be more aggressive than you want on images that only had a mild mismatch to begin with. Dial it down toward 0.5 or lower for a gentler nudge rather than a hard match.

Comparable to WAS Node Suite's color-correction utilities, if you've used those before - same general job (fast, non-generative color matching between two images), just as a single-purpose node instead of part of a much larger general-purpose toolkit. If you only need this one job, it's the lighter dependency to pull in.

Category🐐 GOAT Nodes/Postprocessing

Inputs (5)

NameTypeDefaultDescription
imageIMAGEβ€”
referenceIMAGEβ€”
strengthFLOAT1.000–1β€”
adaptive_matchingBOOLEANtrueβ€”
deviceCOMBOauto3 options: auto, cuda, cpu

Outputs (1)

NameTypeDescription
IMAGEIMAGEβ€”