Nodes/comfyui-a1111-styles/A1111 Styles Selector (CheckList)
ComfyUI Node

A1111 Styles Selector (CheckList)

Flip your saved styles on and off while you iterate

By azarasi3·Created 6 months ago·Updated 6 months ago· 1
A1111 Styles Selector (CheckList)
    • positive
    • negative
    csv_fileNone
    selected_styles[]
    positive
    negative

    If you migrated from the A1111 web UI, the thing you actually miss isn't a sampler or a scheduler - it's your Styles dropdown. That little "styles.csv" of saved positive/negative snippets - cinematic, analog photo, vintage print - that you could slap onto any prompt in one click. ComfyUI has no built-in equivalent, and the usual workaround has been a Styler node with hand-edited JSON where you apply one style per node. Stack four styles and you're looking at a node tree the size of your monitor. This node fixes that. It reads a real CSV of named styles, shows every one of them inside the node, and lets you tick exactly the combos you want.

    This is the CheckList variant. It renders your whole stylesheet as a list of rows right in the node; click a row and it toggles on (highlighted blue), click again and it's off. Everything stays visible, which makes it the better choice when you're A/B-testing combos or chasing down which style is wrecking an image.

    How it works

    Under the hood both nodes in this pack share one class. At execution time it loads the selected CSV, looks up every style you've ticked, and merges their text with whatever prompt you fed in - positives join with the positives, negatives with the negatives, all comma-separated. A trailing comma on your input gets tidied, and the merge happens cleanly so anime, watercolor, at dusk comes out as one readable prompt.

    Selection is stored as a JSON array in a hidden string widget, so it survives saving and reloading the workflow. That's a small thing until you realize it means the toggle state isn't lost between runs.

    Inputs and outputs that matter

    Three things actually matter here:

    • csv_file - a dropdown of every stylesheet it found. "None" means it found nothing (more below). If you've wired A1111 in, you'll see styles.csv (A1111) as a special entry.
    • selected_styles - the JSON array of what's ticked. You almost never touch it by hand; the clicks write it for you.
    • positive / negative - optional STRING inputs for your base prompt before the styles are appended.

    Outputs are positive and negative, both STRING. Wire them straight into your CLIP Text Encode node's prompt inputs and you're done. If you want to layer in more prompt text, merge this node's output with a text-concatenation node first.

    Install

    ComfyUI Manager is the easy path: search for comfyui-a1111-styles. Or clone it by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/azarasi3/comfyui-a1111-styles
    

    Then restart ComfyUI. Dependencies are trivial - it pins aiohttp and PyYAML, which ComfyUI already ships, so you'll almost never see an extra install step. No model files, no heavy deps, pure Python plus a little frontend JS.

    Pointing it at your styles

    You have two ways to feed it a CSV. The neat one reuses your actual A1111 install: add this block to ComfyUI/extra_model_paths.yaml, pointing at your webui folder, and it'll pick up styles.csv from there:

    a111:
        base_path: /StableDiffusion/stable-diffusion-webui/
    

    The DIY one: create a csv/ folder inside the pack (ComfyUI/custom_nodes/comfyui-a1111-styles/csv/), drop any CSV in, and pick it from the dropdown. Either way the file format is the same three columns - name,positive,negative - with a header row that gets skipped. Anything with fewer than three columns is ignored.

    Where people get burned

    • The file list is cached. Add a new CSV and it won't show up until you hit the Refresh button in the node or restart ComfyUI.
    • Silent passthrough. If csv_file is "None" or the file vanished, the node just returns your inputs unchanged. That's by design, but it's easy to think the node is broken when it's really just unconfigured.
    • It's a small, Japanese-authored pack. The README is in Japanese, there's no big community around it, and Nodes 2.0 support is on the roadmap, not shipped. The UI is an HTML overlay on the LiteGraph canvas, so if you're on the new Nodes 2.0 renderer, don't be surprised if the list doesn't draw. The fallback is the "None" passthrough - your workflow still runs, you just lose the nice picker.
    CategoryA1111 Styles

    Inputs (4)

    NameTypeDefaultDescription
    csv_fileCOMBONone1 options: None
    selected_stylesSTRING[]
    positiveoptSTRING
    negativeoptSTRING

    Outputs (2)

    NameTypeDescription
    positiveSTRING
    negativeSTRING