NormalizationXL
The SDXL-only, no-toggle version
- latent
- LATENT
NormalizationXL is the SDXL edition of the pack's latent-normalization node, and it exists because a split is simpler than a toggle. Where the merged Normalization node makes you flip an sdxl boolean, this one is hardwired for SDXL's 3-channel latent: you drop it between KSampler and VAE Decode, and each channel gets rescaled toward its target dynamic range so no single color axis blows out the decode. No settings to forget, nothing to get wrong.
What it actually does
After sampling, the latent tensor sits with whatever ranges each channel happened to land on. If one channel is stretched way wider than the others - which is exactly what happens when a checkpoint pushes color hard - the VAE decodes that dominance as clipped, muddy, overly-saturated regions. NormalizationXL rescales each channel toward a target range (from the source: ratio = target_range / max(abs(min), abs(max)), multiplied in with a floor so channels don't get crushed below ~0.99x). The result: balanced, contrasty color where every channel gets its fair share of the range.
The "XL" part matters because the target ranges are tuned per architecture. SD 1.5's latent and SDXL's latent don't have the same natural magnitudes, so a normalization tuned for one is wrong for the other - which is exactly why the author shipped separate nodes back then (and why the merged version gained the sdxl switch).
The inputs and outputs
Exactly one input, latent (from your KSampler's LATENT), and one output, LATENT into VAE Decode. There are no knobs - this node is a "set and forget" color-range fix, which makes it a good one to drop into a workflow template.
A note on versions
This is from the era when the pack shipped paired SD 1.5 / SDXL nodes. In later releases the two were merged into the single Normalization node with an sdxl boolean, and in the current v2 rewrite normalization was folded into Diffusion CG's normalization slider (applied during sampling rather than after it). If you install the pack today you'll see Diffusion CG and Disable CG in the node list; NormalizationXL lives in the earlier releases. Use the merged Normalization node (SDXL mode) or Diffusion CG if you're on current versions - the effect is the same family of correction.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Haoming02/comfyui-diffusion-cg
Restart ComfyUI. No dependencies, no model files.
One honest caveat: normalization rescales range; it doesn't fix a hue cast. If your SDXL output is tinted rather than blown-out, reach for the pack's recenter controls instead. Used together - recenter during sampling, normalize before decode - they cover the full "neutral but vibrant" goal the pack advertises.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| latent | LATENT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |