n8n IF Node & Switch Node: Condition Config & Branch Routing

Affiliate/Ads disclaimer: Some links on this blog are affiliate/ads links to support this project going on, meaning I may earn a commission at no extra cost to you.


Published: May 9, 2026
Updated: May 8, 2026
n8n IF Node & Switch Node: Condition Config & Branch Routing
⚡ n8n Workflow Automation T3 · Branching Logic
n8n IF Node & Switch Node: Condition Config & Branch Routing

Conditional routing splits a workflow into separate paths based on data‑driven rules, and n8n provides two core nodes for this: the IF node for binary true/false decisions, and the Switch node for multi‑way routing with three or more outputs. The IF node evaluates conditions with 10 comparison operators across five data types, combined with AND/OR logic. The Switch node operates in two modes—Rules (visual builder) and Expression (code‑based)— supporting unlimited output branches with a fallback output for unmatched items [1] [2].

10
IF Comparison Operators
2
Switch Modes (Rules / Expression)
5
Data Types Supported
3+
Minimum Outcomes (Switch)

How does the n8n IF node create a true/false branching path?

The IF node evaluates a single condition or a set of conditions combined with AND/OR logic against each incoming data item, then routes it to the true branch if all conditions match, or to the false branch otherwise. It provides 10 comparison operators—equals, not equals, greater than, less than, greater/less than or equal to, contains, not contains, is empty, is not empty—across five data types. [1]

The IF node’s “Combine” field controls whether multiple conditions are joined with AND (all must match) or OR (any must match) logic. Each branch can connect to any number of subsequent nodes, enabling different processing chains for matched and unmatched items. A straightforward example: check if an invoice total exceeds $1,000; route high‑value invoices to a manager approval flow and low‑value ones directly to payment processing. For real‑world customer routing by country and name, the n8n blog’s country‑based routing tutorial provides a complete walkthrough [3]. To pair the IF node with data recombination downstream, see the core nodes guide with Merge node patterns.

What conditions, operators, and expression patterns can you use in an n8n IF node?

The IF node supports seven data types for comparison: String (equals, contains, regex, isEmpty), Number (equals, greater, less, range), Date & Time (is after, is before), Boolean (is true, is false), and Array/Object (exists, isEmpty, contains). The left operand pulls from a field, an expression like {{ $json.price }}, or a static value. [3]

Advanced patterns combine expressions and functions: for instance, {{ $json.tags.includes("urgent") ? 'high' : 'normal' }} pre‑processes a field before the IF condition evaluates it. The “Ignore Case” option (turned on by default) allows case‑insensitive string comparison; turn it off to enforce exact letter case. A common edge case arises when webhooks send empty or missing fields—the IF node may not natively recognize these as empty; using {{ $json.field || '' }} forces the value into an empty string for reliable evaluation [4]. For conditional logic that spans multiple items or requires programmatic transformation, combine IF with the Code node transformation guide.

How does the Switch node route data to three or more branches based on multiple conditions?

The Switch node evaluates multiple conditions simultaneously and routes each data item to exactly one matching output branch. You define routing rules based on a single field or expression and choose from two modes: Rules mode (visual dropdown‑based condition builder: string, number, date, boolean, array, object comparisons) and Expression mode (JavaScript expression returning the output index programmatically). [2]

In Rules mode, the node supports all five data types—String, Number, Date & Time, Boolean, and Array/Object—each with their full set of comparison operations (e.g., String supports equals, not equals, contains, begins with, ends with, regex). For date routing, select “Date & Time > is after” and supply a reference date; for numeric ranges, chain conditions in ascending order (e.g., values 1-5 then 6-10 then 11-13) with “Send data to all matching outputs” disabled to route each value into exactly one bucket [5]. A critical configuration option: Fallback Output offers three choices—None (ignore unmatched items), Extra Output (send to a separate fallback branch), or Output 0 (route to the first rule’s output). For the complete taxonomy of available data type comparisons per mode, see the official Switch node parameter documentation [6]. To understand when Switch becomes the better choice over chained IF nodes, see the trigger nodes guide for workflow activation patterns.

When should you use an IF node instead of a Switch node in n8n?

Use an IF node when the decision is strictly binary— true or false—such as checking if a field is empty, comparing a single threshold, or validating user permissions. An IF node with Combine set to AND handles 10 comparison operators perfectly for small sets of conditions, and its two output connectors make the workflow logic immediately clear for yes/no decisions. [3]

Switch to the Switch node when you have three or more distinct outcomes that all branch from the same decision point—such as routing support tickets by category (billing, technical, return), leads by country (US, UK, CO, others), or orders by status (pending, shipped, returned, cancelled). The quick rule of thumb: If you find yourself stacking three or more IF nodes in sequence to simulate multi‑way routing, a single Switch node with a fallback output will be more readable and maintainable [7]. For complex systems with many independent binary choices, bitmasking— assigning each option a power‑of‑2 value and routing on the summed number—can replace long chains of IF/Switch nodes with a single Switch node [8]. For more on designing clean, maintainable branching architectures, see SplitInBatches loop and batch processing guide.

⚡ Quick Decision Rule: Binary? Use IF (2 outputs). Three or more distinct outcomes from the same field? Use Switch (3+ outputs). Need to filter data without creating branches? Use the Filter node—it removes non‑matching items in the current branch rather than routing to separate paths [9].

How do you implement range routing and bitmasking in the Switch node?

For range routing—categorizing numeric values into buckets—configure Switch rules in ascending order (e.g., values < 5, then values <= 10, then values <= 13) with “Send data to all matching outputs” disabled. This sequential evaluation routes each value into exactly one bucket: 1–4 go to the first output, 5–10 to the second, 11–13 to the third [5].

Bitmasking is an advanced technique that replaces tangled condition mazes with a single number: assign each independent choice a power‑of‑2 value (Drink Coffee = 1, Drink Tea = 2, Food Croissant = 4). Add the values for the customer’s order; the sum is unique for every combination. A single Switch node then routes Coffee (1), Tea (2), Coffee + Croissant (5), or Everything (7) to the correct workflow branch. This scales from three choices (3 possible combinations) to N choices (2^N combinations) without adding nodes, and applies anywhere you have multiple independent flags: user permissions, feature flags, survey responses, or game states [8]. For implementing bitmasking programmatically before routing, pair it with the Code node transformation guide.

How does n8n’s branch execution order and performance work with IF and Switch nodes?

In n8n v1.0+, branches from conditional nodes execute sequentially from top to bottom on the canvas. When two branches sit at the same height, the leftmost branch executes first. You can change this order in the workflow settings. This matters when downstream nodes depend on results from a prior branch—always place the branch that must complete first above the dependent branch. [9]

For performance, the Switch node checks each rule sequentially and stops at the first match (when “Send data to all matching outputs” is off)— arrange the most frequent matches first to minimize average evaluation time. For more than 20 rules, consider using a Code node with a lookup table to reduce node overhead. The “Split → Process → Merge” pattern (branch with IF/Switch, process each path independently, then reunify with a Merge node) is the canonical design for complex workflows; use the Merge node’s Combine mode with Matching Fields for inner‑join‑style recombination [6]. For full details on the Merge node and the five join types it supports, see the core nodes guide (HTTP Request, Set, IF, Merge & Code).

Dimension IF Node Switch Node
Output Branches 2 (true, false) 3+ (unlimited, one per rule)
Condition Combination AND / OR (Combine field) Sequential first‑match (can send to all matching)
Modes Single (visual condition builder) 2: Rules (visual) + Expression (code‑based)
Fallback for Unmatched Automatic (false branch) Configurable (None / Extra Output / Output 0)
Best For Binary decisions, small condition sets Multi‑way classification, 3+ distinct outcomes
Common Pitfall Empty/missing field not recognized as empty; use {{ $json.field || '' }} Rules not in order when “Send to all” is off; arrange most frequent first

References

This guide is for informational purposes only. For the most current and authoritative information, always refer to the official n8n website (n8n.io) and the n8n documentation. Node parameters, defaults, and features may change over time.

Leave a Reply

Your email address will not be published. Required fields are marked *