Open-source tools for n8n workflows

Lint, mock, test and embed your n8n workflows.

Four command-line tools that work on the workflow JSON you already have. They run on your machine, in a pre-commit hook, in CI, and for an AI agent over MCP.

All four are on npm: npx workflow-lint, npx integration-mock, npx workflow-tester, npx workflow-render.

An n8n workflow drawn by workflow-render: Webhook, Is large order?, Notify Slack or Tag standard, then Merge.
An n8n workflow drawn by workflow-render from its JSON file.

Workflows are code that nobody reviews like code.

An n8n workflow is a JSON file. It goes into git, gets promoted from dev to production, and breaks the way code breaks: a default name nobody replaced, a placeholder URL that shipped, an expression that reads a field the trigger stopped sending.

These tools give workflows what code already has: a linter, mocks, tests, and a picture you can put in a pull request.

The four tools

Use one, or all four.

workflow-lint

Catch the mistakes in a workflow before it runs.

  • 31 rules: default node names, placeholder URLs, API calls with no retry, Set nodes that drop their input
  • Fixes what has a safe fix, and tidies the canvas layout with fmt
  • Runs in pre-commit, in GitHub Actions, and as an MCP server for AI agents
npx workflow-lint lint path/to/workflow.json

Needs Node 24 or newer. Source on GitHub.

Read the workflow-lint docs

integration-mock

Build and test workflows without calling the real APIs.

  • Answers as Slack, Stripe, HubSpot and 23 other services would, so a test run sends nothing and needs no API key
  • Run a workflow once for real, then keep testing against that recorded run
  • Make any call fail or slow down, to test error branches and retry settings
npx integration-mock start

Needs Node 20 or newer. Source on GitHub.

Read the integration-mock docs

workflow-tester

Find the payloads that break a workflow before someone sends them.

  • Generates test cases from the payloads GitHub and Stripe can send: null fields, missing objects, empty strings
  • Runs your expressions and Code nodes with n8n's own engine, offline
  • capture turns a run you already made in n8n into a test
npx workflow-tester init
npx workflow-tester run

Needs Node 24 or newer. Source on GitHub.

Read the workflow-tester docs

workflow-render

Show your workflows on a portfolio or docs page as interactive canvases, not screenshots.

  • One <workflow-render> tag and the workflow's JSON file
  • Visitors pan, zoom and open any node to read its parameters, on a desktop or a phone
  • Shows executions too: status, item counts, and the path that ran
  • Exports SVG and PNG for a README or a PDF
<script type="module" src="https://cdn.jsdelivr.net/npm/workflow-render@0.2.0/dist/element/workflow-render.js"></script>
<workflow-render src="./workflow.json"></workflow-render>

Try it below. Source on GitHub.

Read the workflow-render docs

Try the interactive canvas

This is a real workflow, drawn by workflow-render. Pan, zoom, and double-click a node to read its parameters. On a phone, drag, pinch and tap. Then paste one of your own: the JSON from n8n's Download menu.

This is workflow-render itself, running in your browser. Nothing leaves the page.

Your workflow will appear here.

Works with what you have

  • n8n 2.38node descriptions bundled; other versions install on demand
  • GitHub Actionsworkflow-lint action with SARIF and annotations
  • pre-commit / lefthooklint on commit; test on commit
  • Claude Code / Cursorworkflow-lint as an MCP server
  • n8n-as-codeconvert, then run: the guide

Support

Bugs and questions go to the tool's Issues on GitHub. For a bug, include your n8n version and a minimal workflow JSON. Expect a first response within a week.