Nodes/ComfyUI-GGUF-Loader/Qwen-Image KSampler ⚡
ComfyUI Node

Qwen-Image KSampler ⚡

A stock KSampler with one extra toggle that matches diffusers img2img exactly

By ChrisColeTech·Created about a month ago·Updated 4 days ago· 10
Qwen-Image KSampler ⚡
  • model
  • positive
  • negative
  • latent_image
  • LATENT
seed0
steps20
cfg2.5
sampler_nameeuler
schedulersimple
denoise1.00
denoise_modecomfy

If you've ever rendered in ComfyUI and in a diffusers pipeline with "the same" settings and gotten slightly different images, this node is the explanation wearing a sampler's clothing. Qwen-Image KSampler is a drop-in for the stock KSampler with exactly one extra option, denoise_mode, that reconciles two different conventions for how img2img denoising slices the sampling schedule. It's a compatibility switch, not a quality fix - but for img2img parity with the original pipeline, it's the switch.

The problem it solves

Qwen-Image has no bespoke sampling code in ComfyUI at all - it shares the Flux family's ModelSamplingFlux setup (the same shift=1.15). The discrepancy is in how denoise is interpreted. ComfyUI's own convention re-expands to int(steps/denoise) steps and takes the tail; the diffusers img2img convention computes the schedule at steps and slices from t_start = steps - round(steps*denoise). Same number typed, slightly different sigma schedule, measurably different output.

The pack verified this against a real loaded Qwen-Image model rather than assuming: at 9 steps, denoise 0.9, ComfyUI starts at sigma ≈0.9660 vs ≈0.9619 under the diffusers-style slice. Smaller than Z-Image's measured gap, same mechanism. At denoise 1.0 the two are identical, so txt2img is unaffected - this only ever matters for img2img.

The two modes

  • denoise_mode="comfy" (default) - unchanged stock KSampler behavior. If your workflow already looks the way you want, don't touch it.
  • denoise_mode="diffusers" - matches the diffusers-pipeline img2img convention exactly. Use it when you're porting a workflow from diffusers and want the reference output, or when you're chasing the exact look of a diffusers-based tutorial.

Everything else is a familiar KSampler: model, positive, negative, latent_image, seed, steps (20), cfg (2.5 - Qwen-Image's comfortable range is lower than SD-era defaults), the full sampler_name list (euler default), scheduler (simple default), and denoise. Output is LATENT, into VAE Decode.

Where it fits

The pack's Qwen-Image graph hands you model, positive, negative, latent and denoise straight out of Qwen-Image img2img, which is a node built to feed a stock KSampler. This node slots in as that sampler when you want the diffusers-exact denoise behavior - pair the two and the whole img2img stack matches the original pipeline's convention end to end.

Installing it

Part of the ComfyUI-GGUF-Loader pack under 🤖 CCTech/Qwen-Image. ComfyUI Manager → search "ComfyUI-GGUF-Loader" → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/ChrisColeTech/ComfyUI-GGUF-Loader
cd ComfyUI-GGUF-Loader
pip install -r requirements.txt

Common issues

The trap is expecting denoise_mode to change quality. It doesn't - it changes parity. If your img2img results look worse than you'd like, that's a prompt/strength/CFG tuning problem, and flipping to diffusers mode won't rescue it. And if your text-to-image workflow feels fine, leave it on comfy; the modes only diverge below denoise 1.0, and txt2img runs at 1.0 by definition.

Category🤖 CCTech/Qwen-Image

Inputs (11)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
latent_imageLATENT
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT2.50–100
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOsimple9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000–1
denoise_modeCOMBOcomfy2 options: comfy, diffusers

Outputs (1)

NameTypeDescription
LATENTLATENT