> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryblend.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Utility

> Run a deterministic helper operation — extract audio from a video or compose text from a template.

The **Utility** node runs a fixed, deterministic helper: no AI model, no randomness.

You pick one operation from a dropdown, and the node's handles and settings reshape to match it. Same inputs always produce the same output, which makes Utility nodes the reliable glue between model-driven steps.

Like other processing nodes, a Utility runs once per input item group. One incoming video extracts one audio file; three batched videos make Extract Audio run three times.

If Compose Text receives lists on multiple variable handles, the combinations multiply.

## Operations

Pick the operation from the **Utility** dropdown at the top of the node's settings panel. The two available operations are:

<AccordionGroup>
  <Accordion title="Extract Audio" icon="file-audio">
    Pulls the audio track out of a video and outputs it as a standalone audio file.

    * **Input:** one video — upload it directly in the panel, or connect a video output to the **Video** handle.
    * **Output:** one MP3 audio file on the **Audio** handle.
    * **Settings:** audio **format** (MP3) and **bitrate** in kbps (32–320, default 96).
    * Videos with no audio stream fail with a clear error.
  </Accordion>

  <Accordion title="Compose Text" icon="align-left">
    Combines connected text inputs into a single text output using a reusable template.

    * Write a template and insert variables like `{{input_1}}`. Each variable you add creates its own text input handle on the left.
    * Use **Add input** to append the next variable (`input_1`, `input_2`, …) to the template automatically.
    * At run time, each variable is replaced by the text connected to its handle. The default template is `{{input_1}}\n{{input_2}}`.
    * **Output:** the composed string on the **Text** handle.
  </Accordion>
</AccordionGroup>

## Inputs

Inputs depend on the selected operation.

**Extract Audio**

| Handle | Type    | Required | Notes                                                          |
| ------ | ------- | -------- | -------------------------------------------------------------- |
| Video  | `video` | Yes      | One video file. Upload in the panel or connect a video output. |

**Compose Text**

| Handle                  | Type   | Required | Notes                                                                                         |
| ----------------------- | ------ | -------- | --------------------------------------------------------------------------------------------- |
| `input_1`, `input_2`, … | `text` | No       | One handle per `{{variable}}` in the template. Add or remove variables to change the handles. |

## Outputs

| Operation     | Handle | Type    | Notes                                         |
| ------------- | ------ | ------- | --------------------------------------------- |
| Extract Audio | Audio  | `audio` | One MP3 file at the configured bitrate.       |
| Compose Text  | Text   | `text`  | The template with every variable substituted. |

## Settings

| Operation     | Setting      | Notes                                                                                       |
| ------------- | ------------ | ------------------------------------------------------------------------------------------- |
| Both          | Utility      | Choose the operation. Switching it resets the node's settings and handles.                  |
| Extract Audio | Audio format | MP3 — keeps the file small and broadly compatible.                                          |
| Extract Audio | Bitrate      | Target audio bitrate in kbps. Allowed range 32–320 (default 96).                            |
| Compose Text  | Template     | The text to output, with `{{input_1}}`-style variables. **Add input** appends the next one. |

## When to use

* **Extract Audio** — feed a video's soundtrack into a transcription or audio model, or output the audio on its own.
* **Compose Text** — merge several text streams (prompts, model outputs, captions) into one block with fixed wording around them, without spending a model call.

## Connects to

* **Extract Audio**: upstream a video source (an Input or model node); downstream a transcription model, audio model, or User Result node.
* **Compose Text**: upstream any text-producing nodes into each variable handle; downstream a model prompt or a User Result node.

For the exact fan-out rules, see [Lists & single values](/concepts/lists-and-values).

<Note>
  **Extract Audio** runs on the server and supports the node's standalone Run action. **Compose Text** is resolved locally as part of the graph and does not support a single-node run.
</Note>

## Next steps

<CardGroup cols={2}>
  <Card title="Workflow overview" icon="diagram-project" href="/workflow/overview">
    How nodes, handles, and connections fit together.
  </Card>

  <Card title="User Result node" icon="flag-checkered" href="/workflow/nodes/result">
    Capture a utility's output as a workflow result.
  </Card>
</CardGroup>
