Synthid-Bypass-AdaptiveDenoise
One knob that sets your denoise from image resolution alone
- image
- denoise
- width
- height
- pixel_ratio
- report
Denoise is the number you end up nudging by 0.01 until the image looks right, which is a terrible way to spend an evening. This node exists to take exactly one of those decisions off your hands: it reads your image's resolution and returns a denoise value tuned for it. No detection, no model swap, no SEGS - feed it an image, get a FLOAT out. It was built for the Synthid-Bypass workflow, where the amount of diffusion "re-nosing" you need scales with how many pixels you're scrambling, but the same logic applies to any img2img or upscale pass that should behave differently at 512×512 than at 4K.
How it picks the number
The math is pure resolution, with one calibration constant. It computes the image area in megapixels and maps it across a calibrated range: roughly 0.30MP lands on denoise_min, roughly 3.70MP lands on denoise_max, and anything in between interpolates. The adaptive_level input (1–10, default 5) is the one real knob - level 5 is the neutral calibration, levels above push denoise up (about +0.02 at level 10 on the default range) and levels below pull it down. That's it. Bigger canvas, bigger denoise; smaller canvas, lighter touch.
That's also the entire justification, in the bypass context: a small image gets fully scrambled at a low denoise, while a high-res render has the watermark pattern spread over far more pixels and needs a stronger pass to disrupt it without visibly wrecking the content. The node is the part of the workflow that stops you from hand-tuning that per image.
Inputs and outputs
Three inputs, all worth knowing:
image- anyIMAGE; only its dimensions are used.adaptive_level- the aggression dial. 5 is neutral; treat 1 and 10 as "very light" and "very strong" rather than good and bad.denoise_min/denoise_max- the output band. Defaults are 0.08 and 0.15, tuned for the bypass workflow, so if you're using this for plain creative img2img you'll probably want a wider band.
Outputs: denoise (the FLOAT you wire into a KSampler, or into the denoise input of the Synthid-Bypass-Facedetailer), plus width, height, and pixel_ratio (relative to a 1MP / 1024² reference) if you want the raw numbers for another node. The report output is a STRING with the whole breakdown - dimensions, megapixels, normalized position in the calibrated range, level offset, and the final value. Wire it into a text preview node and you can see exactly why it chose what it chose, which is handy when you're explaining a number to yourself at 2am.
Installing it
Same pack as the rest of the Synthid-Bypass nodes, and ComfyUI Manager's "Install Missing Custom Nodes" won't pull it in - the README says to install manually:
cd ComfyUI/custom_nodes
git clone https://github.com/timothy692/Comfyui-SynthidBypass
then restart ComfyUI. The pack has no pip dependencies of its own; it does import Impact Pack modules at load, so keep ComfyUI-Impact-Pack installed or the whole pack fails to register. If the node isn't in your list after restart, check you didn't nest folders (Comfyui-SynthidBypass/Comfyui-SynthidBypass/ is the classic mistake).
Two honest caveats
First, it has no idea what's in the image - it's resolution math and nothing else, so don't expect face awareness. That's the Facedetailer's job; this node is the cheap front-end. Second, the defaults assume the bypass workflow's denoise band. Reused elsewhere, 0.08–0.15 is a light img2img range, so widen denoise_min/denoise_max before you trust it for creative work. As a helper it's genuinely handy; as a drop-in for all your denoise problems it'll need a few minutes of calibration first.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| adaptive_level | INT | 51–10 | — |
| denoise_min | FLOAT | 0.0800.0001–1 | — |
| denoise_max | FLOAT | 0.1500.0001–1 | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| denoise | FLOAT | — |
| width | INT | — |
| height | INT | — |
| pixel_ratio | FLOAT | — |
| report | STRING | — |