Nodes/ComfyUI_EmbeddingToolkit/Save A1111-style Weighted Embeddings
ComfyUI Node

Save A1111-style Weighted Embeddings

The same weighted-embedding trick, but with A1111-style scaling

By silveroxides·Created about a year ago·Updated 4 months ago· 11
Save A1111-style Weighted Embeddings
  • clip
    text
    slice_bos_eosfalse
    filename_prefixa1111_weighted_embed

    If you've read the article on Save Weighted Embeddings, this is the same node with one line of math changed. If you haven't: both freeze a prompt - including its (word:1.3) weights, which Flux/Qwen/Mistral tokenizers normally throw away - into a reusable embedding file. The difference is how the weight gets applied, and it matters for one specific reason: compatibility.

    ComfyUI-style vs A1111-style weighting

    • Save Weighted Embeddings interpolates the token vector toward the empty/pad embedding: (embedding − empty) × weight + empty. Gentle, saturating, and the behavior ComfyUI itself uses.
    • Save A1111-style Weighted Embeddings just scales the vector: embedding × weight. Harsher - a 1.4 weight pushes the vector 40% further in the same direction, and at extreme weights things can blow out.

    Why would you want the harsher one? Because it's what the A1111 ecosystem expects. If you've ever loaded a .pt or .safetensors embedding that behaves like the volume knob is stuck on eleven, that's the difference. A1111-style weighting is the convention baked into years of existing embeddings and the people who build for them. So this node exists for when you want your frozen weighted prompt to behave like a traditional embedding: predictable in A1111-style workflows, and not dependent on the empty-embedding interpolation the other node uses.

    Honestly, for pure ComfyUI use you'll usually want the interpolation version - it's less prone to overshoot and blends into prompts more cleanly. Reach for this one when you're producing a file to share, to drop into a workflow written around A1111 conventions, or when the interpolation path can't find a pad token for your encoder and you need a fallback.

    Inputs and output

    Identical shape to the rest of the pack's save nodes:

    • clip - your CLIP; the node discovers and processes each sub-encoder (clip_l, clip_g, t5xxl, qwen3_*, mistral3_*, …) present on it.
    • text - the weighted prompt to freeze.
    • slice_bos_eos (default off) - strips BOS/EOS from clip_l/clip_g and EOS from T5 parts when on.
    • filename_prefix (default a1111_weighted_embed) - saves as a1111_weighted_embed_00001.safetensors in ComfyUI/models/embeddings/, auto-incremented.

    No output ports; the file is the output. Reference it in any text encoder as embedding:a1111_weighted_embed_00001.

    Installing and gotchas

    Part of silveroxides/ComfyUI_EmbeddingToolkit - no dependencies, no model downloads. Via ComfyUI Manager (search "ComfyUI_EmbeddingToolkit") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/silveroxides/ComfyUI_EmbeddingToolkit
    

    Then restart. The same caveats as every embedding apply: the file is locked to the encoder it was made on, and ComfyUI won't warn you when it can't apply an incompatible one. And per the pack README, uploading these to CivitAI under Early Access is called out as deceptive - free uploads are fine.

    CategoryEmbeddingToolkit

    Inputs (4)

    NameTypeDefaultDescription
    clipCLIP
    textSTRING
    slice_bos_eosBOOLEANfalse
    filename_prefixSTRINGa1111_weighted_embed

    Outputs (0)

    No outputs