Parse CSV
Parses a CSV string or file into an array of row objects, making each column accessible by name in downstream expressions.
Properties
| Property | Required | Description |
|---|---|---|
| CSV Input | Yes | The CSV data to parse. Accepts a string expression or a file reference from a File Upload or HTTP Request node. Supports expressions |
| Delimiter | No | Single-character column separator. Defaults to , |
| First Row is Header | No | Whether the first row contains column names. Defaults to Yes |
Output
| Field | Type | Description |
|---|---|---|
rows | Array or File | Parsed rows. See Large files below |
count | Number | Total number of parsed rows |
Access the output in downstream nodes:
{{ $nodes['Parse CSV'].count }}
{{ $nodes['Parse CSV'].rows[0].email }}
Replace Parse CSV with the actual name you gave the node.
Behaviour
- If First Row is Header is Yes (default), each row becomes an object where the keys are the column headers from the first row.
- If First Row is Header is No, each row is an array of values indexed by position.
- An empty or whitespace-only input produces
rows: []andcount: 0without failing. - If the data cannot be parsed the node fails.
Large files
When the input is a file reference (a BinaryRef from a File Upload or HTTP Request node), Parse CSV streams the content directly from storage rather than loading it into memory. The parsed rows are written to a temporary file in JSONL format (one JSON object per line) and rows in the output becomes a file reference rather than an in-memory array.
This file reference can be passed directly to a Loop or Transform node — both automatically detect the JSONL format and process the data row-by-row without materialising the full dataset in memory. This makes it practical to process files of hundreds of megabytes or more.
Parse CSV → Loop (Items: {{ $nodes['Parse CSV'].rows }}) → body branch per row
Example: process a large CSV from storage
- Add a File Upload node set to the Load operation. Point it at the CSV file reference.
- Add a Parse CSV node. Set CSV Input to
{{ $nodes['File Upload'].output }}. - Connect a Loop node. Set Items to
{{ $nodes['Parse CSV'].rows }}. - Inside the loop body, reference columns with
{{ $nodes['My Loop'].currentItem.columnName }}.
Notes
- Column names are taken verbatim from the header row, including spaces and casing. Use bracket notation in expressions if a name contains spaces:
$nodes['Parse CSV'].rows[0]['First Name']. - For tab-separated files, set Delimiter to
\t(a literal tab character). - When parsing a string input directly, all rows are held in memory. For large files, prefer passing a file reference.