Nodes/ComfyUI UX Nodes/Flux Block Weight String
ComfyUI Node

Flux Block Weight String

57 sliders for surgical LoRA block control

By Anibaaal·Created 2 years ago·Updated 2 years ago· 2
Flux Block Weight String
    • comma_separated_string
    DOUBLE01.00
    DOUBLE11.00
    DOUBLE21.00
    DOUBLE31.00
    DOUBLE41.00
    DOUBLE51.00
    DOUBLE61.00
    DOUBLE71.00
    DOUBLE81.00
    DOUBLE91.00
    DOUBLE101.00
    DOUBLE111.00
    DOUBLE121.00
    DOUBLE131.00
    DOUBLE141.00
    DOUBLE151.00
    DOUBLE161.00
    DOUBLE171.00
    DOUBLE181.00
    SINGLE01.00
    SINGLE11.00
    SINGLE21.00
    SINGLE31.00
    SINGLE41.00
    SINGLE51.00
    SINGLE61.00
    SINGLE71.00
    SINGLE81.00
    SINGLE91.00
    SINGLE101.00
    SINGLE111.00
    SINGLE121.00
    SINGLE131.00
    SINGLE141.00
    SINGLE151.00
    SINGLE161.00
    SINGLE171.00
    SINGLE181.00
    SINGLE191.00
    SINGLE201.00
    SINGLE211.00
    SINGLE221.00
    SINGLE231.00
    SINGLE241.00
    SINGLE251.00
    SINGLE261.00
    SINGLE271.00
    SINGLE281.00
    SINGLE291.00
    SINGLE301.00
    SINGLE311.00
    SINGLE321.00
    SINGLE331.00
    SINGLE341.00
    SINGLE351.00
    SINGLE361.00
    SINGLE371.00
    final_layer1.00

    This is not a beginner node, and it's worth saying that up front: it's a power tool for people doing LoRA block surgery on Flux, and if you've never heard of "block weight" as a concept, you probably don't need it yet. What it does is simple even though the reason it exists isn't - it gives you one slider per transformer block in Flux's architecture, 57 of them plus a final-layer slider, and packs whatever you set them to into the single comma-separated string that block-weight-aware LoRA loaders expect.

    Why block weight is a real thing, not a gimmick

    Flux's transformer splits into two kinds of blocks: 19 "double-stream" blocks, where image and text tokens are still processed with separate weights before they merge, and 38 "single-stream" blocks after that merge, where the weights are shared. That's not incidental trivia - it's exactly why this node has 19 DOUBLE# inputs and 38 SINGLE# inputs plus a final_layer slider. Setting any one of them to 0 zeroes out that block's contribution when a LoRA is applied through a block-weight loader; 1 is full strength; anything in between blends. It's the same idea Kohya's LoRA Block Weight tooling popularized for SD1.5 and SDXL, carried over to Flux's block count.

    People genuinely do this. On r/StableDiffusion, LoRA trainers have run exactly this kind of block-by-block test - zeroing different ranges of double and single blocks and regenerating to see what disappears - and reported (informally, with real disagreement between different trainers' results) that face-specific detail tends to cluster in a handful of early-to-mid blocks while style and clothing spread more broadly across the rest. It's a real, actively-poked-at technique for isolating what part of a LoRA controls what, not something invented for this pack.

    The inputs and outputs that matter

    • DOUBLE0 through DOUBLE18 - 19 floats, default 1 each, one per double-stream block.
    • SINGLE0 through SINGLE37 - 38 floats, default 1 each, one per single-stream block.
    • final_layer - one more float, default 1, for the output layer.
    • Output: comma_separated_string - all 58 values joined into the text format a block-weight loader reads.

    The honest limit worth naming: this node only builds the string. It doesn't apply anything by itself - you still need a block-weight-aware LoRA loader elsewhere in your graph (Inspire Pack's Lora Loader Block Weight and KJNodes both ship one) that actually reads the string and maps each comma-separated position to a block. This node earns its keep only once you already have one of those wired in and got tired of hand-typing 58 numbers.

    How to install it

    One of six nodes in ComfyUI UX Nodes, a side project from Reddit's Anibaaal, who's better known there for a well-received Flux realism LoRA than for node development - this pack reads like something built to scratch a personal itch, and the block-weight tool fits that: exactly the kind of node a LoRA trainer would want and nobody else had bothered to make lightweight. The README is a bare node list with no install notes. Standard route: ComfyUI Manager, search ComfyUI UX Nodes, install, restart. Manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Anibaaal/ComfyUI-UX-Nodes
    

    then restart. No models, pure string assembly.

    Common issues & troubleshooting

    LoRA effect on the wrong parts of the image. Different loader nodes and community conventions don't always agree on whether double blocks or single blocks come first in the string. If reweighting seems to hit the wrong areas of the output, check the receiving loader's expected block order before assuming this node built the string wrong.

    Assuming a specific block controls a specific feature. There's no official documentation from Black Forest Labs mapping block index to effect - everything the community "knows" about which blocks control face versus style versus clothing comes from individual trainers running tests like the ones above and posting results. Treat any such mapping as a starting hypothesis to verify on your own LoRA, not a rule that transfers cleanly between different LoRAs or training methods.

    CategoryCustom Nodes

    Inputs (58)

    NameTypeDefaultDescription
    DOUBLE0FLOAT1.00
    DOUBLE1FLOAT1.00
    DOUBLE2FLOAT1.00
    DOUBLE3FLOAT1.00
    DOUBLE4FLOAT1.00
    DOUBLE5FLOAT1.00
    DOUBLE6FLOAT1.00
    DOUBLE7FLOAT1.00
    DOUBLE8FLOAT1.00
    DOUBLE9FLOAT1.00
    DOUBLE10FLOAT1.00
    DOUBLE11FLOAT1.00
    DOUBLE12FLOAT1.00
    DOUBLE13FLOAT1.00
    DOUBLE14FLOAT1.00
    DOUBLE15FLOAT1.00
    DOUBLE16FLOAT1.00
    DOUBLE17FLOAT1.00
    DOUBLE18FLOAT1.00
    SINGLE0FLOAT1.00
    SINGLE1FLOAT1.00
    SINGLE2FLOAT1.00
    SINGLE3FLOAT1.00
    SINGLE4FLOAT1.00
    SINGLE5FLOAT1.00
    SINGLE6FLOAT1.00
    SINGLE7FLOAT1.00
    SINGLE8FLOAT1.00
    SINGLE9FLOAT1.00
    SINGLE10FLOAT1.00
    SINGLE11FLOAT1.00
    SINGLE12FLOAT1.00
    SINGLE13FLOAT1.00
    SINGLE14FLOAT1.00
    SINGLE15FLOAT1.00
    SINGLE16FLOAT1.00
    SINGLE17FLOAT1.00
    SINGLE18FLOAT1.00
    SINGLE19FLOAT1.00
    SINGLE20FLOAT1.00
    SINGLE21FLOAT1.00
    SINGLE22FLOAT1.00
    SINGLE23FLOAT1.00
    SINGLE24FLOAT1.00
    SINGLE25FLOAT1.00
    SINGLE26FLOAT1.00
    SINGLE27FLOAT1.00
    SINGLE28FLOAT1.00
    SINGLE29FLOAT1.00
    SINGLE30FLOAT1.00
    SINGLE31FLOAT1.00
    SINGLE32FLOAT1.00
    SINGLE33FLOAT1.00
    SINGLE34FLOAT1.00
    SINGLE35FLOAT1.00
    SINGLE36FLOAT1.00
    SINGLE37FLOAT1.00
    final_layerFLOAT1.00

    Outputs (1)

    NameTypeDescription
    comma_separated_stringSTRING