When a self-hosted n8n instance should move to queue mode
Regular mode fits a self-hosted n8n instance where one process can carry the trigger load, the webhook traffic and the executions without queuing work behind it. Queue mode fits when executions must be spread across several worker processes, or when incoming webhooks need their own processors so they are not competing with running workflows. The decision is usually triggered by executions backing up or webhook responses slowing down, not by a fixed size threshold, so measure your own queue depth and response times before you change the architecture. Two requirements are non-negotiable once you move: queue mode needs PostgreSQL and Redis, not SQLite, because the queue mode documentation says a distributed setup over SQLite is not supported. Confirm your current database before planning the migration.
Stay in regular mode if you run a single team's workflows, your volume is modest, and you can accept that a restart or crash stops everything at once. It is also the simpler choice to operate: one process, one database, and no Redis to monitor. Move to queue mode when you need a main instance that handles triggers and webhooks, a Redis broker holding pending executions, and one or more workers that run executions and write results to the database. Every worker and webhook processor must share the main instance's encryption key so they can read stored credentials, so plan key handling as part of the move. If you need high availability in the sense of several main instances with a leader and followers, be aware that the multi-main setup requires an n8n Enterprise license when self-hosted, and it also depends on PostgreSQL and Redis. Ask n8n to confirm current licensing terms in writing before you design around it.
Regular mode and queue mode compared by factor
This table compares n8n regular mode and queue mode across the factors that decide when a self-hosted instance needs to split up. Read each row against your expected execution volume, webhook traffic and availability requirement, then check the database and storage notes before you plan the build.
| Factor | Regular mode | Queue mode |
|---|---|---|
| Process layout | One process receives triggers, runs workflows and serves the editor | A main instance handles triggers and webhooks, Redis holds pending executions and separate workers run them |
| Required components | n8n and its database | n8n main, workers, Redis and PostgreSQL, with optional webhook processors |
| Database requirement | Can run on SQLite for a single instance | Needs PostgreSQL, since running a distributed setup on SQLite is not supported |
| Binary data storage | Can use filesystem storage for binary data | Filesystem binary data storage is not supported, so the docs point to S3 external storage |
| Webhook handling | The main process receives webhook requests directly | Optional webhook processors scale incoming requests, and the docs advise against adding the main process to the load balancer pool |
| Worker concurrency | Not applicable as a separate setting | Defaults to 10, and the docs recommend 5 or higher because low values with many workers can exhaust the database connection pool |
| High availability | No built-in multi-instance failover | Multi-main setup adds a leader and followers and requires PostgreSQL and Redis |
| Licensing for HA | Covered by the Sustainable Use License for internal use | Multi-main needs an n8n Enterprise license when self-hosted and is not available on n8n Cloud |
| Operating effort | One process, one database to back up and upgrade | Several services to size, monitor and keep on a shared encryption key, plus Redis and PostgreSQL operations |
How the parts of each mode fit together
Regular mode runs triggers, webhooks and executions in one process, which is simple to operate but ties every workload to that process. Queue mode splits those roles across a main instance, Redis, workers and optional webhook processors, and each role below is a place where configuration can go wrong.
Regular mode runs everything in one process
In regular mode, one n8n process handles triggers, webhooks and every workflow execution. There is no broker and no separate worker pool, so the deployment is one service plus its database. This is the right starting point for most single-team instances. Check whether scheduled triggers, webhook bursts and long executions compete for the same CPU and memory, because that contention is the first sign that the instance needs to move to queue mode.
Main instance hands off execution IDs
In queue mode, the main instance keeps triggers and webhook intake, then passes execution IDs to Redis, which holds the queue of pending work. The main instance does not run the executions itself. Confirm that Redis is reachable from the main instance and every worker, and that Redis has its own persistence and recovery plan, since queued work depends on it.
Workers run executions and write results
Worker processes pick execution IDs from Redis, run the workflows and write results to the database. Both Redis and the database must be reachable from every worker, and n8n does not support queue mode over SQLite, so PostgreSQL is the database to plan for. Before scaling out, review worker concurrency, which defaults to 10, and the docs' advice to keep it at 5 or higher, because low values across many workers can exhaust the database connection pool.
Webhook processors scale incoming requests
Webhook processors are optional in queue mode. They take incoming webhook traffic off the main instance so intake can scale separately from triggers and timers. The n8n docs advise against adding the main process to the load balancer pool, so the load balancer should route webhook traffic only to webhook processors. Verify this routing during testing, since sending webhooks to the main instance undermines the split.
One encryption key across all processes
The main instance's encryption key must be shared with every worker and webhook processor, because they read credentials stored in the database. A mismatched or rotated key on one node breaks execution for that node in ways that can look like random failures. Store the key in your secrets manager, deploy it identically to each process, and include the key in your change and rotation runbooks.
Binary data needs external storage
Queue mode does not support binary data stored on the local filesystem. Workers and the main instance can run on different hosts, so any file a workflow produces must live in shared storage. The queue mode docs point to S3 external storage for persisting binary data. Confirm that your S3-compatible store is reachable from every process and that the workflows you plan to move handle files, PDFs or images before you cut over.
Deciding by load pattern, team and availability needs
Regular mode fits a team that runs a modest number of scheduled and event-triggered workflows on one server. A single process receives triggers, runs executions and serves the editor, which keeps the moving parts few and the operating effort low. Queue mode adds Redis, separate worker processes and a shared database configuration, and that work only pays off once one process is the bottleneck.
- Mode fit: Regular mode is the default for light, scheduled and internal workflows where executions rarely queue up.
- Prerequisites: A single instance with a database. Confirm whether your current database is SQLite or PostgreSQL, since queue mode requires PostgreSQL.
- Binary data: Confirm where file-based binary data is stored, because queue mode does not support filesystem binary storage.
- License: Community use is covered by the Sustainable Use License for internal business purposes, but SSO and environments need a paid plan. Confirm this against the n8n pricing page.
- Illustrative example: A finance team runs a few nightly reports and an approval reminder on one server with a few hundred executions per day. This scale rarely justifies moving to queue mode.
Before staying in regular mode, check whether execution duration or concurrency already slows down the editor or delays triggers.
Queue mode fits a platform team that serves many business units, handles bursts of executions or receives a high volume of webhooks. The main instance receives triggers and webhooks and places executions on Redis, while worker processes perform the work and write results to the database. Separate webhook processors can absorb inbound request spikes without loading the main process.
- Mode fit: Queue mode when executions must scale horizontally, or when webhook traffic competes with workflow runs on one machine.
- Prerequisites: Redis as the message broker, PostgreSQL as the shared database, and the same encryption key on the main instance, workers and webhook processors.
- Worker concurrency: The default is 10 per worker, and the queue mode docs recommend 5 or higher. Confirm your connection pool size, since many workers with low concurrency can exhaust database connections.
- Load balancing: The n8n docs advise against adding the main process to the webhook load balancer pool. Confirm your ingress design accordingly.
- Storage: Binary data must go to external S3 storage in queue mode. Confirm that your storage platform is available and sized for it.
A load test in your own environment is the most reliable way to size workers and concurrency before you commit.
High availability in n8n is a separate decision from scaling. Queue mode with several workers does not by itself remove the main instance as a single point of failure. n8n's multi-main setup runs several main instances with a leader and followers, and it requires PostgreSQL, Redis and an Enterprise license when self-hosted. It is not available on n8n Cloud or in the Community edition.
- Mode fit: Multi-main within queue mode when a main instance outage would stop triggers and business processes.
- License: Enterprise self-hosted licensing is required for multi-main. Confirm the license terms and what the Enterprise plan includes with n8n before design work starts.
- Database HA: PostgreSQL does not include automatic failover software. Confirm which external tool handles primary detection, failover and fencing, since n8n does not supply it.
- Recovery: Confirm backup and point-in-time recovery procedures for the database, and test restores.
- Redis: Confirm the Redis topology and its own failover behavior, because the queue depends on it.
Organizations under audit should ask the vendor and their auditor how HA evidence will be produced and retained.
Moving from regular mode to queue mode safely
This sequence takes a self-hosted n8n instance from one process that runs everything to a main instance, Redis and separate workers, with each prerequisite confirmed before traffic moves. The output is a queue mode deployment you can test, roll back and hand to operations.
Confirm the database is PostgreSQL
The platform team checks the instance's database backend before anything else changes. Queue mode needs access to both Redis and the database, and the n8n docs say a distributed setup over SQLite is not supported, with PostgreSQL as the supported choice. If the instance runs on SQLite, plan a data migration to PostgreSQL in a separate, tested change, since the workers depend on that shared database. The step is done when the database engine and connection settings are documented and reachable from every planned node.
Provision Redis as the message broker
The platform team deploys Redis that the main instance and every worker can reach over the network. Redis holds the queue of pending executions, and the main instance passes execution IDs to it, so its availability directly affects whether runs start. Confirm the access controls and network path with your security team and record who owns the Redis service. The step is done when a connection test from the main instance and from a worker succeeds and the team can state who is paged if Redis is unavailable.
Configure external binary data storage
The platform team moves binary data, such as files handled by workflows, out of the local filesystem into external object storage. The n8n queue mode docs state that queue mode does not support binary data storage in the filesystem and point to S3 external storage for persistence. Any workflow that writes files locally will fail on a worker that cannot see the main instance's disk, so review workflows for this dependency first. The step is done when a test workflow with binary output runs on a worker and the object store holds the file.
Share the encryption key with all nodes
The security or platform engineer copies the main instance's encryption key into the configuration of every worker and webhook processor, using the same secret store process you use for other n8n secrets. Workers need this key to read credentials stored in the database, so a mismatch shows up as failed credential lookups rather than a clear startup error. Restrict who can read the key and record where each node gets it. The step is done when a workflow using a stored credential runs successfully on a worker.
Set worker concurrency deliberately
The platform team sets the concurrency value on each worker and records it in configuration. The default is 10, and the n8n queue mode docs recommend a value of 5 or higher, because low values across many workers can exhaust the database connection pool. Size the pool on the PostgreSQL side against the total number of workers and their concurrency, and confirm the connection limit with the database owner. The step is done when the chosen values are written down with the connection math and a load test shows no connection errors in the database logs.
Test webhook processor routing
The integration team deploys webhook processors as separate nodes and routes a copy of production-like webhook traffic through the load balancer to them. The n8n docs advise against adding the main process to the load balancer pool, so verify that the load balancer rules send webhook paths only to the webhook processors and that the main instance still handles timers and triggers. Check that each test webhook produces one execution and that the response codes match the originals. The step is done when routing results are logged and no webhook reaches the main instance's public endpoint.
Remove the main process from the webhook pool
After routing tests pass, the platform team removes the main instance from the webhook load balancer pool during a change window agreed with the business owners. Keep the main instance running so that timers and triggers continue, and watch execution counts, queue depth and error logs for the first run cycle. Confirm with the owners of each critical workflow that their webhooks still fire. The step is done when the pool lists only webhook processors, the queue drains normally, and the change record captures the before and after configuration.
Document the rollback path
The platform team writes the steps to return to regular mode, including restoring the main instance to the webhook pool, pausing workers and confirming that pending executions in Redis are handled. Store the previous configuration and a database backup taken before the change, and test the restore procedure in a non-production copy. Name the person who can approve a rollback and the signals that trigger it. The step is done when the rollback runbook has been rehearsed once and stored with the change record.
Upgrades, backups and monitoring in each mode
This table compares what regular mode and queue mode ask of your team after go-live: upgrades, backups, monitoring and skills. Read it as a checklist of extra moving parts in queue mode, then confirm each item against your own environment and the n8n and PostgreSQL documentation for your target versions.
| Area | Regular mode | Queue mode |
|---|---|---|
| Upgrade scope | One n8n process and its database to move between 1.x and 2.x. Confirm the upgrade path for your version in the n8n release notes before changing anything. | Main instance, every worker, and every webhook processor must run a compatible n8n version. Plan a coordinated rollout and confirm the order in the n8n queue mode docs. |
| Database upgrades | PostgreSQL 14 is supported to November 12, 2026, and 18 to November 14, 2030. Plan a major upgrade before the end of a version's window. | Same PostgreSQL windows apply, but the database also serves every worker, so schedule maintenance with the whole pool stopped or drained. |
| Backups | Back up the PostgreSQL database and the encryption key, and the filesystem if binary data is stored there. | Back up PostgreSQL, Redis state for pending executions, and the encryption key shared with every worker. Binary data must sit in S3 external storage. |
| Encryption key custody | One key held by one instance. Document where it is stored and who can restore it. | The same key must be present on the main, workers and webhook processors. Restoring a backup without it leaves stored credentials unreadable. |
| Health monitoring | Watch one process for uptime, memory and execution failures. | Watch the main instance, each worker and each webhook processor separately, since a stopped worker can fail silently while the main instance stays up. |
| Queue depth and concurrency | Not applicable. Executions run in the same process that receives the trigger. | Track pending executions in Redis and worker concurrency (default 10, docs recommend 5 or higher). Rising queue depth signals too few workers or too little database capacity. |
| PostgreSQL operations | Basic care: backups, vacuum settings and version updates for one database. | Connection pool sizing across many workers, replication if you add standbys, and failover tooling, since PostgreSQL does not detect primary failure on its own. |
| Skills needed | Linux administration and basic n8n operations. | Redis operations, PostgreSQL administration, S3 configuration, and load balancer work for webhook processors. Confirm staffing with your own team before choosing this mode. |
Which high availability setup needs an n8n Enterprise license
Queue mode lets you add workers, but it does not by itself make the main instance highly available. For that, n8n offers a multi-main setup with a leader and followers, and on a self-hosted deployment it requires an n8n Enterprise license. It also requires both PostgreSQL and Redis, and it is not available in the Community edition or on n8n Cloud. If uptime of the trigger and webhook layer matters to your business, treat multi-main as an Enterprise purchase decision to make early, before you commit to an architecture that assumes it.
Before you rely on any n8n edition for this, read the Sustainable Use License in the n8n LICENSE.md and check which files carry the .ee suffix. Those files are not covered by the Sustainable Use License and require a valid Enterprise License. Confirm with n8n, in writing, which features your intended use requires and whether your internal use case fits the license terms. Ask for the current terms rather than relying on a summary, because licensing and edition boundaries change between releases.
High availability also has a database layer that n8n does not manage. PostgreSQL supports hot standbys and synchronous or asynchronous replication, but it does not provide software to detect a primary failure and promote a standby. Automatic failover therefore needs external tooling, which is a separate design and support decision with its own owner, testing and runbooks. Plan who operates that tooling, how it fails over Redis, and how you will test a failover before go-live.
Questions buyers ask before moving to queue mode
What drives the cost and effort of moving n8n to queue mode?
The main drivers are the infrastructure you run and the operator time you spend on it. Queue mode adds Redis as the broker, a PostgreSQL database that every main, worker and webhook processor shares, object storage such as S3 for binary data if your workflows handle files, and one or more worker hosts. Most of that infrastructure recurs as cloud or data center spend, while design, cutover and testing are largely one-time work. Effort rises with the number of workers, the amount of binary data, how many environments you run, and how much monitoring you want around Redis and the database. Ask any provider to split its quote into one-time build work and recurring operations work, and to name the hosting components it assumes you already have.
Can our team move n8n to queue mode without outside help?
Yes, if your team already runs Linux services, PostgreSQL and Redis in production and can manage secrets across several hosts. The steps are not exotic, but they touch the database, the message broker, the network path to the webhook processors and the credential encryption key, which must be shared with every worker and webhook processor. Teams without that experience usually take longer and make more configuration mistakes at cutover. An outside partner can plan, implement, document and test the change inside your own infrastructure under a fixed scope, or support you with a retainer afterward. Whichever route you choose, confirm who owns the on-call runbook.
How long does a move to queue mode take?
The timeline depends on scope and environment, so no fixed duration applies to every team. The factors that matter most are how many workflows and credentials you must validate, whether PostgreSQL is already in place or must be provisioned, whether binary data needs an S3 target, your change windows, and how many environments (development, test, production) must be moved in order. A team with an existing PostgreSQL cluster and a small workflow estate will generally move faster than one starting from SQLite. Ask for a written plan with milestones, a testing phase and a rollback step, and check that each milestone has an agreed acceptance point.
What skills and access does the team need for queue mode?
Plan for four skill areas: Redis operation, PostgreSQL administration, Linux host management and secrets handling. Redis carries the queue of pending executions, so someone must understand its persistence and access settings. PostgreSQL holds the workflow data that workers read and write, and n8n does not support SQLite for a distributed setup, so the database becomes a shared dependency. On Linux you need service management, network rules between main, workers and webhook processors, and a secure path for the N8N_ENCRYPTION_KEY value. Confirm who holds backups, how restores are tested, and how the key is rotated without breaking credentials.
Does multi-main high availability require an n8n Enterprise license?
Yes. According to the n8n queue mode documentation, the multi-main setup that provides high availability with a leader and followers requires PostgreSQL and Redis and needs an Enterprise license when self-hosted. It is not available in the Community edition or on n8n Cloud. Standard queue mode with a main instance, Redis and separate workers does not carry that restriction, so you can scale workers without a paid license. Confirm current edition terms on n8n's pricing page before you commit, because edition details can change.
What should we ask for in a written scope for queue mode?
Ask for a scope that names each component and who operates it: the main instance, webhook processors, workers, Redis, PostgreSQL, S3 storage for binary data and the network path between them. Require an inventory of workflows and credentials, a plan for sharing the encryption key securely, a load and failover test description, a cutover and rollback plan, and handover documentation. Ask which items are one-time and which recur, what support is included after go-live, and what happens if n8n releases a new major line. Confirm what the price covers and what requires a separate retainer. DeployOpen provides fixed-scope engagements with scope, deliverables and timelines agreed in writing before work starts, and ongoing support as a retainer.
What to confirm with n8n and your own environment
This sequence turns the queue mode decision into a checked list of licensing, database, Redis, binary data and network facts for your own n8n release and infrastructure. It ends with a written record that your team and any implementation partner can review before a scaling change is built.
Confirm the n8n license and edition for your use
Start by reading the current n8n license file and pricing page against your intended use, because internal business use is covered by the Sustainable Use License while files with .ee in their name require an n8n Enterprise License. Ask n8n in writing which features you need, including multi-main high availability, which is restricted to Enterprise self-hosted deployments and is not available on n8n Cloud. You are done when a named owner has a written answer for each feature on your list, dated and filed with the architecture record.
Match the PostgreSQL version to your n8n release
Check the n8n release you plan to run against the n8n documentation and confirm which PostgreSQL major versions it supports, since queue mode requires PostgreSQL rather than SQLite. Compare that list with the PostgreSQL versioning policy so you know which major versions are still within their support window for your planned operating period. You are done when the chosen PostgreSQL version, its end-of-support date and the n8n release are recorded together, and the team has confirmed that SQLite will not be used for any distributed component.
Verify Redis hosting and failover behavior
Confirm where Redis will run, whether it is managed or self-operated, and how it fails over, because Redis holds the queue of pending executions and n8n needs access to it from the main instance and every worker. Ask your platform team how a Redis failure affects in-flight and pending executions, and whether your recovery procedure has been tested. You are done when you have a diagram showing Redis reachability from each n8n process and a written failover runbook signed off by the operations owner.
Decide where binary data will live
Confirm that your queue mode design will not rely on filesystem storage for binary data, because n8n does not support queue mode with filesystem binary data and its queue mode documentation points to S3 external storage. Ask the storage team whether the S3 service you plan to use is compatible with the S3 interface n8n needs, and who holds the access keys and lifecycle rules. You are done when the storage target, the access model and the retention rule for binary data are documented and tested with a sample workflow that handles a file.
Map network placement for main and webhook processors
Document which subnet the main instance, each worker, and any webhook processor will sit in, and which of them must accept inbound traffic from the internet or partner systems. The n8n documentation advises against adding the main process to the load balancer pool, so the webhook processors should be the only n8n processes exposed to incoming requests. You are done when a network diagram shows the allowed flows between processes, Redis, PostgreSQL and storage, and the security team has reviewed the firewall rules.
Configure the load balancer and encryption key sharing
Set the load balancer so that it routes webhook traffic only to webhook processors, and confirm that the encryption key from the main instance is shared securely with every worker and webhook processor, since they need it to read stored credentials. Store the key in your approved secrets system and check that its rotation plan covers all processes at once. You are done when a test request reaches a webhook processor, a test execution runs on a worker, and the key distribution method is recorded in your change log.
Test worker concurrency against the connection pool
Set worker concurrency with the n8n queue mode guidance in mind: the default is 10, and the documentation recommends a value of 5 or higher because low values with many workers can exhaust the database connection pool. Run a load test that matches your expected execution volume and watch PostgreSQL connection counts during the test. You are done when the test results, the chosen concurrency value and the connection pool limits are recorded and approved by the database owner.
Get the decision and the open items in writing
Collect the answers from the earlier steps into a single record that lists each confirmed fact, its source, its date and the person who verified it, along with any open questions for n8n or your vendors. Share the record with your architecture review and any implementation partner so the scope of a queue mode change is agreed before work starts. You are done when the record is approved and every open item has a named owner.
How DeployOpen scopes and runs an n8n deployment change
DeployOpen plans, implements, hardens, documents and supports self-hosted open-source platforms inside the client's own infrastructure, so an n8n move from regular mode to queue mode is handled as a written, fixed-scope change to your environment. The work starts with the existing instance, its database and its binary data handling, and only then defines the Redis, worker and webhook layout.
How we scope
- Inventory the current regular-mode instance, its database, execution volume and webhook traffic before proposing any topology.
- Confirm the target database is PostgreSQL, since queue mode is not supported over SQLite, and record the version you intend to run.
- Agree in writing whether binary data moves to S3-compatible external storage, because filesystem binary storage does not work in queue mode.
How we build
- Deploy the main instance, Redis, worker processes and any webhook processors inside your own cloud accounts, data centers or air-gapped network.
- Share the encryption key with every worker and webhook processor node so stored credentials remain readable, and document where that key is held.
- Tune worker concurrency against the database connection pool, testing values around the documented recommendation of 5 or higher rather than guessing.
How we hand over
- Deliver a runbook covering scaling steps, restart order, key rotation and what each node is responsible for during an incident.
- Document backup and restore procedures for PostgreSQL and the external binary store, and test a restore before handover is signed off.
- Confirm with n8n whether any high availability design, such as multi-main, requires an Enterprise license, and record that decision in the handover pack.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer after the fixed-scope change is complete.
- Track n8n release lines and PostgreSQL minor releases, and plan upgrades in the written scope rather than as unplanned work.
- Re-test queue topology after material changes in workflow volume, new webhook sources or added worker nodes.

