Style Grid
A visual card browser for your prompt styles, finally in ComfyUI
- positive
- negative
If you came over from A1111 or Forge, you know the problem: your styles live in a flat dropdown you can't search, can't preview, and never actually browse. Style Grid fixes exactly that - it's a ComfyUI port of the author's own WebUI extension (sd-webui-style-organizer) that swaps the dropdown for a searchable card grid with categories, thumbnails, multi-select, favorites, and presets. The node itself is tiny - three text inputs, two string outputs - but the real product is the grid UI that opens when you hit Browse Styles. The author polled r/StableDiffusion in spring 2026 about whether a port was worth building, got a lukewarm-but-real yes, and went with the "dedicated node with outputs" option rather than a sidebar or hotkey hack. This is that node.
Why you'd reach for it
Because you collect style packs. Style Grid speaks the same CSV format the WebUI extension did - rows of name, prompt, negative_prompt, description, category - and the full library (670 styles, 29 categories on the CivitAI SFW Prompt Pack) is distributed as plain CSVs you drop into data/. If you build prompts for tag-stack models in the SD1.5/Illustrious/Pony lineage, you already know the drill: a BASE quality block, plus lighting, plus a style, each as a comma-separated chunk. A grid you can search and click is a much better way to manage that than a wall of text. There are other style-picker nodes out there (the WebUI-adjacent e2go-comfyui-nodes came up in the port discussion), but Style Grid's bet is that visual cards with categories beat a list picker - and it's the only one that reads the existing WebUI pack CSVs as-is.
How it works
On load, the node reads every CSV in the extension's data/, data/imports/, and samples/ folders and groups styles by category. It doesn't generate anything itself - it's a string assembler. Two things it does that matter:
- Wildcards. Drop
{sg:CategoryName}into your prompt and each run picks a random style from that category - the positive side pulls the style'sprompt, the negative side pulls itsnegative_prompt, never the wrong one. A right-click on any category header inserts the token for you. The node'sIS_CHANGEDreturns NaN when a{sg:...}token is present, which forces ComfyUI to re-roll the pick on every run instead of caching the result. - Dedup. Duplicate tags are collapsed (a weighted
(tag:1.3)and a baretagshare one identity), so stacking styles doesn't smear the same tag through your prompt three times.
The inputs and outputs that matter
Three inputs, all STRING:
- text - your positive prompt, the base you're stacking styles onto.
- negative_text - its negative-prompt counterpart.
- active_source - a source filter; when set, only styles from that one CSV pack are used. Leave it empty to use everything.
Outputs are positive and negative, both STRING, and they wire straight into the text inputs of your CLIP Text Encode nodes - right-click those and pick "Convert text to input" if the socket isn't showing.
Install
Via ComfyUI Manager: search "Style Grid" in Custom Nodes Manager and install, then restart. Or the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/KazeKaze93/sd-comfyui-style-organizer
Restart ComfyUI and it shows up as Style Grid. Good news: zero Python dependencies (empty requirements.txt) and no model downloads - the only "heavy" part is the style pack CSVs you choose to add. It ships with a small read-only demo.csv so the grid isn't empty on first boot.
Common issues
- BREAK doesn't work. Style Grid won't insert or manage
BREAKchunk separators, and vanilla CLIP Text Encode treatsBREAKas a literal word. If your packs rely on it, use a BREAK-aware encoder likeCLIPTextEncodeBREAK. - A stale
{sg:...}stays literal. If the category doesn't exist (typo, or filtered out byactive_source), the token is left in your prompt as raw text - there's no silent fallback. - The demo pack is read-only. Edit, Move, and Delete are blocked on
samples/styles by design. Use Duplicate to get your own editable copy indata/. - Backup is manual. Your styles live in
custom_nodes/sd-comfyui-style-organizer/data/. The toolbar diskette writes a zip snapshot (and auto-prunes past 20); it doesn't run on its own.
For a brand-new node it's refreshingly complete - searchable, import/export, wildcard re-rolls. If you've been eyeing that 670-style pack from WebUI days, this is the cleanest way to actually use it in ComfyUI.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| negative_text | STRING | — | |
| active_source | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | STRING | — |
| negative | STRING | — |