Nodes/Endless ️🌊✨ Nodes/β™ΎοΈπŸŒŠβœ¨ Image Saver with JSON
ComfyUI Node

β™ΎοΈπŸŒŠβœ¨ Image Saver with JSON

ESS Image Saver with JSON β€” PNG and its metadata, in two different folders if you want

By tusharbhuttΒ·Created 3 years agoΒ·Updated about a year agoΒ· 69
β™ΎοΈπŸŒŠβœ¨ Image Saver with JSON
  • images
    β—„filename_prefixComfyUIβ–Ί
    β—„delimiter_β–Ί
    β—„filename_number_padding4β–Ί
    β—„filename_number_startβ–Ύβ–Ί
    β—„image_folderβ€”β–Ί
    β—„json_folderβ€”β–Ί
    β—„save_json_metadatafalseβ–Ί

    This was the node the pack author built the whole pack for, and it shows: the β™ΎοΈπŸŒŠβœ¨ Image Saver with JSON is a "save my PNG, and also save the prompt+metadata as a human-readable JSON - and oh, put the JSON in a different folder if I say so" output node. ComfyUI's built-in saver handles the PNG but not the separate JSON; WAS-style savers won't let you split image and metadata across two locations. This one does, which is genuinely the reason it exists.

    The workflow where this shines: you're generating thousands of images for a dataset or a gallery, and you want the images in one directory and the machine-readable metadata in another - or you just hate the timestamp-skew problem where a text file saved by a different node lands two seconds off from its image. One node, one run, both files written together.

    How it works

    Inputs that matter:

    • images - IMAGE, what you're saving (PNG in this version).
    • filename_prefix - STRING, default ComfyUI. The base name.
    • delimiter - STRING, default _. What separates the prefix from the number.
    • filename_number_padding - INT, 1–9, default 4. Zero-padding on the counter, so you get ComfyUI_0001.png.
    • filename_number_start - an enum, false/true, for whether the counter starts the name.
    • image_folder and json_folder - STRING. Leave empty for the default output dir; fill in to send the two file types to different folders. Empty json_folder means the JSON lands next to the image.
    • save_json_metadata - BOOLEAN, default false. Whether to embed the prompt JSON into the PNG's metadata as well.

    No outputs - it's an output node; its job is writing files. It supports Python strftime placeholders in names and folder paths, auto-increments the counter so it never overwrites an existing file, and embeds the workflow's prompt and extra_pnginfo into both the PNG metadata and the sidecar JSON.

    The honest caveat

    Two things to know. First, this exact schema is the older saver: it saves PNG only, and the current Endless-Nodes saver is a much richer animal (three formats, prompt-based filename words, timestamps, UNC paths - the README describes a very different node). Second, it's a legacy ESS class: the June 2025 cleanup removed it, so a fresh git clone https://github.com/tusharbhutt/Endless-Nodes won't ship it. Old workflows referencing it may show a missing-node error.

    Install is the usual Manager/clone dance (search "Endless" in Manager, or clone into custom_nodes and restart). If you're starting fresh and want the split-folder JSON behavior, the pack's current saver keeps that core idea and adds a lot - that's the one to use today.

    CategoryEndless 🌊✨/IO

    Inputs (8)

    NameTypeDefaultDescription
    imagesIMAGEβ€”
    filename_prefixSTRINGComfyUIβ€”
    delimiterSTRING_β€”
    filename_number_paddingINT41–9β€”
    filename_number_startCOMBO2 options: false, true
    image_folderSTRINGβ€”
    json_folderSTRINGβ€”
    save_json_metadataBOOLEANfalseβ€”

    Outputs (0)

    No outputs