>_ * AY AUTOMATE Released— New product for developers & vibe coders— Supercharge your workflow with AY Claude

Free tool

n8n workflow JSON checker

Published · Last updated · Checked against docs.n8n.io and the n8n source on November 11, 2026

An n8n workflow JSON is the file n8n saves when you download a workflow. It has a nodes array (name, type, typeVersion, position, parameters, credentials) and a connections object keyed by source node name. Paste one below to check it before you import or share it.

Check your workflow JSON

Your JSON stays in this browser tab. The check runs on your device and nothing is uploaded or saved.

In n8n, open the workflow menu and select Download, or select all nodes and copy them. Then paste here.

What the checker looks for

  • Invalid JSON. The line and column where parsing stopped.
  • Broken connections. Links from or to a node name that is not in the nodes array, and links without a type or index (IConnections type).
  • Nodes that never run. Nodes with no connection at all, and nodes with nothing feeding their input that are not triggers. AI sub-nodes such as chat models and tools are fine without a main input, because they plug in through ai_* connections.
  • Node problems. Duplicate names, missing type, typeVersion, position or parameters, duplicate ids, and deactivated nodes (INode type).
  • Missing node references. Expressions like $("Get customer").item that name a node not in the workflow. A common break after a rename (expression reference).
  • Credential names. Every credential reference, with its name, since n8n says names can be sensitive (export and import).
  • Hardcoded secrets. Bearer and Basic auth headers, values of fields named like apiKey, token, secret or password, keys in URL query strings, passwords inside URLs, and known formats: GitHub tokens, AWS access key IDs, Stripe secret keys, Slack incoming webhook URLs, JSON Web Tokens and PEM private keys.
  • Webhooks. Webhook nodes with no authentication (n8n's default is None), and full webhook URLs that show your n8n host.
  • Pinned data and error workflow. pinData that may hold real records, and an error workflow id that will not exist on another instance.

What is inside an n8n workflow JSON

n8n's docs say "n8n saves workflows in JSON format" (export and import). The docs do not describe every key, so the tables below come from n8n's TypeScript types (INode, IConnections) at the commit linked in the sources.

Top-level keys

Top-level keys of an n8n workflow JSON
KeyWhat it holds
nameThe workflow name.
nodesArray of node objects. This is the workflow.
connectionsObject keyed by source node name. Says which output feeds which input.
settingsWorkflow settings such as execution order, timezone and error workflow.
pinDataPinned test output, keyed by node name. Can hold real data.
id, active, versionId, metaDetails from the instance the workflow came from.

Fields on each node

Fields on each node in an n8n workflow JSON
KeyWhat it holds
nameUnique name. Connections and expressions use it.
typeWhich node to load, for example n8n-nodes-base.httpRequest.
typeVersionVersion of that node, a number.
positionCanvas place as [x, y].
parametersThe settings you filled in on the node.
idNode id, a string.
credentialsOptional. { "<credential type>": { "id", "name" } }. No secret values.
disabledOptional. true when the node is deactivated.
webhookIdOptional. An id for the node's webhook.
notes, retryOnFail, onError, ...Optional node settings.

How connections are stored

Each key in connections is a source node name. Under it, each output type (main, or an AI type like ai_languageModel) holds an array of output slots, and each slot holds the links that leave it. index is the input slot on the target node.

"connections": {
  "Webhook": {
    "main": [
      [ { "node": "HTTP Request", "type": "main", "index": 0 } ]
    ]
  }
}

Before you share a workflow JSON

n8n's docs: "Exported workflow JSON files include credential names and IDs. While IDs aren't sensitive, the names could be, depending on how you name your credentials. HTTP Request nodes may contain authentication headers when imported from cURL. Remove or anonymize this information from the JSON file before sharing to protect your credentials." (export and import)

  1. Paste the file into the checker above and read every warning.
  2. Move hardcoded keys into n8n credentials. If a key was already in a shared file, revoke it and make a new one.
  3. Add authentication to public webhooks. The Webhook node supports Basic auth, Header auth and JWT auth.
  4. Copy or download the cleaned JSON, read it once more, then share that file.

How to import the JSON into n8n

  1. Open a workflow and select the Workflow menu in the canvas header.
  2. Select Import from File for a .json file, or Import from URL for a link to workflow JSON.
  3. Or copy the JSON and paste it onto the canvas with Ctrl + V or Cmd + V.
  4. Open each node that uses a credential and select one of your own.

Steps from n8n's export and import page.

How this tool works

  • Everything runs in your browser. Nothing you paste or open is sent to a server or stored, and there are no API keys or accounts.
  • The text goes through the browser's JSON parser. If that passes, the tool walks the nodes array and the connections object and runs the checks listed above. Each finding links the doc or source line it is based on.
  • It does not know every node's parameter list, so it cannot tell you that a field inside a node is set wrong. Run the workflow once in n8n after you import it.
  • Triggers are spotted by type name: types ending in "Trigger", plus webhook, start, cron, interval and emailReadImap. A custom trigger with another name shows up as a node with no input.
  • The secret scan uses key names and published token formats. It can miss a secret with an unusual name, and it can flag a long value that is not secret. It scans the parameters of every node, sticky note text included. pinData is not scanned line by line; the cleaned copy drops it whole.
  • The cleaned copy changes only what was flagged: credential names become "<type> credential", flagged secrets become REDACTED, webhook hosts become your-n8n-host.example, and pinData is removed.

More free n8n tools and templates

Want someone to build, review and run your n8n workflows? AY Automate builds and looks after n8n automations.

n8n workflow JSON FAQ

What is an n8n workflow JSON?

It is the file n8n saves when you download a workflow. n8n saves workflows in JSON format. The file has a nodes array, where each node has a name, type, typeVersion, position and parameters, and a connections object that links nodes by their names.

How do I validate an n8n workflow JSON?

Paste it into the checker on this page. It first checks that the text is valid JSON and shows the line and column of any syntax error. Then it checks the nodes array and the connections object against the field names in n8n's own TypeScript types, and lists broken connections, unknown node references, deactivated nodes, credential names and hardcoded secrets.

Is there an official JSON schema for n8n workflows?

n8n's docs index did not list a JSON Schema file for workflows when we checked on November 11, 2026. The closest reference is n8n's source code: the INode, IConnection and IConnections types in packages/workflow/src/interfaces.ts. This tool uses those field names, and the sources list links the exact lines.

How do I get the JSON of an n8n workflow?

Open the workflow, select the Workflow menu in the canvas header and select Download. n8n saves the current workflow as a JSON file. You can also select nodes on the canvas and copy them with Ctrl+C or Cmd+C, which puts the JSON on your clipboard.

How do I import a workflow JSON into n8n?

In the Workflow menu, select Import from File to load a .json file, or Import from URL to load workflow JSON from a link. You can also paste copied JSON straight onto the canvas with Ctrl+V or Cmd+V.

Is it safe to share an n8n workflow JSON?

Check it first. n8n's docs say exported workflow JSON files include credential names and IDs, that the names could be sensitive, and that HTTP Request nodes may contain authentication headers when imported from cURL. Pinned test data can also be real data. The checker flags all of these and gives you a cleaned copy.

Why are my connections broken after I edited the JSON by hand?

Connections point at nodes by name, not by id. The connections object is keyed by the source node name and each link names its target node. If you rename a node in the nodes array and not in connections, the link points at a node that no longer exists. The checker lists each one.

Does this tool upload my workflow?

No. The check runs in your browser with plain JavaScript. Nothing you paste or open is sent to a server or saved, and there are no accounts or API keys.

Sources

All checked November 11, 2026.