Ideogram 4 VAE Coordinate Bridge
Ideogram 4 Colors Look Off? This Node Aligns the Model and Its VAE
- model
- vae
- model
Ideogram 4 is a weird beast in the best way. When it went open-weights in June 2026 it shipped quantized-only (fp8/nf4), demanded JSON prompts instead of prose, trained a refusal image into the weights, and attached a non-commercial license almost nobody was happy about. But it also shipped with native ComfyUI support on day one, and that's where this node lives - in the gap between the diffusion model and the VAE you happen to pair it with.
The short version: Ideogram 4, like Flux.2's packed models, outputs a 128-channel latent in the model's official normalization. The VAE you decode with stores its own per-channel BatchNorm statistics. When those two disagree, the decode shifts tone, color, contrast, and detail. Ideogram 4 VAE Coordinate Bridge installs an exact affine conversion between them so the model's latents land in the VAE's coordinate space. One line of setup, and your decode stops lying about the colors.
Why this exists
Most models keep it simple: the VAE that shipped with the checkpoint is the one you use. Ideogram 4 doesn't work that way. Its latent space is the 128-channel packed Flux.2 format, normalized with a published per-channel shift and scale (the constants are right there in the node's source). The VAE side keeps its own running mean and variance in a BatchNorm layer. Use the exact VAE the weights expect and you're fine. Grab a different Flux.2-style VAE file and the numbers stop lining up - output comes out washed out, wrong contrast, shifted colors, the kind of thing you'd blame on the model.
How it works
The node clones your model and patches its latent format with a wrapper. At each sampling boundary - encoding for img2img and reference latents, decoding for text-to-image - it converts channel-wise:
z_vae = (z_model * official_scale + official_mean - vae_mean) / vae_scale
…and the inverse on the way in, so img2img gets corrected before sampling and again before decode. The transform runs once per boundary, never during denoising, so it's essentially free: four small 128-element vectors and a single affine pass. The constants are reordered from Ideogram's published token order into ComfyUI's packed channel order inside the node, which is the kind of detail that would absolutely bite you if you rolled this by hand.
Nice touch in the source: the bridge is idempotent. Patch a model that's already been patched and it just passes through, so chaining it twice won't double-apply the transform.
The inputs that matter
Only two, both required:
- model - your Ideogram 4 / Flux.2 MODEL.
- vae - the same packed VAE you feed to
VAE Decode(andVAE Encode, for img2img).
The single model output replaces your original model wire and feeds your guider. There's no strength control - this is an exact conversion, not an effect. The README is blunt about it: the transform is fully determined by the official constants and the connected VAE's stored stats.
Installing it
This pack is refreshingly light: zero dependencies, nothing beyond the torch ComfyUI already ships. Clone it in:
cd ComfyUI/custom_nodes
git clone https://github.com/wcde/ComfyUI-Ideogram4-VAE-Coordinate-Bridge
Then restart ComfyUI. It also carries Comfy Registry metadata, so if you use ComfyUI Manager you can search the title "Ideogram 4 VAE Coordinate Bridge" and install it from the registry instead.
Where people get burned
- It refuses to run on the wrong stuff, on purpose. Connect a plain Flux.1 VAE (16 channels, the old format) and you get a hard error, not a subtly wrong image - the node validates 128 packed channels, a spatial downscale ratio of 16, and the VAE's BatchNorm stats before doing anything. That's a feature. A silently-wrong transform would be far worse than an error you can read.
- Use the same VAE at both ends. If your encode and decode VAEs differ, the bridge only corrects for one of them.
- Expect to see nothing if you're already set up right. If your colors are already correct, this node changes nothing. It's a fixer, not a style node - you install it because something is wrong, not for fun.
One reminder while you're here: Ideogram 4 is non-commercial-licensed, and this node doesn't change what you can do with the output - it just makes the output worth having. Given the model settled into a graphic-design and layout niche (best-in-class text-in-image, absurd IP recall, plus that JSON prompting overhead), this is exactly the kind of small surgical utility the ComfyUI ecosystem runs on. Nobody's writing love letters about it, but the person whose workflow it quietly fixes will be glad it's there.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | Ideogram 4 / Flux.2 MODEL to calibrate. Connect the returned MODEL to your guider. The bridge acts only at latent input/output boundaries, not on denoising steps. | |
| vae | VAE | The same packed Ideogram 4 / Flux.2 VAE used to encode or decode this workflow. The node maps between the model's official latent normalization and this VAE's stored BatchNorm statistics. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |