⭐ StarSampler (Unified)
One sampler node that doesn't care if you're on Flux or SDXL
- model
- positive
- latent
- vae
- negative
- detail_schedule
- options
- preview
- model
- positive
- negative
- latent
- image
- vae
- seed
- info
- split_info
The stock KSampler is the node everybody starts with and the node everybody eventually replaces, because the two dominant model families want different plumbing. Flux needs a shift knob and ignores your negative prompt; SDXL wants CFG around 5-7 and a Karras schedule. StarSampler (Unified) is one node that swallows both: same sockets, same look, and it applies the right math depending on what model you plug in. It even bundles an optional tiled VAE decoder so big images decode on GPUs that would otherwise choke.
That's the pitch, and it's genuinely useful. The pack bills it as "one sampler to rule them all," which is marketing-flavored, but the real win is smaller: you stop maintaining two different sampling sub-graphs for your Flux and SDXL workflows, and you get a decoded IMAGE straight out of the sampler instead of wiring a VAE Decode node every time.
How it works
Feed it a model, positive conditioning and a latent, and it samples with your chosen sampler/scheduler, then VAE-decodes internally (if decode_image is on). The Flux-specific magic is the shift handling: max_shift (default 1.15) and base_shift (default 0.5) are applied for Flux/AuraFlow models and ignored for SD models - you don't need a separate ModelSampling node.
Two things worth knowing from how the sampler world actually works (see the KB's concepts essay): at CFG 1 - the default here, and the correct value for guidance-distilled models like Flux - the negative prompt does nothing, because there's no unconditional pass for it to attach to. And for flow-matching models, Karras and exponential schedules are notoriously bad. simple as the default scheduler is the right call for the modern family; if you're on an older SDXL checkpoint, switching to DPM++ 2M Karras is still the move.
Inputs that matter
- model / positive / latent - the standard sampler inputs. negative is optional and ignored for Flux.
- seed / steps / cfg / denoise - the usual dials; CFG defaults to 1 for distilled models.
- sampler_name (44 options) and scheduler (9 options) - full ComfyUI lists.
- vae - required if you want image output; decode_image and tiled_vae_decoding control whether and how it decodes. Tiled decode trades a little quality for a lot of VRAM headroom.
- options - the extension point: plug in ⭐ Star Split Sampler Option to switch samplers mid-run, ⭐ Star FlowMatch Option to override Flux/Aura sigmas, or the Distilled Optimizer for two-pass ZIT refinement.
Outputs include image, latent, model, positive, negative, vae, seed, info (a status string), and split_info (a SAMPLER_INFO bundle for the split-sampler feature).
Install
It ships in Starnodes2024/ComfyUI_StarNodes:
cd ComfyUI/custom_nodes
git clone https://github.com/Starnodes2024/ComfyUI_StarNodes
cd ComfyUI_StarNodes
pip install -r requirements.txt
Restart, search star. No extra dependencies for the sampler itself.
Where people get burned
The big one: if you port an SDXL workflow in and leave CFG at 1, you'll get flat, washed-out results - CFG 1 is Flux's world, not SDXL's. Bump it toward 4-7 for older checkpoints. Conversely, don't crank CFG on Flux "to improve prompt adherence"; that burns the image. And if you connect a negative on Flux expecting it to do something, you're fighting the architecture - it won't. Start with euler/simple (the defaults) for flow-matching models, and reserve Karras for the SD side.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The model to use for sampling | |
| positive | CONDITIONING | Positive conditioning (prompt) | |
| latent | LATENT | The latent image to denoise | |
| seed | INT | 00–18446744073709550000 | Random seed for sampling |
| steps | INT | 101–10000 | Number of sampling steps |
| cfg | FLOAT | 1.00–100 | Classifier Free Guidance scale |
| sampler_name | COMBO | euler | Sampler algorithm |
| scheduler | COMBO | simple | Noise schedule |
| denoise | FLOAT | 1.000–1 | Denoising strength |
| vae | VAE | VAE model for decoding latents | |
| decode_image | BOOLEAN | true | Decode the latent to an image using the VAE |
| tiled_vae_decoding | BOOLEAN | false | Use Tiled VAE decoding to save VRAM |
| negativeopt | CONDITIONING | Negative conditioning (optional, not used for Flux models) | |
| max_shiftopt | FLOAT | 1.150–10 | Max shift for Flux models (ignored for SD models) |
| base_shiftopt | FLOAT | 0.500–10 | Base shift for Flux/AuraFlow models |
| detail_scheduleopt | DETAIL_SCHEDULE | Optional detail daemon schedule | |
| optionsopt | * | Optional sampler options. Connect ⭐ Star Split Sampler Option to switch between two samplers mid-run, ⭐ Star FlowMatch Option (SIGMAS) to override Flux/Aura sigmas, or ⭐ Distilled Optimizer (ZIT) to enable two-pass ZIT refinement. | |
| previewopt | STAR_PREVIEW | Optional ⭐ Star Preview options - shows a live sampling preview on the connected ⭐ Star Preview node (works for image and video models). |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |
| image | IMAGE | — |
| vae | VAE | — |
| seed | INT | — |
| info | STRING | — |
| split_info | SAMPLER_INFO | — |