Windmill vs n8n
You are picking between the two most credible self-hosted workflow tools for engineers. Windmill is code-first (TypeScript, Python, Go, Bash); n8n is visual-first with code escape hatches.
Windmill
Turns Python/TypeScript scripts into workflows, UIs, and webhooks — open-source, self-hostable, 13× faster than Airflow.
Read review →n8n
Open-source workflow automation with 400+ integrations and native AI agent nodes — self-host or cloud, no lock-in.
Read review →Our take
For engineering teams who think in scripts and want git as the source of truth, Windmill. For mixed teams where non-developers also build flows, n8n. Windmill is faster, more typesafe, and lighter; n8n has the bigger catalog, the friendlier UI, and the deeper AI node story. Both self-host cleanly. Pick by who is going to maintain the workflows.
- Windmill wins 4
- n8n wins 3
- Ties: 2
Side-by-side
| Windmill | n8n | |
|---|---|---|
| Primary surface | Code (TS/Python/Go/Bash) | Visual canvas + code nodes |
| License | AGPLv3 (true OSS) | Sustainable Use License (fair-code, not OSI) |
| Self-host | Yes (Docker, Helm, k8s) | Yes (Docker, Helm) |
| Performance | Rust core, very fast | Node.js, fine for most loads |
| Integration count | ~200 (hub-driven) | 400+ native + 1,000+ community |
| AI / agent nodes | Scripts call any model | Native LangChain nodes, deeper |
| Git as source of truth | First-class (sync to repo) | JSON export, less seamless |
| Non-developer UX | Steeper (code shows up fast) | Friendlier |
| Lock-in | Low (scripts are portable) | Medium (n8n-specific nodes) |
Two credible self-hosted engines
Windmill and n8n are the two most credible self-hosted workflow tools for engineers, and the choice between them is really a choice about primary surface. Windmill is code-first: you write TypeScript, Python, Go, or Bash, and the platform turns each script into a runnable, schedulable, observable artifact. n8n is visual-first: you build on a canvas of nodes and drop into code only when a step needs it.
If n8n is the developer-friendly Zapier, Windmill is the workflow tool for engineers who think n8n still has too much GUI. Both self-host cleanly, both are actively maintained, and neither is a toy. The decision comes down to who maintains the workflows and whether the team thinks in scripts or in nodes.
Code-first vs visual-first
Windmill has no drop-into-code mode because code is the mode. Its three primitives are scripts (any Python, TypeScript, Go, or Bash), flows (DAGs of scripts), and apps (auto-generated UIs that call scripts). Every script becomes a webhook, a scheduled job, a CLI command, and a UI form input by default. For a backend team that already thinks in code, this removes the friction of translating logic into a visual builder.
n8n puts the visual canvas first and offers a Code node (JavaScript or Python) as an escape hatch. Branching, merging, looping over arrays, and sub-workflows are canvas primitives, and the editor is approachable enough that a non-developer can build a working flow. The trade is that expressing genuinely code-heavy logic on a canvas is more awkward than writing it as a script.
The practical filter: Windmill rewards teams whose instinct is to write a function; n8n rewards teams that want to wire boxes together and only occasionally write code. Neither is wrong, but they optimize for different hands on the keyboard.
Licensing
This is a real structural difference, not a footnote. Windmill is AGPLv3 - true OSI-approved open source, but copyleft. Self-hosting Windmill internally for your own team is fine, but embedding it inside a product you ship to customers likely triggers source-disclosure obligations. If you are an ISV or plan to redistribute, read the license and take advice before building on it.
n8n ships under the Sustainable Use License, which is fair-code rather than OSI open source. It is free to self-host and modify for internal use, with restrictions on running a competing hosted n8n service. For internal automation this license is invisible in practice. The two licenses point in opposite directions: AGPLv3 is more permissive for forking and modifying but stricter about redistribution, while the Sustainable Use License is looser on redistribution of your own workflows but not classic OSS.
Performance and integrations
On raw performance, Windmill leads. Its core is written in Rust and ships as a single binary; public benchmarks put it around 13x faster than Airflow on common DAG patterns, with cold-start latency in the hundreds of milliseconds rather than seconds. For high-throughput data and ETL-style orchestration, that speed and the lean footprint are a genuine advantage. n8n runs on Node.js, which is fine for most automation loads but is not built to win a throughput benchmark.
On integrations, n8n leads. It ships 400+ native nodes plus a large community library, and the generic HTTP Request node covers any REST API beyond that. Windmill offers a smaller hub-driven catalog of around 200 integrations and leans on the fact that you can just write the API call yourself. For a team that wants to click connectors together, n8n has far more ready-made; for a team comfortable writing a script, Windmill closes the gap with code.
Git workflow and AI
Windmill treats git as a first-class source of truth: workflows and scripts sync to a repository, so version control, review, and CI are native rather than bolted on. n8n exports workflows as JSON, which is version-controllable but less seamless - the round-trip is workable rather than designed-in. For teams that want their automation to live in the same repo and review process as the rest of their code, Windmill is the cleaner fit.
On AI, n8n has the deeper story. It ships native LangChain nodes, an AI Agent node, chat memory, and direct integrations with the major vector stores, so building a retrieval flow or a tool-using agent happens inside the same canvas as everything else. Windmill has no dedicated AI node layer - scripts call any model API directly, which is maximally flexible but more do-it-yourself. If the AI logic is the workflow and you want building blocks, n8n; if you would rather write the model calls as code, Windmill does not get in the way.
Who should choose Windmill
Windmill is the right choice for engineering teams who think in scripts and want git as the source of truth. Teams whose alternative was Airflow, Prefect, or a sprawl of cron and Bash get a faster, lighter, observable engine that turns each script into a webhook, a schedule, and a UI. It fits backend and data teams orchestrating pipelines, and self-hosted shops that will not deploy a cloud SaaS. The things to accept are the copyleft AGPLv3 license if you plan to redistribute, the smaller integration catalog, and a learning curve that assumes engineers - non-developers should not start here. Note too that Windmill has no affiliate program, so for a publisher its value is SEO traffic rather than commission.
Who should choose n8n
n8n is the right choice for mixed teams where non-developers also build flows. The visual canvas is friendlier, the catalog is far bigger with 400+ native nodes plus community contributions, and the AI node story is deeper for retrieval and agent workflows. It self-hosts as cleanly as Windmill on Docker or Helm, and the execution-priced cloud is available for teams that do not want to run infrastructure at all. Choose n8n when the people building workflows are not all engineers, when you want ready-made connectors over writing your own, or when native AI building blocks matter more than raw throughput and git-native scripts.
FAQ
- Which is better, Windmill or n8n?
- For engineering teams who think in scripts and want git as the source of truth, Windmill. For mixed teams where non-developers also build flows, n8n. Windmill is faster, more typesafe, and lighter; n8n has the bigger catalog, the friendlier UI, and the deeper AI node story. Both self-host cleanly. Pick by who is going to maintain the workflows.
- What are the main differences?
- Primary surface: Windmill — Code (TS/Python/Go/Bash); n8n — Visual canvas + code nodes. License: Windmill — AGPLv3 (true OSS); n8n — Sustainable Use License (fair-code, not OSI). Self-host: Windmill — Yes (Docker, Helm, k8s); n8n — Yes (Docker, Helm). Performance: Windmill — Rust core, very fast; n8n — Node.js, fine for most loads. Integration count: Windmill — ~200 (hub-driven); n8n — 400+ native + 1,000+ community. AI / agent nodes: Windmill — Scripts call any model; n8n — Native LangChain nodes, deeper. Git as source of truth: Windmill — First-class (sync to repo); n8n — JSON export, less seamless. Non-developer UX: Windmill — Steeper (code shows up fast); n8n — Friendlier. Lock-in: Windmill — Low (scripts are portable); n8n — Medium (n8n-specific nodes).
- Is Windmill cheaper than n8n?
- Pricing depends on workload. See each tool's review for current tiers.