Nodes/WarpPipe Nodes/πŸŒ€ Save Image (Civitai)
ComfyUI Node

πŸŒ€ Save Image (Civitai)

Your Civitai uploads lose the model credit β€” this save node fixes it

By gregory-richardΒ·Created 11 months agoΒ·Updated a day agoΒ· 0
πŸŒ€ Save Image (Civitai)
  • images
  • warp
    β—„filename_prefixWarpPipeβ–Ί
    β—„embed_metadatatrueβ–Ί
    β—„embed_workflowtrueβ–Ί
    β—„file_formatpngβ–Ί
    β—„previewtrueβ–Ί

    You post a ComfyUI image to Civitai and the upload shows no prompt, no settings, and never links the checkpoint or LoRAs that actually made it. That isn't your workflow being broken - it's the default Save Image node. ComfyUI writes its graph into PNG text chunks in a format ComfyUI understands and Civitai's uploader does not parse. The community has been writing "stop using the default save node if you post to Civitai" articles about this exact gap for years.

    The fix here is simple and worth understanding: Civitai identifies a checkpoint or LoRA by a hash of the file, not its name, and it reads those hashes out of a flat, A1111-style parameters string. πŸŒ€ Save Image (Civitai) from the WarpPipe pack is a drop-in replacement that writes both worlds into one file - your full ComfyUI workflow, so dragging the image back onto the canvas rebuilds the whole graph, plus that A1111 parameters block with the resource hashes Civitai links.

    How it works

    Civitai's matching convention is AutoV2 - the first ten hex characters of a file's SHA256. The node works out what you used by walking the graph backwards from the image being saved, keeping only nodes that actually fed it. A branch behind a switch that never ran isn't credited, and with several checkpoints upstream the nearest loader wins.

    It recognizes loaders by the inputs they carry (ckpt_name, unet_name) rather than by class name, so checkpoint, diffusion and GGUF loaders from any pack are covered. LoRAs are found in ComfyUI's own loaders, in numbered stacker slots (the rgthree-style format), and as <lora:...> tags inside any text widget - including this pack's Prompt + LoRAs node. A slot switched off or a tag behind a // is skipped: it never loaded.

    Where does the hash come from? A .civitai.info sidecar if one sits next to the model - Civitai's own recorded hash for that exact file. Otherwise the file is hashed once and the result cached by path, size and mtime, so a 6 GB checkpoint isn't re-read on every save. A LoRA the workflow names but which isn't on disk is skipped and logged, never credited.

    The inputs that matter

    There are no outputs - it's a terminal node. Of the required inputs, three do the interesting work:

    • filename_prefix - a template that takes %date:yy-MM-dd hh-mm-ss% and ComfyUI's %width%/%height%; a slash makes a subfolder, so shots/%date:yyyy-MM-dd%/img files output by day.
    • embed_metadata ("generation info") - writes the parameters block that gets your resources credited. This is the whole point.
    • embed_workflow - embeds your complete node graph. Nice for round-tripping, but read the fine print: it hands your entire pipeline, file paths included, to anyone you send the file to. It's PNG-only.

    file_format picks png (lossless, holds the workflow) or jpeg (much smaller; the generation info goes into EXIF the same way A1111 writes it, which Civitai also reads - but the workflow has nowhere to live, and the node tells you so instead of silently dropping it). preview merely controls whether the image shows on the node.

    Wiring it

    Put it where SaveImage went: images from your VAE Decode. The optional warp input hides the honest caveat. The node finds checkpoints and LoRAs from the graph on its own, but the prompt, seed, steps, CFG and sampler are only recorded if they travel in a warp - the pack's "one wire carries a generation" idea. Run the prompt and sampling parameters through a πŸŒ€ Warp node and hand that link here, and the metadata is complete. Skip the warp and you still get resource credit, just not the generation settings.

    Installing it

    Python 3.9+, and genuinely no third-party dependencies - its requirements file is a comment. Install from ComfyUI Manager (search "WarpPipe Nodes"), the registry:

    comfy node install warppipe
    

    or by hand, then restart ComfyUI:

    cd ComfyUI/custom_nodes
    git clone https://github.com/gregory-richard/ComfyUI-WarpPipe.git
    

    The same author's companion Civitai Updater writes the .civitai.info sidecars and is worth running alongside - it's what gives the pack exact hashes and real model titles instead of filename guesses.

    Gotchas worth knowing

    One privacy trade-off, one expectation to set. With embed_workflow on (the default), your image is a shareable copy of your private pipeline - turn it off before posting if that bothers you, and keep the generation info on; that's exactly what the two toggles are for. And note the pack is new: v4.0.0 shipped September 2026, so there's no trail of community war stories yet, and if you skip warps you'll see the missing Steps: line - the warp gap above, not a bug. Never upload to Civitai? The stock node is fine. Post regularly, though, and this is the one that answers "what did you use?" for you.

    CategoryCustom/WarpPipe Nodes

    Inputs (7)

    NameTypeDefaultDescription
    filename_prefixSTRINGWarpPipeSupports %date:yy-MM-dd hh-mm-ss% and ComfyUI's own %width%/%height%. A slash makes a subfolder.
    embed_metadataBOOLEANtrueThe prompt, seed, sampler, model and LoRA hashes, written the way Civitai and A1111 read them.
    embed_workflowBOOLEANtrueThe whole ComfyUI graph, so the image can be dragged back in to rebuild it. Also reveals it to anyone you send the file to. PNG only - JPEG has nowhere to put it.
    file_formatCOMBOpngPNG is lossless and holds the workflow. JPEG is much smaller and keeps the generation info in EXIF, which Civitai reads, but cannot carry the workflow.
    previewBOOLEANtrueWhether the saved images appear on the node.
    imagesoptIMAGEβ€”
    warpoptWARPPIPEβ€”

    Outputs (0)

    No outputs