Hezl KSampler Preset
The KSampler that remembers your settings so you don't have to
- model
- positive
- negative
- latent_image
- LATENT
You know the drill: new workflow, and you're re-typing the same sampler settings you've typed fifty times before - DPM++ 2M, Karras, 28 steps, CFG 7 - into yet another bare KSampler. Hezl KSampler Preset is the node that calls that ritual what it is and ends it. It's a drop-in replacement for the stock KSampler that lets you save your go-to settings under a name and load them with one click. Nothing more, nothing less, and that's exactly its charm.
It comes from a small, no-frills pack (the README is a single line in Chinese: "adds presets to the original KSampler"). It's brand new and barely indexed anywhere yet, so you're an early adopter. The good news: because it does almost nothing itself, there's not much to go wrong.
How it works
Here's the part that should make you trust it: the sampling itself isn't reimplemented. The node's sample() function calls common_ksampler - literally the same function the built-in KSampler uses - so the output is byte-for-byte identical to stock ComfyUI. You are not getting some custom, half-tested sampler algorithm.
The preset part is a frontend trick, and it's a clean one. The preset_name dropdown is just workflow persistence and UI glue: pick a preset and the node's JavaScript fetches a JSON file from the pack's Preset/ folder over ComfyUI's API and fills in the widget values. Each preset stores six parameters: seed, steps, cfg, sampler_name, scheduler, denoise. The dropdown itself isn't passed to the sampler - what runs is whatever's in the widgets at that moment. So a preset is "fill in my fields," not "lock these values." Tweak a slider after applying one, and your tweak wins. That's a feature once you understand it.
The inputs that matter
Everything here maps 1:1 to the stock KSampler, plus one dropdown and two buttons.
- model, positive, negative, latent_image - same wires as always. LATENT comes out the other side, ready for your VAE Decode.
- preset_name - the dropdown. Select a preset and the six settings below snap to the saved values.
- sampler_name and scheduler - fed straight through to the sampler, so you get whatever your installed ComfyUI version supports (the schema lists 44 sampler names and 9 schedulers, euler through dpm variants, plus simple/karras/sgm_uniform scheduling).
- 💾 and 🗑️ buttons - added by the pack's JS below the node. Save captures the current six settings and prompts for a name; delete removes the selected preset.
The only genuinely new thing you'll actually set is preset_name. The other knobs behave exactly like the stock node's.
Installing it
Dead simple - this pack has no Python dependencies, no model downloads, no requirements.txt. It's a few hundred lines of pure Python plus a small JS file.
ComfyUI Manager: search "Hezl" or "KSamplerPreset" and install. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/Hezldeen/ComfyUI_Hezl-KSamplerPreset
Restart ComfyUI and drop the "Hezl KSampler Preset" node onto the canvas under Hezl-Node/采样器 (sampler).
Where people get burned
- Presets are just files in
custom_nodes/ComfyUI_Hezl-KSamplerPreset/Preset/. Deleting the pack, or re-cloning over it, wipes them. If you build a library you care about, back that folder up - or hand-edit a JSON to fix a value, since that's all a preset is. - Denoise rides along in the preset. Save a preset mid-img2img at denoise 0.5 and it'll silently apply that to a txt2img gen later. Save presets at denoise 1.0, or check it before you run.
- The seed trap is still there. The preset writes the seed number, but it doesn't touch the seed widget's
control_after_generatemode. If yours is set to randomize, it'll roll a new seed after the run - the classic ComfyUI gotcha that's eaten everyone once. Set "widget control mode" to Before and it stops being a thing. - The UI speaks Chinese. The save/delete buttons are 💾 and 🗑️, and the toasts are in Chinese - you can't miss them, but don't be startled when the dialog isn't in English. You'll memorize "保存预设" (save) and "删除预设" (delete) in about a run.
Is it a must-have? No - if you run one workflow and never change settings, stock KSampler is fine. But if you juggle a "fast draft," a "quality," and an "anime" set of sampler settings across projects, it's the kind of tiny quality-of-life node that quietly saves you a minute every single session.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| preset_name | COMBO | (无预设) | 1 options: (无预设) |
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent_image | LATENT | — | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.00–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |