Prompt Tag Editor 🏷️
Stop squinting at that wall of commas — edit your prompt as tags
- text
If you prompt in tags - and if you run anything on the SDXL lineage (Illustrious, NoobAI, Pony, Anima), you probably do - your positive prompt is a comma-separated string that can get genuinely unreadable. Forty tokens, weights scattered through it, a LoRA or two. Finding the one you want to bump is a scan-and-click exercise inside a textarea. Prompt Tag Editor 🏷️ is the fix for exactly that problem: it gives you a dedicated node whose text field turns every comma-separated tag into a little chip you can edit, weight, drag around, or delete, with the raw prompt underneath staying in sync both ways.
The name undersells the mechanism, and it's the interesting part. The Python node is a pure pass-through - run() just returns the text you put in. All the actual work is a frontend extension (js/) that renders a chip area under the text widget of this node only. It doesn't touch CLIP Text Encode or Note text boxes, which is deliberate: the README is explicit that existing nodes are unaffected. You get the tag UI without ComfyUI's text widgets getting rebuilt under you, which is the usual way this kind of frontend hack breaks other workflows.
The tokenizer is where you'd expect a tool like this to betray you, and it mostly doesn't. Instead of a naive split on commas - which would shred (a, b:1.2) and <lora:name:1.0> - it tracks bracket depth and escapes, splitting only on commas and newlines at depth zero. So weighted tags, LoRAs, BREAK, #comments, and escaped parentheses all survive as intact chips. Unedited chips keep their raw text verbatim, so round-tripping is lossless. Editing a chip rewrites only that token.
The one input, the one output
There's no parameter zoo here, which is refreshing:
text(STRING, multiline) - your prompt. Type or paste it and the chips appear below.- Output
text(STRING) - the same string, whatever state you've edited it into.
Wire the output into a CLIP Text Encode text input (right-click the text field → Convert text to input, or drop a PrimitiveString on it - the standard trick from the node-plumbing playbook) or any other text input. It's a value node, not an output node; it doesn't generate anything itself.
What the chips actually do
Double-click a chip to edit it inline. The +/− buttons step weight in 0.05 increments using (tag:1.2) syntax, snapping back to plain text as it approaches 1.0 and clamping to 0–5. It also understands implicit emphasis - ((word)) reads as 1.1², [word] as 1/1.1 - so existing prompts keep their meaning. Drag to reorder, × to delete. The 🔄 button translates: Japanese tags get replaced with lowercased English in the text itself; English tags get a Japanese gloss shown under the chip, non-destructively. The whole thing is clearly built for Japanese-to-English workflows, and it shows in the button tooltips.
Installing
ComfyUI Manager, search "ComfyUI-PromptTagEditor" and install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/4thCafe/ComfyUI-PromptTagEditor
Restart ComfyUI. No model files to download - this is pure UI. One real gotcha: the README claims "no extra Python dependencies," but the shipped requirements.txt lists deep-translator and argostranslate, both only used by the translate button. The chip editor runs fine without them, but if you cloned manually and skipped pip install -r requirements.txt, translation silently fails. Manager installs requirements automatically, so let it.
Where people get burned: the tokenizer splits on commas, so natural-language prompts (Flux-style sentences) become one-chip-per-fragment, which is mostly noise. And don't expect community help - this is a niche Japanese-authored pack with essentially no public footprint yet (0 impressions on its comfy.icu page). For tag-driven SDXL workflows it's a genuinely nice quality-of-life tool; for sentence prompter, the value is thin.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |