> For the complete documentation index, see [llms.txt](https://docs.midio.com/midio-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.midio.com/midio-docs/guides/loops.md).

# Branching

Branching allows your flows to make decisions based on conditions, directing execution along different paths depending on the given input. The **`If`** node is commonly used for this purpose, allowing you to define logic where execution follows one path if a condition is met and another if it is not.

<figure><img src="/files/KjPB7lT5bqhBLiPNVIGv" alt=""><figcaption></figcaption></figure>

1. **Generating a Value:** In the example above, the `Random` node produces a number between `0` and `10`, which is sent to the `If` node.
2. **Evaluating a Condition:** The `If` node checks if the value is greater than `5` using the `predicate` input.
3. **Branching Execution:** If true, execution follows the `then` path; if false, it follows the `else` path.
4. **Logging the Result:** One of the `Log` nodes prints either **“Value is large”** or **“Value is small”** based on the condition.

There are several other branching nodes, wich support various use-cases:

* [**Std Switch**](/midio-docs/built-in-nodes/core-std.md#switch) **- is used to select one of two values based in two potentially incoming paths**
* [**Std OrElse**](/midio-docs/built-in-nodes/core-std.md#orelse) **- is used to select a fallback value when you have a value which can potentially be null.**
* [**Std Match**](/midio-docs/built-in-nodes/core-std.md#match) **- is used to create an arbitrary number of branches based on a list of potential values.**
* [**Std Fork**](/midio-docs/built-in-nodes/core-std.md#fork)**/**[**Std FanOutRange**](/midio-docs/built-in-nodes/core-std.md#fanoutrange)**/**[**Std FanOutList**](/midio-docs/built-in-nodes/core-std.md#fanoutlist) **- these nodes can be used to fork a flow into multiple independenc processes, which execute concurrently and can be joined together again using Std Join and** [**Std JoinAll**](/midio-docs/built-in-nodes/core-std.md#joinall)**.**
