Embedding Downloader
Bulk-fetch metadata and previews for your textual inversions
- status
Worth saying up front so you calibrate your expectations correctly: embeddings (textual inversions) are a niche, mostly legacy corner of the ecosystem in 2026. They peaked in the SD 1.5/SDXL era - negative-embedding packs like bad-hands-5 and EasyNegative were once nearly universal - and current architectures with LLM-scale text encoders (Qwen3, T5) mostly can't use CLIP-trained embeddings at all; the format's active use has shrunk to a small, specific corner of the ecosystem, largely on Illustrious and SDXL-derived checkpoints. If you're maintaining a folder of older embeddings, though, this node solves a real problem: it batch-fetches metadata and preview examples for every embedding it finds, instead of you visiting a model page one file at a time.
What it does
Point it at subdirectory (default /, the root of wherever your embeddings live) and it scans for embedding files, going into subfolders too if recursive (default on) is left enabled. For each one it finds, it reaches out to a model repository - the api_key field's tooltip says "API key for accessing the model repository," which reads as CivitAI-shaped given the accompanying nsfw_level filter - and pulls down metadata plus example images.
nsfw_level (default "All") filters which examples get pulled based on their content rating. max_examples (default 0, range 0–100) caps how many example images it grabs per embedding - worth setting deliberately if you have a large folder and don't want to pull dozens of preview images per file. threads (default 4, range 1–32) controls how many of these lookups run in parallel; raise it if you have a big folder and a fast connection, lower it if you're getting rate-limited. The single output is status (a string report of what happened), and this is a save-as-you-go node (is_output_node: true) - it writes files as it runs rather than passing data downstream for another node to use.
Installing it
ComfyUI Manager: search Model Utility Toolkit, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-ModelUtils
Restart ComfyUI. You'll need an API key for whatever model repository this points at (get one from that site's account settings) - without it, expect the node to fail or return heavily rate-limited results, since the api_key field exists precisely because the repository gates or throttles anonymous access.
Where people get burned
Running this against a large, deeply nested embeddings folder with recursive on, max_examples left generous, and threads cranked high is the fastest way to hit a rate limit or a slow, sprawling run - start conservative (a small max_examples, moderate threads) on a subdirectory you can watch, confirm it behaves the way you expect, then scale up.
The other trap is assuming this will find metadata for everything. Plenty of embeddings - especially older, hand-shared SD 1.5 ones from years ago - were never uploaded anywhere with structured metadata attached, or the file you have locally doesn't match anything the repository can identify by hash or name. A status output reporting "not found" for a chunk of your folder isn't the node failing, it's an accurate report that those files simply don't have a matching entry to fetch. And given how far the embedding format's real-world usage has fallen since its 2023 peak, it's worth periodically checking whether the embeddings you're organizing are actually still doing anything in your current workflows - an embedding trained against an encoder your checkpoint no longer uses loads silently and does nothing, with no error to tell you so.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| subdirectory | COMBO | / | 1 options: / |
| recursive | BOOLEAN | true | Whether to scan subdirectories recursively. |
| nsfw_level | COMBO | All | Filter models based on NSFW level in metadata. |
| max_examples | INT | 00–100 | Maximum number of examples to process. |
| threads | INT | 41–32 | Number of threads to use for processing. |
| api_key | STRING | API key for accessing the model repository. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |