# List

> Type or paste a list of prompts, or build a table with several columns, and every connected node runs once per row. The List node itself is free.

Source: https://nodaro.ai/docs/nodes/automate/list

The **List** node holds a list of values, and every node connected to it runs once per row. Type or paste one prompt per row to make a batch of images, videos or voice-overs in a single run. The List node makes no model call and costs no credits.

- Found in: Automate › Lists & Batching
- Output: data
- API type: `list`

## When to use it
- You have 10 prompts and want one image for each of them.
- You want to run the same video workflow for several subjects or products.
- You want a voice-over for every line of a script, with [Text to Speech](https://nodaro.ai/docs/nodes/audio/text-to-speech).
- You need more than one value per run, such as a prompt and a reference picture for each video. Grow the list into a table with one column per value.

## Quick start
### Add the node

Press Tab on the canvas and choose **Automate › Lists & Batching › List**.

### Add the rows

Open the settings panel and type one value per row. Click **Add Row**, or press Enter, to add the next row. Drag a row by its handle to move it.

### Connect it

Drag from the List's output to the input that should change on every run, for example the **Prompt** input of [Generate Image](https://nodaro.ai/docs/nodes/image/generate-image). A connection that leaves a List is set to **Each**, which runs the next node once per row.

### Run it

Click **Run**. The connected node runs once for each row, from the top row to the bottom row, and keeps one result per row.

Workflow: A List of three prompts runs Generate Image three times, and Choose Best keeps the strongest of the three images.

- List → Generate Image (prompt · Each)
- Generate Image → Choose Best (candidates)

## Inputs and outputs
| Input or output | What it does |
| --- | --- |
| **+** (bottom left) | Connect any node here to add a new column that takes its values from that node. Each connection adds one typed column. |
| Column inputs | Every column has its own input on the left. A column with a connection shows the values the upstream node produces. |
| Column outputs | Every column has its own output on the right. In a one-column list, the output sends the items to the next node one by one. |

## Settings
The settings panel has two tabs. **Configure** holds the rows and the options below. **Data** shows the rows exactly as they will run, including values that come from connected nodes.

| Setting | What it does |
| --- | --- |
| **List** or **Table** | The rows. The panel shows the one-column **List** editor, and switches to the **Table** editor once the node has more than one column. |
| Column type | Each column is **Text**, **Image**, **Video**, **Audio** or **JSON**. Set it to match the content: a media cell shows a thumbnail or a player, and the column's input and output accept that type. |
| **Add Column** | Adds a text column. It appears in the **Table** editor. |
| Delimiter and **Split** | On a text column, choose **Comma**, **Pipe**, **Semicolon**, **Newline**, **Three Stars (\*\*\*)** or **Custom**, then click **Split** to turn each cell into several rows. Pasting text that contains the chosen delimiter into a cell splits it the same way. |
| **View mode** | How the node looks on the canvas: **List (rows)**, **Gallery (grid)** or **Packed (fit all)**. The node picks one from the column types until you choose. |
| **Items per row** | In **Gallery (grid)**, the number of items in each row, from 1 to 6. The default is 3. |
| **Text max lines** | How many lines each text item shows on the node, from 1 to 20. The default is 3. |
| **Font size** | **Small**, **Medium** or **Large**. The default is **Medium**. |

On the canvas, the small table button under the node switches between a short summary, such as "3 rows × 2 cols", and the full table or gallery. A table with pictures, videos or audio opens in the full view. The button only changes the display and never runs anything.

### When the List is an app input

When you publish the workflow as an [app](https://nodaro.ai/docs/concepts/apps), the people who use the app can add and remove rows themselves. Three settings under **Presentation / App mode** control that:

| Setting | What it does |
| --- | --- |
| **Max items** | The most rows an app user can add, from 1 to 20. The default is 10. |
| **Min rows to run** | The app's **Run** button stays disabled until the user adds this many rows. 0 means no minimum. |
| **Default rows** | How many empty rows the app shows when it first loads. The default is 1. |

## Grow a list into a table

One column is enough when only the prompt changes. When each run needs a second value, add a column:

1. Connect a node to the **+** input at the bottom left of the List. A new column appears, typed to match that node.
2. Set each column's type in the settings panel, for example **Image** for a column of reference pictures.
3. Wire each column's output into a different input of the next node, for example one column into **Prompt** and one into **Negative**.

## How rows pair up

When two or more columns feed the same node, the node runs once per row, and every input gets its value from that row.

- **Row 3 always stays row 3.** An empty cell gives its input nothing for that run. The empty cell never pulls the rows below it up.
- **A row runs when any cell has a value.** A row that is empty in every column is ignored, so the blank row at the bottom of the table never adds a run.
- **The order of your connections does not matter.** The column wired to the **Prompt** input supplies the prompt. A column wired to **Negative** or to another side input is never used as the prompt.
- **A row's prompt replaces the typed prompt.** The value from the row replaces the prompt typed on the next node; it is not added to it. When the row's prompt cell is empty, the typed prompt is used.
- **Repeat repeats the row.** With **Repeat** set to 2 on the next node, each row runs twice with the same values.

Lists with a different number of rows are not paired row by row. The longer list sets the number of runs, and the shorter list starts again from its first row when it runs out. The same happens when only one of two column connections has an item or range filter on it, because the filter changes that connection's row count.

Only a connection in **Each** mode runs the next node once per row. A connection set to **Bundle** passes the whole list in a single run. Read [Lists and batching](https://nodaro.ai/docs/concepts/lists-and-batching) for every connection mode.

## Credits
The List node is free. Every node that runs once per row is charged once per row. The cost of a batch is the node's price multiplied by the number of rows. The credit estimate on the next node already includes this multiplication, so check it before a large run.

## List, Collect or Choose Best

- **List spreads work out.** One source of rows, and the next node runs once for each row.
- **[Collect](https://nodaro.ai/docs/nodes/automate/collect) gathers results in.** Several separate nodes wire into it, and it hands their results on together.
- **[Choose Best](https://nodaro.ai/docs/nodes/automate/choose-best) decides.** It turns many results into one, for example the best image of the batch.

The three chain into a common pattern: spread with List, gather with Collect or directly, and decide with Choose Best.

## Tips
- **One idea per row.** Each row should be a complete prompt or value that works on its own.
- **Add a column only when you need it.** A second column is useful when a second input changes per run. Otherwise, keep one column.
- **Type every column.** A column typed **Image**, **Video** or **Audio** shows its media and connects to the right inputs.
- **Split large batches.** Rows run one after another, so a long list takes longer to finish. Several smaller lists are easier to check.
- **Old Table nodes.** A saved workflow with a Table node opens it as a List, with the same columns and rows.

## Frequently asked questions

### How do I generate one image per prompt in Nodaro?

Add a List node, type one prompt per row, and connect it to the Prompt input of Generate Image. The connection is set to Each, so Generate Image runs once per row and keeps one result per row.

### Does the List node cost credits?

No. The List node makes no model call and is free. You pay for the nodes that run once per row, so 10 rows into a node that costs 20 credits per run cost 200 credits.

### How do I change two values per run, such as the prompt and the negative prompt?

Grow the list into a table. Connect a node to the + input at the bottom left of the List to add a column. Then wire each column into its own input of the next node. Every run takes all its values from the same row.

### What happens when a row has an empty cell?

The row keeps its place, and the input fed by that column gets nothing for that run. A row that is empty in every column does not run at all.

### What happened to the Table node?

The Table node was merged into List. A saved workflow that contains a Table node opens it as a List and keeps working without changes.
