Embedding Picker
Prepend any installed embedding from a dropdown
- text
You know the failure mode: you have forty .pt and .safetensors files in your embeddings folder, you need bad-hands-5, and what you actually type into CLIP Text Encode is bad-hands-4 or bad_hands-5 or something that isn't a file at all. Nothing errors. ComfyUI just shrugs, treats your typo as ordinary prompt words, and you generate four broken images before you notice. Embedding Picker exists to kill that whole category of self-sabotage: instead of typing a name, you pick it from a dropdown that's populated from the files you actually have installed.
It's a tiny node from the utils category - a single string output that plugs into your prompt. That's the entire job, and it does it with zero dependencies, zero model downloads, zero API calls. The whole pack is one Python file plus a bit of front-end glue.
How it works
Under the hood the node is comically simple, and that's a good thing. Its embedding input is a COMBO widget built from folder_paths.get_filename_list("embeddings") - so the dropdown is literally your embeddings folder. When it runs, it takes the selected file, strips the extension, and emits a prompt string like:
embedding:EasyNegative.pt, your actual prompt here
The two settings that actually matter are emphasis and append:
emphasis(float, default 1.0, range 0–3) - the embedding's weight. At 1.0 it emits plainembedding:name. At anything else it wraps it in ComfyUI's weighted syntax:(embedding:name:1.25). The clever bit: drop it below 0.05 and the node just passes your text through untouched - a built-in "disable this embedding" switch without deleting the node.append(boolean, default false) - where the embedding lands.falseputs it at the start of the prompt,trueat the end.
The text input is your existing prompt, multiline, and the single text output wires straight into a CLIP Text Encode. In other words: this node is a text-assembly utility, not a sampler or a model - there's nothing to get wrong beyond the three settings above.
The one feature worth the install
Right-click a CLIP Text Encode node and you'll see a new top menu option, Prepend Embedding Picker. It does exactly what it says: creates the picker to the left, copies your current prompt into it, converts the CLIP node's text widget into an input, and connects them. You never re-type anything. The same option exists on the Embedding Picker node itself, which is how you chain several embeddings in sequence - pick one, right-click, prepend another.
Installation
Via ComfyUI Manager, search "Embedding Picker" (publisher tropfchen), or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Tropfchen/ComfyUI-Embedding_Picker.git
Restart ComfyUI, done. There is no requirements.txt and the pyproject.toml declares no dependencies - the pack installs a small front-end extension in js/quickNodes.js and nothing else. The only prerequisite is that the embeddings you want to pick from already sit in ComfyUI/models/embeddings; if the dropdown looks empty, that folder is the thing to check.
Where people get burned
Two things. First, the extension only fires after you restart with the node loaded and on a fresh browser tab - if the right-click menu doesn't show Prepend Embedding Picker, hard-refresh. Second, and this is the bigger one, embeddings as a technique have quietly died on 2026 models. An embedding is a vector pinned to one text encoder's dimensionality; SDXL-lineage (Illustrious, Pony) embeddings work on CLIP, but on Qwen- or Mistral-encoded models there's nothing for them to bind to, and ComfyUI silently ignores an embedding it can't apply - the filename just reads as plain text. So on a modern encoder, this node becomes a glorified text-prefix gadget, and that's fine, just know what you're getting. On SD 1.5 and SDXL-lineage workflows it remains genuinely useful - arguably the best small quality-of-life install there is. And unlike the old A1111 era, the KB data shows negative embeddings like EasyNegative are basically 2023 relics; if all you use one for is "bad hands," a negative LoRA fails louder and works harder.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| embedding | COMBO | 0 options: | |
| emphasis | FLOAT | 1.000–3 | — |
| append | BOOLEAN | false | — |
| text | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |