n8n workflow JSON validator

Paste an n8n workflow export (the JSON you get from Download in the workflow menu, or from the n8n API). The validator runs a structural lint in your browser: missing fields, broken connections, orphan nodes, leaked credentials, deprecated node types. Nothing leaves the page. Share the result with a URL that reproduces your workflow on the other end.

Checks: JSON parse / required top-level fields / node shape / duplicate names & IDs / connection targets / orphan nodes / trigger presence / hardcoded secrets / HTTP timeout & retry / webhook responseMode / deprecated nodes / disabled triggers / expression references
Paste a workflow JSON on the left and hit Validate. Or load the sample to see a clean run.

What this validator checks

Structure

Wiring

Security & ops

Drift

What this validator does not do

FAQ

Is my workflow JSON uploaded anywhere?

No. The validator runs entirely client-side; the page never makes a network call with your workflow. The share link puts the (gzipped, base64-encoded) JSON in the URL fragment after #, which browsers never send to a server. Of course, anyone you share the link with can read it - sanitise credentials and PII before sharing.

Why does it flag a hardcoded secret on an obviously fake string?

The secret scan is regex-based and intentionally noisy. It looks for shapes that match real keys (sk- prefixes, AWS access key patterns, JWT triple-dots, generic 32+ char hex blobs). Mark the warning as expected and move on - or replace the string with a credential reference for cleanliness.

An "orphan node" is on purpose - I keep a parked branch. Is that fine?

Yes. Orphans are surfaced because they're usually accidental, but parking a draft branch in the same workflow is a legitimate pattern. The validator can't tell intent; treat the warning as informational.

Where do I get the workflow JSON from n8n?

In the n8n editor, click the workflow menu (three dots top-right) and choose Download. Programmatically, GET /workflows/:id on the n8n REST API returns the same shape. Either format works here.

What's the #w= in the URL?

It's your workflow JSON, gzipped and base64-encoded into the URL fragment. The "Copy shareable link" button puts your current input into that fragment, so a teammate opening the link sees the same workflow loaded into the validator. Fragments never reach a server, so even on a shared link the JSON only lives between the two browsers that see the URL.

What does "Copy as Markdown" produce?

A short report you can paste into Slack, a GitHub issue, or a code review: pass/fail summary, error / warning / info counts, and a bulleted list of each issue with the node it points to. Same content as the on-screen result, in plain Markdown.

Want your n8n workflows reviewed?

AutomateLab does production-grade n8n workflow audits: structure, retries, error handling, observability, secret hygiene. Two-week engagement, written report, fix PRs against your repo.

Tell us about your setup