KSampler Fooocus
The Fooocus look, without leaving ComfyUI
- model
- positive
- negative
- latent_image
- LATENT
Fooocus, the zero-config SDXL app, got its sharp, well-composed default look from a pile of tricks its author baked in and never exposed as settings - one of them being a low-weight self-attention-guidance variant specifically tuned to stop skin coming out plastic. Fooocus itself has been frozen since August 2024 (its author declared bug-fixes-only LTS and sent Flux users to Forge or ComfyUI), so the app isn't going anywhere new. This node is how you keep the trick without the frozen app: it's ArtVenture's port of that sampling recipe into a normal ComfyUI KSampler, with one extra dial the stock node doesn't have.
Functionally it's a drop-in replacement for KSampler. Same wiring, same job - turn noise into a denoised latent - plus the sharpness control riding along.
How it works
Standard diffusion sampling: model, positive/negative conditioning, and a noisy latent go in, steps of denoising happen according to your sampler and scheduler, a clean-ish latent comes out. Where this differs from the plain KSampler is sharpness, which applies that same low-strength guidance term Fooocus uses internally to fight the soft, waxy skin SDXL tends toward at higher CFG. It's not a sharpening filter bolted on after the fact - it's part of the sampling process itself, the same way Fooocus does it.
The inputs and outputs that matter
Most of this is standard KSampler territory: model, seed, steps (default 20), cfg (default 8), sampler_name and scheduler (the full ComfyUI lists - 44 samplers, 9 schedulers), positive/negative conditioning, and latent_image. denoise (default 1, range 0–1) works exactly like it does elsewhere: 1.0 for a full txt2img pass, lower for img2img or a refiner-style touch-up.
The one field worth actually thinking about is:
sharpness(optional, default2, range0–100) - strength of the anti-plastic-skin guidance. Fooocus's own default sits around this same low value on purpose; it's meant to be subtle. Push it up if skin still looks smooth and waxy at your CFG; set it to0if you want stock KSampler behavior with none of Fooocus's flavor.
Output is a single LATENT - VAE-decode it as usual.
For CFG, the general SDXL sweet spot still applies here (5–9; push past 10 and Fooocus's own list of tricks includes a CFG/TSNR correction specifically because default SDXL starts burning up there).
How to install it
It's part of the Art Venture pack. ComfyUI Manager: search comfyui-art-venture, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/sipherxyz/comfyui-art-venture
then pip install -r comfyui-art-venture/requirements.txt and restart. No model downloads - this is a sampler, not a loader.
Common issues & troubleshooting
Results look basically the same as a plain KSampler. At the default sharpness of 2, the effect is deliberately subtle - that's how Fooocus tuned it. Try pushing to 10–20 on a face-heavy image and compare; you're looking for less waxy, more textured skin, not a different composition.
Oversharpened, crunchy-looking skin. You went too far the other direction. Bring sharpness back down toward the default; this isn't a strength dial you crank to 100 for a stronger effect, it's closer to "how much of this correction do you want."
Reaching for the Advanced version instead. If you need to split a run across two samplers - a base pass and a refiner pass, or resuming a partially-denoised latent - that's Fooocus_KSamplerAdvanced, which trades the simple denoise dial for add_noise/start_at_step/end_at_step/return_with_leftover_noise, the same handoff mechanism as ComfyUI's own KSampler (Advanced).
No visible difference between samplers. That part's unrelated to this node - sampler/scheduler choice behaves exactly as it does in stock ComfyUI. If you're chasing a specific look, change one variable at a time (sampler, then scheduler, then sharpness) rather than all three.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The model used for denoising the input latent. | |
| seed | INT | 00–18446744073709550000 | The random seed used for creating the noise. |
| steps | INT | 201–10000 | The number of steps used in the denoising process. |
| cfg | FLOAT | 8.00–100 | The Classifier-Free Guidance scale balances creativity and adherence to the prompt. Higher values result in images more closely matching the prompt however too high values will negatively impact quality. |
| sampler_name | COMBO | The algorithm used when sampling, this can affect the quality, speed, and style of the generated output. | |
| scheduler | COMBO | The scheduler controls how noise is gradually removed to form the image. | |
| positive | CONDITIONING | The conditioning describing the attributes you want to include in the image. | |
| negative | CONDITIONING | The conditioning describing the attributes you want to exclude from the image. | |
| latent_image | LATENT | The latent image to denoise. | |
| denoise | FLOAT | 1.000–1 | The amount of denoising applied, lower values will maintain the structure of the initial image allowing for image to image sampling. |
| sharpnessopt | FLOAT | 2.000–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | The denoised latent. |