Transfer Color
Borrow any photo's look with one wire
- image_target
- image_ref
- image
Want your generated image to look like it was graded like that reference photo - same warmth, same teal shadows, same overall feel - without retraining anything or even touching the prompt? That's ColorTransfer ("Transfer Color"). It takes one image's color statistics and forces them onto another, in core ComfyUI since April 2026. It's new enough that you won't find much community lore on it yet; the ground truth is the source and the tooltips, and both are refreshingly honest about what each mode does.
What it does
Two inputs, one output: image_target gets its colors reshaped to match image_ref, and you get the transformed target back as an IMAGE. The whole thing is classic color-matching math (Reinhard et al. from 2001 is in the DNA), no models, no inference, runs in a second. If you've ever used a "color match" feature in Photoshop or a color-grade LUT, this is the same idea exposed as a node.
Three method choices, in order of aggression:
- reinhard_lab - matches mean and standard deviation in Lab color space. The classic, the safest. Global tone shift, keeps the target's character.
- mkl_lab - goes further and matches the color covariance too, via a full linear transform. Stronger "look" transfer, more chance of overshoot.
- histogram - per-channel histogram matching with a 256-bin LUT. The most aggressive; it forces the target's brightness distribution to match the reference, so it can change exposure hard.
The inputs that matter
- image_target / image_ref - target is the one you transform, ref is the one you match to. Swap them and you get the opposite effect.
- method - see above. Start with
reinhard_lab; escalate only if it's too weak. - source_stats - this is the video-aware bit.
per_framematches every frame to the reference individually,uniformpools statistics across all source frames, andtarget_framelets you pick one frame index as the baseline and applies it uniformly - which preserves the relative differences between frames. For a single still, leave it onper_frameand never think about it again. For a sequence,target_frameoruniformstops the per-frame flicker. - strength (0–10, default 1) - how much of the transfer to apply, lerped against the original. 0 passes the target through untouched; crank past 1 to overshoot on purpose. Default 1 is full transfer.
Getting it
It's part of ComfyUI core - you may need to update ComfyUI to see it, since it landed in the April 2026 release cycle, but there's no pack to install.
Common gotchas
- It's new, so there are no battle-tested templates. The search alias list is a giveaway of intent - "color match", "color grading", "mkl", "reinhard", "histogram" - but nobody's written the definitive guide yet. Expect to fiddle.
- Reinhard/MKL operate on Lab, which is per-channel. A reference that's mostly one hue can leave the target looking washed or tinted in weird places;
strengthbelow 1 is your escape hatch. - Histogram mode changes exposure, not just hue. If the reference is much brighter than the target, histogram matching will blow out your image. When in doubt, reinhard.
- It expects the same frame counts to line up. With
per_frameand a multi-frame ref, frame i of the target matches frame i of the ref; a 1-frame ref is applied to everything, which is usually what you want.
For keeping a batch or a short clip consistent - one reference, N frames, no drift - this is the best built-in answer core ComfyUI has offered so far.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image_target | IMAGE | Image(s) to apply the color transform to. | |
| image_ref | IMAGE | Reference image(s) to match colors to. | |
| method | COMBO | 3 options: reinhard_lab, mkl_lab, histogram | |
| source_stats | COMBO | per_frame: each frame matched to image_ref individually. uniform: pool stats across all source frames as baseline, match to image_ref. target_frame: use one chosen frame as the baseline for the transform to image_ref, applied uniformly to all frames (preserves relative differences) | |
| strength | FLOAT | 1.000–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |