Embedding Helper
This node doesn't load anything — and that's the point
- embedding_ref
TMMEmbeddingHelper is the rare node that admits it does nothing to your image. It doesn't touch a latent, it doesn't run a model, it doesn't even load the embedding file. It's a text-formatting node, and once you've fumbled an embedding: token once, you'll get why it exists.
What it does
An embedding (textual inversion) is a tiny file - tens of kilobytes, not gigabytes - that teaches a text encoder a new "word." To use one in ComfyUI you type that word into a prompt with a special prefix, like this:
embedding:easynegative
Notice what's not there: no file extension, no path, no folder. The token is just the filename stem wrapped in embedding:. Get that wrong - embedding:EasyNegative.safetensors, or a typo in the stem - and nothing errors, the word just silently doesn't apply. That's the failure mode this node kills.
embedding_name(dropdown) - every file inComfyUI/models/embeddings.embedding_ref(STRING) - the correctly formattedembedding:<stem>token, ready to paste or wire into your prompt.
The mechanism is dead simple, straight from the source: it takes the selected filename, strips the extension, and returns embedding: plus the stem. That's it. No magic, no state.
How to use the output
You've got two options. Wire the embedding_ref string into a concatenation node (or any string-join) that feeds your positive prompt, so the token rides along as data. Or just read the value off the widget and type it where you need it - the node's real value is showing you the exact correct spelling before you commit it.
The honest caveats
- Embeddings are mostly a legacy format now. They're the SD 1.5/SDXL-era tool for small changes - a negative-embedding stand-in for a stack of negative keywords, or a single-token concept. LoRAs swallowed the format whole; a mere handful of textual inversions were published to CivitAI across all of 2026. So don't expect a thriving library.
- The token only fires if the checkpoint's text encoder matches the embedding. An SDXL-trained embedding does nothing on a Flux checkpoint - there's no CLIP-G vector for Qwen or T5 to bind to. If you add the token and the output doesn't change, that's almost always it, and this node won't warn you. The classic sanity test: rename the file to something meaningless and regenerate on a fixed seed. Same image = the token was being read as plain text.
The dashboard keeps a library of these tiny files and this node is its "how do I type this thing" answer. It's the plumbing that saves you a google when the spelling genuinely matters.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| embedding_name | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| embedding_ref | STRING | — |