System Edit Text Encode (Advanced)
Multi-Image Edit Encoding With a Custom System Prompt
- clip
- image_inputs
- vae
- CONDITIONING
The stock TextEncodeSystemEditPlus from ComfyUI core is how Qwen-Image-lineage edit models take "here's the image, here's the edit request." This node is that node with the limits removed: your own system prompt, up to sixteen autogrowing image sockets, batches flattened into sequential inputs, and full control over the VLM-versus-VAE reference paths. If you've hit the wall where a single reference image wasn't enough for the edit you had in mind, this is the encode you want.
How it works
The inputs tell the story:
- clip - the Qwen-Image-style edit encoder.
- prompt + system_prompt - the edit request and the role instruction. The
system_promptis the big upgrade over the plain core node: a persona like "you are a photo editor, keep composition identical" materially changes how the encoder frames the edit. - image_inputs - autogrow image sockets, flattened in ascending order, and every image in a connected batch becomes the next sequential input. That's the multi-image and batch superpower: one node, many references, no fanning out by hand.
- vlm_resolution - how big the image gets for the semantic path (Fast 384 → XX-Large 1536, or Original). 384 is fast; 768+ is for detail-dependent edits.
- vae_resolution - the structural reference-latent resolution (Ultra 512 → Detailed 1536 / Original).
- ref_latent_mode -
single/multiappend reference latents to the conditioning;parallel-single/parallel-multirun them in a separate stream so the reference can't semantically override your edit. - vae_dimension_multiple (8) - alignment multiple before VAE encoding.
- vae - optional, needed only for reference-latent modes.
Output: one CONDITIONING tensor. If the prompt contains image_input_N tokens, the flattened images map onto them in order - so you can reference "image_input_1" and "image_input_2" explicitly in your edit instruction.
Installing it
It's part of ComfyUI-UtilsCollection (author: silveroxides):
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-UtilsCollection
Restart ComfyUI, or install "ComfyUI-UtilsCollection" via Manager. The pack's requirements are just opencv-python and typing-extensions - encoding runs through core's CLIP machinery.
Where people get tripped up
The parallel-* modes are semantic switches, not speed options - use them when the model keeps redrawing the reference instead of applying your edit. And this is a memory-heavy node by construction: two image paths plus a big VLM encoder can OOM fast if you set both resolutions to "Large." Keep the VLM path at the resolution your edit actually needs. Also - if your workflow came from an older Core node of the same family, the pack keeps the legacy node ID alive, so your old workflows load; but the UC_ version is the one with the system prompt and the autogrow sockets. Use it.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| prompt | STRING | — | |
| system_prompt | STRING | — | |
| vlm_resolution | COMBO | Fast (384) | Resolution of the image passed to the VLM (semantic path). 'Fast' = 384x384, 'Balanced' = 512x512, 'Detailed' = 768x768, 'Large' = 1024x1024, 'X-Large' = 1280x1280, 'XX-Large' = 1536x1536, 'Original' uses native resolution. |
| vae_resolution | COMBO | Fast (1024) | Resolution of the reference latent encoded by the VAE (structural path). |
| ref_latent_mode | COMBO | off | Reference latent encoding mode. 'single'/'multi' append latents; 'parallel-single'/'parallel-multi' run them in a separate conditioning stream to prevent semantic override. |
| vae_dimension_multiple | INT | 84–256 | Pixel multiple used to align reference images before VAE encoding. |
| image_inputs | COMFY_AUTOGROW_V3 | Images are flattened in ascending socket order; every image in a connected batch becomes the next sequential image input. | |
| vaeopt | VAE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |