EZ Tag Loader
A clickable tag library that finally beats typing tags
- STRING
- OPT_FILEPATH
- BATCH_SELECTED
If you work on anime-style models - Pony, Illustrious, NoobAI, the whole Danbooru-tag lineage that still runs on comma-separated booru tags - you type the same tags into the same prompt box a thousand times. EZ Tag Loader is the pack's answer: a one-tag-per-line text file becomes a visual picker, and you click tags in instead of typing them. It's the smaller cousin of EZ Prompt Loader (which loads whole prompt files); this one loads individual tag lines. Same UI philosophy, tighter focus.
How it works
Drop a .txt file into data/TAGS/ (subfolders allowed), one tag per line, and it shows up in the tags_file dropdown. The node reads whole lines as tags and lets you select in the same three modes as the rest of the pack - single, multiple (comma-joined), and random with an opt_seed for deterministic picks. filter_text narrows the list, and selections persist across workflow save/load.
Two details that make it genuinely usable:
- add_after - appends a text string after each tag (space-separated). This is the killer feature for character work: pick a character tag file and set
add_afterto a shared trait, and every pick comes out dressed the same way. Or use it to append a quality marker to everything. [empty]- a line literally containing[empty]becomes a blank option, so you can include "no tag" as a deliberate choice instead of just removing the selection. The README spells this out; it's the kind of thing that only makes sense once you've wanted it.
Outputs mirror the other loaders: STRING (the selected tag(s), comma-delimited if multiple), OPT_FILEPATH, and BATCH_SELECTED (a list, which becomes a way to batch-generate across every tag in a file).
The honest framing
Tag loaders are a small niche, and whether this beats your current system depends on how you prompt. If you hand-type tags, the payoff is a searchable, clickable library that can't typo. If you're already using wildcards or a prompt-builder, this is a more visual version of the same idea - the author's stated dislike of wildcard flexibility is the whole pitch. Where it shines is consistency: the same tag file across all your workflows means your character or style tags never drift.
Install
With the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/ez-af/ComfyUI-EZ-AF-Nodes.git
restart, or ComfyUI Manager → search ez-af. No models, deps are just aiohttp/Pillow. One warning: empty lines in the tag file are ignored by design, so don't try to create a "nothing" option with a blank line - that's exactly what [empty] is for. And like all the loaders, new tag files only appear after a restart, since the dropdown is scanned when ComfyUI loads.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| tags_file | COMBO | Text file to search for tags | |
| selection_mode | COMBO | single | - single: Allows selection of one item at a time. - multiple: Allows selection of multiple items. Output will be comma-separated. - random: Allows selection of multiple items. Randomly outputs one of the selected items on each prompt queue. Will select from all visible (filtered) items if none or single item is selected. Uses seed if opt_seed is connected. Always re-executes node if opt_seed is not connected |
| opt_seedopt | INT | 00–18446744073709550000 | Control SEED, used only in 'random' selection mode. If not connected, always re-executes node on prompt |
| filter_textopt | STRING | Filter items based on a text string | |
| add_afteropt | STRING | Add text string after each tag (space-separated) | |
| selected_tagsopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | Selected tag(s). Delimited by comma if multiple |
| OPT_FILEPATH | STRING | Path to currently selected text file containing tags. |
| BATCH_SELECTED | STRING | List of all selected items. Will output all visible (filtered) items if none or single item is selected. |