Best free self-hosted workflow automation: Node-RED vs n8n
When someone signs up, you want the follow-up done automatically (add them to your customer list, ping your team for paying plans, retry when a service hiccups) without writing an app or paying per task.
- Our pick
- Node-RED96/100
- Why
- 7 of 7 checks in both runs: 20 of 20 customer records exact, 7 of 7 Pro alerts, the failed call retried and recovered, every reply 200 in a few milliseconds, the schedule ran, and it survived a restart. About 110 MB of memory. Apache-2.0, credentials encrypted, no telemetry unless you agree.
- Not for you if
- you want each run's history to debug failures, or you can't put a login in front of the editor yourself (Node-RED's editor is open on a fresh install). n8n is the better fit there.
Short answer: Both work; it's close. Node-RED (96/100) did the whole job right with 110 MB of memory and an Apache-2.0 licence, but its editor has no login until you set one up and it keeps no run history. n8n (94/100) did the job just as well, has a login, run history and a one-click retry setting, but used about 550 MB and sends usage data to n8n unless you turn it off. Pick Node-RED for a small server you lock down yourself; pick n8n if you want history and a friendlier editor.
The verdict
Winner
Node-RED
An open-source, flow-based tool for wiring together web services, APIs and devices in a browser editor, from the OpenJS Foundation.
7 of 7 checks in both runs. All 20 customer records exact, exactly 7 Pro alerts, the failed call retried after 1 s and recovered, every reply 200 (median 3.6 ms), the health check ran every minute, and the flow was still running after a restart. 109–112 MB of memory. Lost points for no login on a fresh install and no run history. Score: 96/100 (both runs).
Runner-up
n8n
A workflow automation tool with a visual editor and hundreds of built-in integrations, which you can self-host for free (Community edition).
7 of 7 checks in both runs, with the same results (median reply 63 ms). Built-in Retry On Fail, login and run history. Lost points for about 550 MB of memory after the test, usage data sent to n8n by default, and a fair-code licence. Score: 94/100 (both runs).
On this page
Quick answers
What's the best free self-hosted alternative to Zapier?
Of the two we tested, Node-RED scored 96/100 and n8n 94/100, a close call. Both ran a signup workflow (webhook, customer list with retry, team alert, reply, schedule) perfectly in two runs each. We didn't test Zapier or Make.
Is n8n free to self-host?
Yes. The Community edition is free to run on your own server with no execution limits, under n8n's Sustainable Use License: free for your own internal business or non-commercial use, with limits on reselling or hosting it for others.
Node-RED or n8n?
Node-RED is lighter (about 110 MB vs about 550 MB in our test), Apache-2.0 and sends no usage data unless you agree, but its editor has no login by default and it keeps no run history. n8n has a login, run history and a retry setting on every node, but sends usage data by default and is fair-code licensed.
Does n8n send data to n8n's servers?
By default, yes. Its docs say a self-hosted instance sends data to n8n's servers for update notices, templates and diagnostics, and show how to turn it off with environment variables such as N8N_DIAGNOSTICS_ENABLED=false.
Is the Node-RED editor password protected?
Not by default. On our fresh install the editor and its API answered without any login. Node-RED's docs explain how to turn on adminAuth; do that before putting it on the internet.
Can Node-RED retry a failed HTTP request?
Not with a setting. We built the retry from built-in nodes: a switch on the status code, a counter and a 1-second delay looping back. n8n has a Retry On Fail setting on each node.
Why
Who this is for: you have a product with signups and want the follow-up automated (customer list, team alert, retries, a scheduled check) on a server you control, without per-task bills and without writing a backend for it.
Our pick: Node-RED (96/100), by a nose. It did the whole job right in both runs, on about 110 MB of memory, under a true open-source licence. Before you put it online, turn on its login: the editor is open by default.
Runner-up: n8n (94/100). It did the job just as well, and its editor is friendlier: a retry setting on every node, a login from the start, and a history of every run. It costs you about 5 times the memory, it sends usage data to n8n unless you switch that off, and its licence limits reselling it.
It’s close. Both passed every check. The 2 points come from different trade-offs, not from the work itself, so pick on the trade-off that matters to you.
Results (two runs each, identical)
| Criterion | Node-RED 5.0.8 | n8n 2.35.7 |
|---|---|---|
| Customer records exact | 20 / 20 | 20 / 20 |
| Pro alerts exact | 7 / 7 | 7 / 7 |
| Failed call retried and recovered | Yes | Yes |
Replies 200 {"ok": true}, median | 3.6 ms | 63 ms |
| Health check every minute | Yes | Yes |
| Still working after a restart | Yes | Yes |
| Memory after the test | about 110 MB | about 550 MB |
| Login on a fresh install | No | Yes (create owner account) |
| Run history | No | Yes |
| Retry | Built from 3 nodes | Setting on the node |
| Usage data sent by default | No (asks first) | Yes |
| Licence | Apache-2.0 | Sustainable Use (fair-code) |
Gotchas
Node-RED: lock the editor first. On our fresh install the editor and its API answered without any login, so anyone who can reach it can change your flows. Set adminAuth in settings.js, as the securing guide shows.
Node-RED: clear msg.headers between HTTP calls. The HTTP request node puts the response headers on the message, and the next HTTP node or reply will reuse them. Delete them with a change node.
n8n: CLI changes need a restart. import:workflow imports workflows inactive, and publish:workflow (which replaced update:workflow --active in n8n 2.0) only takes effect after you restart n8n.
n8n: turn off telemetry if you care. Set N8N_DIAGNOSTICS_ENABLED=false (and the related variables in n8n’s isolation guide).
n8n: claim the owner account straight away. A fresh instance asks the first visitor to create the owner account. Do it before you expose the port.
Check your Node.js version. We ran both on Node.js 22; see each tool’s install docs for the versions it supports.
Scores
Scored with our published rubric. Tested 2026-10-16. Two runs each, because the first runs were within 10 points; both runs scored the same. The tie-breaker (task success, then safety) didn’t separate them, so the higher average score decides.
| Criterion | Node-RED | n8n |
|---|---|---|
| Task success (35) | 5 (7 of 7) | 5 (7 of 7) |
| Effort (15) | 5 (no fixes) | 5 (no fixes) |
| Time (10) | 5 (under 15 minutes) | 5 (under 15 minutes) |
| Cost (10) | 5 ($0 self-hosted) | 5 ($0 self-hosted) |
| Quality of what you get (10) | 4 (no run history) | 4 (about 550 MB) |
| Ownership (10) | 5 (Apache-2.0) | 4 (fair-code) |
| Safe defaults (10) | 4 (no login by default) | 4 (sends usage data by default) |
| Total | 96 | 94 |
The 7 checks: installed and active using documented commands only, all 20 customer records exact, exactly the 7 expected alerts, recovers the failed call, every reply 200 within 1 s at the 95th percentile, the schedule runs at least twice in 150 seconds, and the workflow survives a restart.
What it costs
Both are $0 to self-host with no execution limits; you pay only for your server. n8n’s Sustainable Use License lets you use it free for your own internal business or non-commercial use, but limits offering it to others as a service. Node-RED is Apache-2.0. Our runs cost $0.
Caveats
- A small, local test. The customer list and chat were local stand-ins, not real Slack or HubSpot accounts, and we sent 21 events, not thousands.
- Written as JSON, not dragged in the editor. Our agent has no screen, so it wrote each workflow in the tool’s own format using documented nodes. Built-in expressions (n8n’s
{{ }}, Node-RED’s JSONata) were allowed; code nodes were not. The test kit includes both workflows. - Our harness slipped twice (a restart signal that missed n8n, and an interrupted Node-RED run); we redid those steps. Details in the test script.
- Neither tool’s integrations library was compared; n8n has many more ready-made app nodes.
Next step: feed your AI clean text. See our tested pick for turning web pages into clean text.
Not tested yet
- Activepieces and Windmill: other self-hosted options, queued.
- Zapier and Make: hosted only, with per-task pricing.
Test log
| Date | Agent | Step | Result |
|---|---|---|---|
| Oct 16, 2026 | Lando (agent) | Setup for both: local test services for a customer list (/crm, which fails the first call for one email with HTTP 500), a team chat (/chat) and a health check, plus 20 fixed signup events (7 Pro, mixed-case emails). Each tool's workflow was written in its own JSON format with built-in nodes only and installed with its documented command or flow file. No code nodes. | Script frozen before the runs. Both tools' terms allow benchmarking. The test kit and both workflows are published. |
| Oct 16, 2026 | Lando (agent) | n8n 2.35.7, runs n8n-r1 and n8n-r2: npx n8n, then n8n import:workflow and n8n publish:workflow, restart, 20 events, 150 s wait, restart, 1 more event. | 7 of 7 both runs. Every record and alert exact, retry recovered, median reply 63 ms. About 550 MB of memory (main process plus task runner). Score: 94/100 both runs. |
| Oct 16, 2026 | Lando (agent) | Node-RED 5.0.8, runs nodered-r1 and nodered-r2: npm install -g --unsafe-perm node-red, flow file in a fresh data folder, node-red, same events, wait and restart. | 7 of 7 both runs. Every record and alert exact, retry recovered, median reply 3.6 ms. 109–112 MB. Score: 96/100 both runs. |
Affiliate disclosure
This page has no affiliate links yet. Every link goes to the tool’s own homepage. Affiliate deals never decide a pick, and a tool with no affiliate program can still win. How we make money.
Sources
What to use now
A free weekly email.
We'll email you a link to confirm. We use Kit to send the email. Unsubscribe anytime. Privacy