ComfyUI Node

EZ Tag Loader

A clickable tag library that finally beats typing tags

By ez-af·Created 2 years ago·Updated 3 months ago· 28
EZ Tag Loader
    • STRING
    • OPT_FILEPATH
    • BATCH_SELECTED
    tags_file
    selection_modesingle
    opt_seed0
    filter_text
    add_after
    selected_tags

    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_after to 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.

    CategoryEZ NODES

    Inputs (6)

    NameTypeDefaultDescription
    tags_fileCOMBOText file to search for tags
    selection_modeCOMBOsingle- 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_seedoptINT00–18446744073709550000Control SEED, used only in 'random' selection mode. If not connected, always re-executes node on prompt
    filter_textoptSTRINGFilter items based on a text string
    add_afteroptSTRINGAdd text string after each tag (space-separated)
    selected_tagsoptSTRING

    Outputs (3)

    NameTypeDescription
    STRINGSTRINGSelected tag(s). Delimited by comma if multiple
    OPT_FILEPATHSTRINGPath to currently selected text file containing tags.
    BATCH_SELECTEDSTRINGList of all selected items. Will output all visible (filtered) items if none or single item is selected.