If you have ever lost a ComfyUI graph after a browser refresh, or sent someone a PNG that loaded as “no workflow found”, this guide is for you. To save a workflow in ComfyUI you press Ctrl+S, but there are actually four different ways to keep a workflow (Save, Export, Export (API) and the metadata inside every image), and each one is meant for a different job. Below I explain all of them for the current ComfyUI (v0.44.0, released 4 November 2026), show exactly where the files end up on Windows, Linux, the portable build and the Desktop app, and give the steps to share a workflow so it actually opens on someone else’s PC.
- Save (Ctrl+S) stores the workflow inside ComfyUI, in
ComfyUI/user/default/workflows/. Open it again from the Workflows sidebar. - Export downloads a
.jsonfile to your browser’s download folder. Use it to back up or share. - Export (API) downloads the smaller API-format JSON. Use it with
POST /prompt, scripts and bots, not for editing. - Every image made by Save Image carries the full workflow in its PNG metadata. Drag the PNG onto the canvas to load it, unless you started ComfyUI with
--disable-metadata. - Discord, X, Reddit and most chat apps strip PNG metadata. Share the
.json(or a zipped PNG) instead.
The Four Ways to Keep a ComfyUI Workflow
A ComfyUI workflow is just a JSON document that describes every node, its widget values and the links between nodes. What changes between the options below is which JSON you get and where it goes.
| Method | How | What you get | Where it goes | Best for |
|---|---|---|---|---|
| Save / Save As | Ctrl+S, or menu: File > Save | Full UI-format JSON (layout, groups, colours, notes) | ComfyUI/user/default/workflows/ (local) or your account (Comfy Cloud) |
Day-to-day work |
| Export | File > Export | The same UI-format JSON as a download | Your browser’s Downloads folder | Backups, sharing, moving to another PC |
| Export (API) | File > Export (API) (shown as “Export Workflow (API)” in the docs) | API-format JSON: node IDs, class types and inputs only | Downloads folder | Scripts, /prompt, bots, cloud APIs |
| Image metadata | Automatic with Save Image | Both the UI workflow and the API prompt inside the PNG | ComfyUI/output/ |
Remembering exactly how an image was made |
The official ComfyUI docs describe the difference this way: the save format is what the frontend needs to reopen and edit a graph, with positions, sizes, colours and groups, while the API format keeps only the widget values and links and drops all the layout data. That is why an API file is much smaller and why it looks messy if you load it back into the editor.
How to Save a Workflow (Ctrl+S)
- Build or open your workflow on the canvas.
- Press
Ctrl+S(Cmd+Son a Mac), or open the menu with the Comfy logo in the top-left corner and choose File > Save. - The first time, ComfyUI asks for a name. Type something descriptive such as
wan22-i2v-16gb-4step. The.jsonextension is added for you. - To keep the original and make a variation, use File > Save As and give it a new name.
Each open workflow gets its own tab along the top of the canvas. A dot or asterisk on a tab means it has unsaved changes. If you close the browser, the current graph is normally restored from the browser’s local storage on the next visit, but that copy lives only in that browser profile. Always press Ctrl+S on anything you care about.
You can find every saved workflow in the Workflows panel of the left sidebar (the default shortcut is W). From there you can open, rename, duplicate, delete and bookmark workflows. Bookmarked ones stay pinned at the top, which is handy when you keep a few main graphs, such as your Wan 2.2 4-step setup, and many experiments.
You can change the shortcuts in Settings > Keybinding. Export has no default shortcut, so if you export a lot it is worth assigning one there.
Where ComfyUI Saves Workflows on Disk
Saved workflows are plain .json files inside the ComfyUI user directory. The exact path depends on how you installed ComfyUI:
| Install type | Workflow folder |
|---|---|
| Manual install (git clone), Windows or Linux | ComfyUI/user/default/workflows/ |
| Windows portable build | ComfyUI_windows_portable\ComfyUI\user\default\workflows\ |
| ComfyUI Desktop (Windows/macOS) | <base folder you chose at install>/user/default/workflows/, by default inside Documents\ComfyUI on Windows |
| Custom user folder | Whatever you passed to --user-directory, then default/workflows/ |
| Comfy Cloud | Stored in your Comfy account, not on your PC |
The default part is the user name. If you run ComfyUI with --multi-user, each user gets their own folder next to it. The same user/default/ folder also holds comfy.settings.json (your settings and keybindings) and, in recent versions, saved subgraph blueprints. All launch flags, including --user-directory, are explained in my ComfyUI command line arguments guide.
Because these are normal files, you can copy JSON files straight into the folder and they appear in the Workflows sidebar after a refresh. You can also make sub-folders to keep things tidy, for example workflows/video/ and workflows/image/.
How to Export a Workflow as JSON
Export is the option to use when the file has to leave ComfyUI: a backup, a second PC, a friend, a GitHub repo or a tutorial download.
- Open the workflow tab you want.
- Open the Comfy menu (top-left) and choose File > Export.
- Type a file name when asked. The browser downloads
your-name.jsonto its usual Downloads folder.
The exported file is the full UI format, exactly what Save writes to disk. It includes node positions, groups, notes, reroutes, colours, the values of every widget (prompts, seeds, steps, model file names) and the extra section with canvas zoom and other frontend data. Anyone can load it back and see your graph exactly as you laid it out.
Tip: before exporting a workflow for other people, write a Note node with the model files it needs and where they go. A short note saves a lot of “which VAE?” questions. My ComfyUI model folder cheat sheet lists the right folder for every model type.
Export (API): What It Is and When to Use It
File > Export (API) writes the workflow in the format the ComfyUI server actually executes. According to the official docs, it uses numeric node IDs as keys, keeps the widget values in an inputs object, adds a class_type for each node and writes each link as [source_node_id, output_index]. Everything visual is gone.
A single node in API format looks like this:
"3": {
"inputs": {
"seed": 156680208700286,
"steps": 20,
"cfg": 8,
"sampler_name": "euler",
"scheduler": "normal",
"denoise": 1,
"model": ["4", 0],
"positive": ["6", 0],
"negative": ["7", 0],
"latent_image": ["5", 0]
},
"class_type": "KSampler",
"_meta": { "title": "KSampler" }
}
Use Export (API) when you want to:
- Send the workflow to your own ComfyUI server with
POST /prompt(shown below). - Call the Comfy Cloud API, which also expects API-format workflows.
- Drive ComfyUI from a script, a Discord or Telegram bot, n8n, or another app.
- Change values in code, for example swap the prompt in node
"6"and the seed in node"3"for every request.
Do not use the API format as your only copy. You can load it back into the UI, but the nodes come in without their layout, groups or notes, so keep the normal export as the master file.
In older ComfyUI versions this option was called Save (API Format) and only appeared after you ticked Enable Dev mode Options in the settings. If you follow an old tutorial that mentions dev mode, that is why. In the current frontend, Export (API) is in the File menu by default.
Load a Workflow From a PNG, WebP or Video
The official docs put it simply: the workflow is automatically saved in the metadata of every generated image. The core Save Image node writes two text chunks into each PNG it saves to ComfyUI/output/:
workflow: the full UI-format graph, which is what the editor loads.prompt: the API-format version that was actually executed.
To get the workflow back, drag the PNG from your file manager onto the ComfyUI canvas, or use File > Open and pick the image. ComfyUI reads the metadata and rebuilds the graph with the exact seed, prompt and settings used. The Queue and Assets panels in the sidebar can also reload the workflow of any past result.
Some details worth knowing:
- Preview Image files go to
ComfyUI/temp/and are deleted when ComfyUI restarts. Use Save Image for anything you want to keep. - Animated WebP from the core Save Animated WEBP node also stores the workflow.
- Video: the Video Combine node from ComfyUI-VideoHelperSuite has a
save_metadataoption. With it on, the node saves a PNG of the first frame with the workflow next to the video and also writes the workflow into the video’s metadata, so you can drag either file onto the canvas. For other video nodes, keep a.jsonto be safe. - JPEG files have no workflow unless a custom save node writes one. If you convert a PNG to JPEG or WebP in another app, the workflow is lost.
- Privacy: if you post images and do not want people to see your prompts, start ComfyUI with
--disable-metadata. Nothing is embedded at all with that flag, so keep JSON copies of your workflows.
How to Open or Import a Workflow
There are four ways to open a workflow, and all of them accept UI JSON, API JSON and images with metadata:
- Drag and drop a
.json,.png,.webpor VideoHelperSuite video onto the canvas. - File > Open (or
Ctrl+O) and browse to the file. - Paste: copy the JSON text and press
Ctrl+Von an empty canvas. - Workflows sidebar: anything inside
ComfyUI/user/default/workflows/is listed there.
When the workflow uses nodes you do not have, ComfyUI shows them in red and lists them in a missing-nodes dialog. Open Manager > Install Missing Custom Nodes to install them, then restart. My list of must-have ComfyUI custom nodes covers the packs most shared workflows rely on. When models are missing, ComfyUI also shows a missing-models dialog if the workflow author included download links (more on that next).
How to Share a Workflow So It Works for Others
Most “your workflow does not work” messages come from three things: metadata stripped by a website, missing custom nodes, and missing or renamed model files. This checklist avoids all three.
- Share the JSON, not just a picture. Discord, X, Reddit, WhatsApp and most image hosts re-compress uploads and remove PNG text chunks. If you want to share a PNG, zip it first or upload it somewhere that keeps the original file (GitHub, Hugging Face, Google Drive, Civitai or OpenArt attachments).
- Use core nodes where you can. Every custom node pack is one more install for the other person. If a core node does the same job, swap it in before exporting.
- List the custom node packs with their GitHub links in a Note node, and mention the ComfyUI version you tested with.
- List every model file with its exact file name, its download link and its full folder, for example
ComfyUI/models/diffusion_models/,ComfyUI/models/text_encoders/,ComfyUI/models/vae/orComfyUI/models/loras/. File names matter because loader nodes save only the name, not the path. - Add download links inside the workflow. The ComfyUI frontend reads an optional
modelslist (name, url and directory) stored in a loader node’s properties, and shows a missing-models dialog with download buttons when those files are not found. The official templates use this, so copying a loader from a template keeps the links. - Remove personal data. Check Load Image nodes for private photo names, clear any API keys from partner or third-party nodes, and delete leftover experimental branches.
- Test it on a clean tab. Open the exported file in a new tab, press Queue, and confirm it runs before you post it.
If someone sends you a workflow that will not load at all, read my ComfyUI errors and fixes list. It covers “missing node types”, “value not in list” for model names and the other messages you usually hit with shared graphs.
Run a Saved Workflow Through the API
Once you have an API-format file, you can run it without opening the browser. ComfyUI’s built-in server listens on http://127.0.0.1:8188 by default. The official API examples send a JSON body with a prompt key (your API workflow) and an optional client_id to POST /prompt, then read results from GET /history/{prompt_id} and download images with GET /view.
A quick test with curl, after wrapping the exported file in a prompt key:
# workflow_api.json is the file from File > Export (API)
python -c "import json;print(json.dumps({'prompt':json.load(open('workflow_api.json'))}))" > body.json
curl -X POST http://127.0.0.1:8188/prompt -H "Content-Type: application/json" -d @body.json
The response contains a prompt_id. A minimal Python version that also changes the prompt text and seed before sending looks like this:
import json, random, urllib.request
wf = json.load(open("workflow_api.json"))
wf["6"]["inputs"]["text"] = "a lighthouse at sunset, film photo" # your CLIP Text Encode node id
wf["3"]["inputs"]["seed"] = random.randint(0, 2**32) # your KSampler node id
body = json.dumps({"prompt": wf}).encode()
req = urllib.request.Request("http://127.0.0.1:8188/prompt", data=body,
headers={"Content-Type": "application/json"})
print(json.loads(urllib.request.urlopen(req).read())["prompt_id"])
Node IDs differ in every workflow, so open your API file and look up the IDs of the nodes you want to change. For progress updates and finished images in real time, connect to the /ws?clientId=... WebSocket, as shown in the official examples. If you want to reach the server from another device, start ComfyUI with --listen and only do that on a trusted network.
Templates, Subgraphs and Custom Node Example Workflows
- Templates: the template browser in the menu (Workflow > Browse Templates in most builds) opens official workflows that use only core nodes and offer to download any missing models. Recent releases keep adding them, for example Qwen Image 2.1 Turbo, LTX-2.5 and Fish Audio Drama 3 templates in v0.40.0 and FLUX.3 Image Klein templates in v0.41.0. When you open a template and press Save, you get your own editable copy.
- Custom node examples: many node packs ship sample workflows in
ComfyUI/custom_nodes/<pack-name>/example_workflows/. ComfyUI lists those in the template browser under the pack’s name, which is the easiest place to find a working starter graph for a new node. - Subgraphs: you can collapse a group of nodes into one subgraph node and reuse it. Subgraphs are saved inside the workflow JSON, so exporting a workflow also exports its subgraphs. Subgraphs you publish as reusable blueprints are kept in your user folder, next to your workflows.
Back Up and Version Your Workflows
Workflow files are tiny (usually 10-200 KB) and plain text, so they are easy to protect:
- Copy the folder. Back up
ComfyUI/user/default/before every big ComfyUI or frontend update. It holds your workflows, settings and keybindings. - Use git. Run
git initinsideComfyUI/user/default/workflows/and commit after each change you like. Because the files are JSON,git diffshows exactly which value changed. - Sync it. Point a OneDrive, Dropbox or Syncthing folder at it, or start ComfyUI with
--user-directoryset to a synced folder, so all your PCs share the same workflows. - Name with intent. Put the model, task and VRAM in the name (
qwen-image-2.1-edit-16gb.json). Six months later you will know what each file is for.
Common Problems and Fixes
| Problem | Cause | Fix |
|---|---|---|
| “Unable to find workflow” when dropping a PNG | The image was re-compressed by a website, converted to JPEG, or made with --disable-metadata |
Ask for the original file or the JSON |
| Ctrl+S opens the browser’s “Save page” dialog | The canvas did not have focus | Click an empty spot on the canvas, then press Ctrl+S |
| Saved workflow is missing from the sidebar | It was exported (downloaded) rather than saved, or you use a different --user-directory |
Copy the JSON into ComfyUI/user/default/workflows/ and refresh |
| Workflow loads but all nodes are in a pile | You opened an API-format file | Use the normal Export file, or tidy and re-save |
| Red nodes after loading | Missing custom node packs | Manager > Install Missing Custom Nodes, then restart |
| “Value not in list” on a loader | Model file missing or named differently | Download the file into the right ComfyUI/models/ sub-folder or pick your own file in the widget |
| Workflows gone after an update | A new install or a different base folder | Copy your old user/default/workflows/ folder across |
Frequently Asked Questions
How do I save a workflow in ComfyUI?
Press Ctrl+S (Cmd+S on a Mac) or use File > Save in the Comfy menu, and give it a name. It is saved as a .json file in ComfyUI/user/default/workflows/ and shows up in the Workflows sidebar.
Where are ComfyUI workflows saved?
In ComfyUI/user/default/workflows/ for manual and portable installs, and in user/default/workflows/ inside the base folder you picked for ComfyUI Desktop. Exported files go to your browser’s Downloads folder instead.
What is the difference between Save and Export in ComfyUI?
Save stores the workflow inside ComfyUI’s own workflow folder so you can reopen it from the sidebar. Export downloads the same JSON as a file you can back up or send to someone.
What is the ComfyUI API format?
It is a slimmer JSON made by File > Export (API). It keeps only node IDs, class types, widget values and links, without layout data, and it is the format the /prompt endpoint and the Comfy Cloud API expect.
How do I load a workflow from an image in ComfyUI?
Drag the original PNG made by the Save Image node onto the canvas, or open it with File > Open. The workflow stored in the PNG metadata loads with the exact settings used.
Why does my PNG not load a workflow?
The metadata was removed. Social sites and chat apps re-compress images, converting to JPEG drops it, and ComfyUI writes none when started with –disable-metadata. Share the .json file instead.
Can I save a ComfyUI workflow without the prompt inside my images?
Yes. Start ComfyUI with –disable-metadata so no workflow or prompt is written into saved images, and keep your workflows as JSON files.
Final Thoughts
Use Ctrl+S for everyday saving, Export for backups and sharing, Export (API) for scripts, and let Save Image keep a copy of every graph inside your PNGs. Back up ComfyUI/user/default/ before updates and you will never rebuild a workflow from memory again. Next, set up the right folders with the model folder cheat sheet, add the custom nodes most shared workflows need, and if the UI keeps disconnecting while you work, see ComfyUI stuck on Reconnecting.




