# 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="https://1896308808-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FRdFpuRAnTVYgmlCXLLou%2Fuploads%2FOKbsC490hWvgWhU5YW3U%2Fimage.png?alt=media&#x26;token=8a7df67f-6ed6-4053-89d1-b04d8d3ebaea" 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**](https://docs.midio.com/midio-docs/built-in-nodes/core-std#switch) **- is used to select one of two values based in two potentially incoming paths**
* [**Std OrElse**](https://docs.midio.com/midio-docs/built-in-nodes/core-std#orelse) **- is used to select a fallback value when you have a value which can potentially be null.**
* [**Std Match**](https://docs.midio.com/midio-docs/built-in-nodes/core-std#match) **- is used to create an arbitrary number of branches based on a list of potential values.**
* [**Std Fork**](https://docs.midio.com/midio-docs/built-in-nodes/core-std#fork)**/**[**Std FanOutRange**](https://docs.midio.com/midio-docs/built-in-nodes/core-std#fanoutrange)**/**[**Std FanOutList**](https://docs.midio.com/midio-docs/built-in-nodes/core-std#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**](https://docs.midio.com/midio-docs/built-in-nodes/core-std#joinall)**.**
