Nodes/ComfyUI-UniWorld-jd17/UniWorld Siglip Encoder
ComfyUI Node

UniWorld Siglip Encoder

Pixel-exact SigLIP, because generic encode_image isn't good enough

By judian17·Created about a year ago·Updated about a year ago· 21
UniWorld Siglip Encoder
  • clip_vision
  • image
  • CLIP_VISION_OUTPUT

UniWorldSiglipEncoder is a supporting player in the ComfyUI-UniWorld-jd17 pack, and it exists for one stubborn reason: the UniWorld-V1 conditioning path wants SigLIP image embeddings computed with its exact preprocessing, and ComfyUI's built-in clip-vision encode won't give you that. If you're running this pack's main UniWorld Encoder (Qwen2.5VL) node, this is the node that feeds its siglip_vision_output socket.

Why it can't just use the built-in node

ComfyUI's normal CLIPVisionEncode applies its own resize and normalization pipeline to whatever vision model you loaded. The UniWorld project trained with a specific recipe - resize to 512×512 with bicubic resampling, then normalize by 0.5 mean/std - so the node bypasses ComfyUI's generic path and reproduces that preprocessing by hand before calling the vision model's forward pass. Same model, same weights; different pixel distribution in. When you're feeding embeddings into a model trained on that exact distribution, "close enough" is how you get subtle color and adherence drift.

The inputs and output

  • clip_vision - a CLIP_VISION from CLIPVisionLoader. The shipped workflow uses google/siglip2-so400m-patch16-512, and you should too; feed it a different vision model and the embeddings shift out of distribution.
  • image - the same reference image that also goes to the encoder node.

The single output, CLIP_VISION_OUTPUT, carries the last hidden state plus pooled image embeds in the format ComfyUI expects, and wires straight into UniWorldEncoderNode's siglip_vision_output input. It's a pure preprocessing-and-run node: nothing to tune, no model loading of its own.

Install

No separate model download beyond the SigLIP2 safetensors, which the CLIPVisionLoader fetches. The node uses torchvision transforms, which ship with ComfyUI's environment, and the pack's shared transformers==4.50.0 pin (the author found 4.52.3 errors out) doesn't really bite here. Install the pack via Manager or:

cd ComfyUI/custom_nodes
git clone https://github.com/judian17/ComfyUI-UniWorld-jd17

then restart and grab the siglip2 model through the loader.

When you'd bother with it

On its own, this node does nothing visible - it's purely a preconditioner for the encoder. The one knob you actually have is choosing the right clip_vision, and the default from the example workflow is correct. If you ever see the encoder produce weak or washed-out edits, check that this node is actually feeding it (the console prints a confirmation line), because running the encoder without the SigLIP path is allowed and gives a subtly different result. That's the whole job, and for a node this thin, that's fine.

Categoryconditioning/UniWorld

Inputs (2)

NameTypeDefaultDescription
clip_visionCLIP_VISION
imageIMAGE

Outputs (1)

NameTypeDescription
CLIP_VISION_OUTPUTCLIP_VISION_OUTPUT