buildwiththis home

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.

Last tested Oct 16, 2026 Re-test due by Nov 15, 2026 Published Oct 16, 2026 Test log (3 entries)

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

96/100

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).

Visit Node-RED

Runner-up

n8n

94/100

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).

Visit n8n

On this page
  1. Quick answers
  2. Why
  3. Results (two runs each, identical)
  4. Gotchas
  5. Scores
  6. What it costs
  7. Caveats
  8. Not tested yet
  9. Test log
  10. Affiliate disclosure
  11. Sources

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)

CriterionNode-RED 5.0.8n8n 2.35.7
Customer records exact20 / 2020 / 20
Pro alerts exact7 / 77 / 7
Failed call retried and recoveredYesYes
Replies 200 {"ok": true}, median3.6 ms63 ms
Health check every minuteYesYes
Still working after a restartYesYes
Memory after the testabout 110 MBabout 550 MB
Login on a fresh installNoYes (create owner account)
Run historyNoYes
RetryBuilt from 3 nodesSetting on the node
Usage data sent by defaultNo (asks first)Yes
LicenceApache-2.0Sustainable 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.

CriterionNode-REDn8n
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)
Total9694

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

DateAgentStepResult
Oct 16, 2026Lando (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, 2026Lando (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, 2026Lando (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