Skip to main content

Windmill vs n8n

Eight questions teams ask during a bake-off, with an honest answer on each one for where Windmill or n8n is the better pick.

WindmillWindmill in one sentence

An open-source workflow engine and developer platform to build and orchestrate all your internal software: scripts, workflows, data pipelines, AI agents and internal apps. Made for engineers who want full code flexibility and local dev experience, both to build internal software and to manage the underlying infrastructure.

n8nn8n in one sentence

A source-available visual workflow automation tool with a drag-and-drop canvas, 1,600+ pre-built nodes for SaaS apps and a growing AI agent builder. Best for mixed teams where marketers, ops and non-developers automate tasks themselves alongside engineers.

01 · What you can build

Which internal software can you build and orchestrate?

Windmill is built to centralize and orchestrate all your internal software in one place. Scripts, workflows, data pipelines, full-code apps, AI agents and operator UIs run on a single runtime, with shared resources, auth and observability. n8n focuses on visual workflow automation and AI agents, so you bring your own stack for dashboards, internal apps and heavier data pipelines.

PrimitiveWindmillWindmilln8nn8n
Chain scripts into flows with branching, retries and approval steps
ETL, syncs and scheduled data jobs with parallel branches
Partial
Standalone functions exposed as APIs, webhooks or cron jobs without a wrapping workflow
Build agents that call tools, branch on outputs and run as workflows
Isolated environments with persistent volumes for running agents
Drag-and-drop dashboards and admin tools with built-in components
Custom dashboards and admin tools built in React or Svelte
Cron jobs with retries, error handling and alerting
02 · Target

Who is each platform built for?

Windmill is built for developer-led teams where engineers own the platform end-to-end. n8n is designed for mixed teams where marketers, ops and business users build their own automations on a visual canvas.

Primary audience

WindmillWindmill

Developer-led teams. Engineers own the platform end-to-end: code, Git, local dev, workspace forks, code review, CI/CD, AI coding tools, infrastructure as code.

n8nn8n

Mixed and non-technical teams. Marketers, ops, sales and analysts build automations on a drag-and-drop canvas with pre-built nodes, with developers stepping in for edge cases via Code nodes or custom node development.

How non-developers participate

WindmillWindmill

Non-developers consume through auto-generated UIs, custom apps and an operator role. They can build simple flows with AI assistance, but authoring is optimized for engineers.

n8nn8n

Non-developers author directly on the visual canvas, wiring nodes together without writing code. This is n8n's strongest design axis.

03 · Build experience

How do you build on each platform?

Windmill gives you both a visual UI (flow editor, app builder) and full code flexibility with a local dev loop, real language runtimes and whole-workspace Git sync. Scripts, flows, apps, resources and permissions can all live in Git like application code when you want them to. n8n focuses on a visual canvas where non-developers can build automations without opening an IDE.

Compose steps visually as a DAG with branches, loops and approval steps. Each step can be written in 20+ languages.

Authoring

WindmillWindmill

Build scripts in 20+ languages in a dedicated script editor. Each script is a standalone primitive with its own UI, API endpoint and scheduler; no wrapper required to run. Flows compose scripts either visually via a flow editor or in full code via workflow-as-code(Python and TypeScript). Any public or private package is a first-class import with automatic dependency resolution.

n8nn8n

Build workflows on a drag-and-drop canvas by wiring pre-built nodes together. Each node is a configured integration (HTTP Request, Gmail, Slack, OpenAI, etc.) with its parameters filled in through forms. For custom logic, a Code node embeds a JavaScript or Python snippet, but the code must conform to n8n's data model (items as arrays with item linking between input and output) and use n8n's built-in helpers rather than plain language idioms.

Local dev & IDE

WindmillWindmill

Run scripts locally with the Windmill CLI. VS Code extension, native language tooling (LSP, type-checking, linting) and AI coding tools (Claude Code, Codex) work against real source files.

n8nn8n

Primary authoring happens in the hosted canvas, not a local IDE. A CLI exists for exporting and importing workflow JSON, and custom nodes can be built in TypeScript with a local toolchain, but day-to-day workflow development is web-first.

Data handling

WindmillWindmill

First-class data tables with SQL queries, versioning and a browse / edit UI as a persistent primitive separate from flows, plus native S3 integration for large payloads, files and persistent storage across scripts, flows and apps.

n8nn8n

A Data Table node handles tabular data inside a workflow, with row and table operations. S3 goes through the AWS S3 node. Binary data and file nodes cover large payloads. No SQL-queryable persistent data-table primitive outside the node.

Language runtimes

WindmillWindmill

Real runtimes for TypeScript (Deno, Bun, Node), Python, Go, Bash, SQL, PowerShell, PHP and Rust. Any npm or PyPI package runs natively, including ones with native extensions.

n8nn8n

Code node runs JavaScript on Node.js (npm modules allowlisted by the admin) and native Python via task runners, stable in v2 (replacing the legacy Pyodide runtime). Self-hosted Python packages must be explicitly allowlisted in the n8nio/runnersimage; on n8n cloud, Python library imports are disallowed entirely.

Resources & secrets

WindmillWindmill

Resources (typed JSON for credentials, connection info, configs) and Variables (individual secrets) are first-class and reusable across scripts, flows and apps. Encrypted at rest, scoped via folders and groups for access control, versioned in Git. External secret backends (Vault, AWS Secrets Manager) are Enterprise only.

n8nn8n

Credentials are encrypted per-instance and attached to nodes. External secret backends (Vault, AWS Secrets Manager, Infisical, etc.) are Enterprise only.

Git & CI

WindmillWindmill

Full IaC: scripts, flows, apps, resources, variables, secrets, schedules, folders, groups and permissions are all files in Git, deployed via the CLI and Git sync. Internal tooling runs like application code: PRs, reviews, rollbacks, CI/CD. Git sync is free for up to 2 users; beyond that is Enterprise only.

n8nn8n

Source control and environments (Git push/pull, staging/production branches) is Enterprise only. The community edition has no built-in Git sync; workflows are exported and imported as JSON files.

04 · Integrations

How does the platform integrate with your existing stack?

Windmill lets you import any public package (npm, PyPI, Go or Maven) or your own, and call the vendor's real SDK directly. n8n ships 1,600+ pre-built nodes for mainstream SaaS apps, which is faster for the first wire-up but adds a plugin layer between you and the vendor SDK.

Type `import stripe` in the script editor and run. Windmill detects the import, resolves the version and pins it in a per-script lockfile automatically. No venv, no pip install, no restart: the platform manages dependencies for you.

Connecting out

WindmillWindmill

Any npm, PyPI, Go or Maven package is a first-class import with automatic per-script dependency resolution and lockfiles, and no plugin layer in between: you call the vendor's real SDK with full type inference and auto-completion in the editor. 50+ pre-built resource types cover common databases (Postgres, Snowflake, BigQuery), SaaS (Slack, Stripe, GitHub, Notion, OpenAI) and infrastructure (S3, Redis, Kafka): paste an API key into a typed form and the resource is shared across scripts, flows and apps, encrypted at rest. A community Hub has reusable scripts and flows for common tasks.

n8nn8n

1,600+ pre-built nodes across communication, sales, marketing, dev, AI, data and storage (Slack, Gmail, Notion, HubSpot, Salesforce, Stripe, OpenAI, Airtable, Postgres, MongoDB and many more). Built-in credential wizards handle OAuth flows and typed parameter forms expose each endpoint's options. Action nodes for operations, Trigger nodes for incoming events, Core nodes for routing and transforms, AI Agent nodes for tool-calling LLM steps. The fastest path when the automation is a chain of mainstream SaaS calls.

Receiving events

WindmillWindmill

Native triggers for HTTP, cron, Kafka, NATS, Postgres CDC, SQS, MQTT, SMTP and WebSocket. Each trigger is a typed primitive in the UI: configure topic, subject or path, attach it to a script or flow, and Windmill handles the connection, replay and consumer-group state. Every script also gets an HTTP endpoint and a webhook URL for free, so most receive paths need zero glue code.

n8nn8n

Trigger nodes for webhooks, cron, polling, Kafka, MQTT and app-specific events (Gmail new email, Stripe event, GitHub push, Notion page updated, etc.). App triggers either subscribe to the vendor's webhook or poll the API on a configurable cadence, transparently to the workflow author. The webhook trigger generates a URL per workflow with optional auth, response shaping and binary payload handling.

Extending

WindmillWindmill

A new integration is a script with a new import: save and run, no restart, no image rebuild. The loop is hot-reload all the way through, in the web editor, the CLI and Git sync. Custom logic can be exposed as a typed script, packaged as a resource type for shared use, or published to the private workspace Hub for the team.

n8nn8n

Two ways to build a custom node: declarative (config-driven, lighter, covers most REST APIs) or programmatic (full TypeScript, for richer logic). Either is shipped as an npm package and installed as a community node on the n8n instance. Inline escape hatches: an HTTP Request node calls any vendor API directly with manual credential wiring, and a Code node runs JavaScript or Python in the same process for one-off logic.

05 · Migration & lock-in

How hard to get in, and how hard to get out?

Windmill keeps switching cost low. Step code is standard TS, Python, Go, Bash or SQL that runs anywhere, including after you leave Windmill. n8n is the fastest to get started with if your workflow is mostly pre-built node chains, at the cost of higher rewrite cost if you ever want to move off.

Getting in

WindmillWindmill

Paste a function body into the script editor, Windmill infers args, generates a UI, handles dependencies. No canvas to learn. Triggers, schedules, variables and apps migrate one by one.

n8nn8n

Drag nodes onto the canvas, fill in credential and parameter forms, wire them together. Very fast for workflows that are mostly SaaS calls because the credential and request shapes are already modelled. Slower when the logic is custom, since it lives inside Code nodes.

Getting out

WindmillWindmill

Step logic is already standard code (TS, Python, Go, Bash, SQL) that runs anywhere. The CLI exports the full workspace as plain files. What you lose leaving Windmill is the runtime, not the step code.

n8nn8n

The heavier you lean on pre-built nodes, the more you rewrite on exit. Each node (e.g. n8n-nodes-base.slack, n8n-nodes-base.openAi) has to be reimplemented against the vendor SDK. Code node bodies port cleanly since they're just JavaScript or Python. Expression syntax ({{ $json.field }}) and connection topology also need reimplementing on the new platform.

06 · Enterprise requirements

Audit logs, observability, security, performance

Both cover the enterprise basics: RBAC, SSO, audit logs and SOC 2. Windmill ships more of the foundation (RBAC, SSO up to 10 users, basic audit logs, multi-workspace) in the open source edition. n8n gates SSO, external secrets, Git sync and multi-environment behind Enterprise.

Observability

WindmillWindmill

Real-time streaming logs, per-run inputs / outputs / duration, built-in worker queue metrics and a Prometheus exporter. Trace ID on every job.

n8nn8n

Execution history with per-node inputs and outputs in the UI. Log streaming to external systems (Datadog, Splunk, etc.) is Enterprise only. Insights dashboard (365-day retention) is Enterprise only.

Audit logs

WindmillWindmill

Full trail of who ran / edited / deployed what. Extended retention is Enterprise only.

n8nn8n

Audit logging of user activity and workflow changes is Enterprise only.

Security

WindmillWindmill

SOC 2 Type II compliant. RBAC, SSO (up to 10 users), encrypted secrets at rest and sandboxed script execution in open source. Uncapped SSO, audit logs and advanced access controls (SCIM, SAML) are Enterprise only.

n8nn8n

SOC 2 Type II compliant on Cloud. Basic user management in the community edition. SSO (SAML, LDAP, OIDC), custom roles, external secrets and advanced security settings are Enterprise only.

Multi-tenancy & isolation

WindmillWindmill

Multiple isolated workspaces on the same instance, each with their own users, resources, secrets and access controls. Free tier is capped at 3 workspaces; unlimited is Enterprise only.

n8nn8n

Projects organize workflows and credentials, but the self-hosted community edition has a single shared project. Multi-environment support (separate dev/staging/prod environments) and multiple shared projects are Enterprise only.

Performance

WindmillWindmill

~10ms cold starts. Dedicated-worker mode Enterprise only keeps runtimes and dependencies pre-warmed. Queue-based, horizontally scalable. See the benchmarks covering Airflow, Prefect, Temporal, Kestra, Hatchet and Windmill.

n8nn8n

Single Node.js process by default. Queue mode adds Redis and worker scaling for higher throughput. Per-execution overhead from node resolution, credential decryption and expression evaluation adds up on short, high-volume workflows.

07 · Licensing & pricing

Open source, pricing, and self-hosting?

Windmill is AGPLv3 (true OSS) and publishes flat per-seat and per-worker Enterprise pricing with no execution metering. n8n ships under the Sustainable Use License (source-available, not OSS) and meters by workflow executions on all paid tiers.

License

WindmillWindmill

AGPLv3 core, OSI-approved open source, free and unlimited self-hosted. Enterprise features (SSO, dedicated workers, audit logs, external secret backends) ship in a separate proprietary codebase. Managed cloud available.

n8nn8n

Sustainable Use License: source-available, not OSI-approved. Permits internal use and limited customisation but restricts offering n8n as a commercial service. Enterprise features ship under a separate proprietary license. Managed cloud available.

Enterprise pricing

WindmillWindmill

Enterprise adds SSO, audit logs, dedicated workers, advanced worker groups. Public per-seat and per-worker pricing on the pricing page, no execution metering.

n8nn8n

Cloud tiers start at 20 euros per month (Starter, 2,500 executions) and 50 euros per month (Pro, 20 concurrent). Self-hosted Business is 667 euros per month for 40,000 executions and 30 concurrent. Enterprise (SSO, external secrets, log streaming, advanced RBAC, multi-environment) is custom-quoted.

08 · Verdict

The verdict

Windmill and n8n answer two different questions. n8n asks how non-developers can wire SaaS apps together on a visual canvas. Windmill asks how engineers can build and orchestrate all their internal software on one runtime, with real language tooling and Git sync.

n8n can be a good fit if your primary authors are marketers, ops or analysts who need to build automations themselves, and the work is mostly chaining mainstream SaaS apps that its pre-built nodes already cover. For that audience, the visual canvas is genuinely the most accessible authoring surface we've seen, and it's hard to beat on first wire-up speed.

Windmill is built for a different audience: developer-led teams that want full code flexibility. Step logic lives in real TypeScript, Python, Go, Bash or SQL rather than inside Code nodes constrained to a data model, any npm or PyPI package is a first-class import instead of a plugin you wait on, and the local-dev loop covers VS Code, native language tooling and AI coding tools working against real source files. The runtime scope is also wider: the same platform that runs your workflows also powers data pipelines, AI agents and both low-code and full-code internal apps, with shared auth, secrets and observability across all of them. More of the enterprise foundation ships in open source, the license is AGPLv3 rather than source-available, and pricing is flat per-seat and per-worker rather than metered by workflow executions.

The switching cost is also asymmetric: Windmill step logic is standard code that runs anywhere after you leave, while workflows built on n8n pre-built nodes have to be rewritten against the vendor SDKs on any other platform. If you're deciding between the two, the fastest way to judge is to spend an afternoon in each.

Frequently asked questions

Build your internal platform on Windmill

Scripts, flows, apps, and infrastructure in one place.