Nodes/ComfyUI-VisualArea-Nodes/Visual Area Prompt
ComfyUI Node

Visual Area Prompt

Draw your prompt areas on the node instead of typing coordinates

By Fuwuffyi·Created 2 years ago·Updated 2 years ago· 76
Visual Area Prompt
    • area_conditioning
    • combined_conditioning
    image_width1024
    image_height1024

    Two characters in one image keep swapping clothes, hair, and each other's faces, no matter how carefully you phrase the prompt. That's the classic regional prompting failure: conditioning applies to the whole canvas, so a single prompt describing two subjects smears their attributes together. The standing fix is to split the canvas and give each region its own prompt. The stock ComfyUI way to do that - ConditioningSetArea nodes fed by hand-typed x/y/width/height values - is fiddly enough that most people give up before the second character looks right. VisualAreaPrompt is the version of that idea where you get a little canvas on the node, drag your areas into place, and watch the colors.

    It comes from Fuwuffy's small ComfyUI-VisualArea-Nodes pack, and it's a resurrection of Davemane42's old MultiAreaConditioning-era nodes, which silently stopped working on modern ComfyUI. The README says the goal was making those accessible again - which is real: people were asking for MultiAreaConditioning alternatives as late as 2024. This node is the answer that stuck.

    How it works

    The node is half UI, half clever graph-building. The frontend draws a grid canvas on the node body and stores each area as a list of five numbers: x, y, width, height, and strength - all fractions of the canvas (strength goes up to 10). At execution, the node reads those values back from the workflow metadata and constructs the classic low-level chain for you: one ConditioningSetAreaPercentage per area, ConditioningConcat for the general pass, ConditioningCombine to merge it all. You get the end result of six or seven fiddly nodes without touching a single coordinate box.

    The inputs that matter

    Connect a CLIPTextEncode to area_conditioning_0 and a new input appears; connect a second one and you get area_conditioning_1, each mapping to a color-coded rectangle on the canvas. Pick which area you're editing with the area_id widget, then adjust:

    • x, y, width, height - the region, as fractions 0–1. Dragging on the canvas does this for you.
    • conditioning_strength - how hard the area's prompt applies (default 1.0, max 10).
    • image_width / image_height - here's the trap: these only change the preview canvas, per the author's own tooltip. Your output resolution is whatever your Empty Latent Image says. Set them to match it so what you see is what you get.

    Two outputs, both CONDITIONING: area_conditioning is the combined areas plus a general pass - wire that to your sampler's positive. combined_conditioning is all the prompts concatenated with no area applied, which is handy as a negative or a base.

    Installing it

    ComfyUI Manager, search "ComfyUI-VisualArea-Nodes" (or "Visual Area Prompt"), install, restart. Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Fuwuffyi/ComfyUI-VisualArea-Nodes.git
    

    Restart ComfyUI. That's the whole install - no requirements.txt, no model downloads, no API key.

    Gotchas

    Disconnecting an area input deletes the input and its area - expected, not a bug. Areas live in the frontend, so the node needs the UI's workflow data at runtime; if you queue the graph headlessly or from an API without the workflow metadata, it'll error. And because this is mask-style regional conditioning held to the end of sampling, you can get collaged seams between regions - if that happens, start with a modest strength and a general prompt in the mix rather than treating regions as hard walls.

    CategoryRegionalPrompt

    Inputs (2)

    NameTypeDefaultDescription
    image_widthINT102416–16384The width of the canvas. (only affects looks).
    image_heightINT102416–16384The height of the canvas. (only affects looks).

    Outputs (2)

    NameTypeDescription
    area_conditioningCONDITIONINGArea conditioning
    combined_conditioningCONDITIONINGCombined conditioning