Convert CSV columns to a list

Paste CSV and get every cell on its own line - left to right, top to bottom. Auto-detects the separator (`,`, `;`, `|`, or tab); override from the dropdown if your data is ambiguous. For one row per line instead of one cell per line, use Convert CSV rows into a list.

Input
Ready
Output
Live

Every cell on its own line

The parser handles the gnarly bits that break plain string-splitters: quoted fields with commas inside them, doubled quotes as an escape (`""`), and cell values that span multiple lines. After parsing, cells come out one per line in reading order - row 1 left to right, then row 2, and so on.

Auto-detect picks whichever of `,`, `;`, `|`, or tab occurs most often across the input. That works well for clean CSV but can mis-guess when commas appear inside quoted text and pipes between columns; if your separator is visible to you and not to the tool, pick it from the dropdown. Skip header row drops the first parsed row before flattening, useful for labeled CSVs where row 1 is column names.

Trim strips leading / trailing whitespace per cell after parsing. Dedupe removes duplicate cells in first-occurrence order. Both run after the parse so they see clean field values, not raw CSV characters.

How to use convert csv columns to a list

  1. 1Paste CSV into the input panel - commas, semicolons, pipes, or tabs all work
  2. 2Output updates live - every cell becomes one line, left to right then top to bottom
  3. 3Toggle Skip header row if your first line is column labels you do not want in the output
  4. 4Leave Trim on to strip the spaces that creep in around `,` separators (e.g. `, 30` becomes `30`)
  5. 5Turn on Dedupe if the same cell value appears in multiple columns and you only want it once

Keyboard shortcuts

Drive ListShift without touching the mouse.

Shortcut Action
Ctrl ZUndo last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor
EscExit fullscreen
Ctrl KOpen the command palette to jump to any tool
Ctrl SSave current pipeline draft Plus
Ctrl PRun a saved pipeline Plus

What this flattener actually does

Parses CSV properly, then puts every cell on its own line. Four toggles for headers, separator, trimming, and dedupe.

Handles quoted fields, escaped quotes, and multi-line cells

A value like `"Smith, John"` stays as one cell (the comma inside the quotes is part of the name, not a separator). Doubled quotes (`""`) inside a quoted field parse as a single `"` in the output. A cell value that spans multiple lines - with a newline between a pair of quotes - is preserved as one cell. All three break a plain `split(",")`; this parser handles them.

One line per cell, in reading order

After parsing, cells come out left to right then top to bottom - row 1 first, then row 2, and so on. If you want one row per line (with a joiner between cells) instead, that is Convert CSV rows into a list.

Auto-detect or pick a separator

Auto-detect picks whichever of `,`, `;`, `|`, or tab appears most often across the input. If your data mixes separators (e.g. commas inside values, pipes between columns), pick the real separator from the dropdown so the parser does not guess wrong.

Skip header row, trim, dedupe

`Skip header row` drops the first parsed row before flattening - the right setting for labeled CSVs where row 1 is `Name,Age,Location`. `Trim` strips leading and trailing whitespace from each cell after parsing, so `, 30` becomes `30`. `Dedupe` removes repeated cell values in first-occurrence order.

Runs entirely in your browser

Parsing happens client-side - your CSV never leaves the tab. Matters when it contains customer data, internal IDs, or anything else you would not paste to a random server.

Common use cases

Concrete scenarios where flattening CSV columns beats opening a spreadsheet.

Spreadsheet to one-per-line

You exported a sheet to CSV and want every cell as one line - for a quick scan, a diff against another list, or to feed into a tool that expects one item per line. Paste, leave defaults, done.

Pulling values out of a labeled CSV

Your CSV has a header row you do not want in the output (`Name,Age,Location`). Toggle Skip header row and only the data cells come through.

Deduping across columns

You have a CSV where the same email or ID might appear in several columns (e.g. `primary_email`, `backup_email`). Flatten to cells, toggle Dedupe, and you get a clean unique list.

Worked example

Every cell becomes a line. Trim strips the spaces after each comma. With Skip header row off (default), `Name`, `Age`, `Location` stay in the output.

Input
Name, Age, Location
John, 30, New York
Jane, 25, Los Angeles
Output
Name
Age
Location
John
30
New York
Jane
25
Los Angeles

Settings reference

How each option changes the output, with the sample above as input.

Setting What it does Effect on the sample
Separator: auto (default) Picks the most common of `,`, `;`, `|`, tab Detects `,` - output unchanged
Separator: comma Forces `,` as the field separator regardless of what auto-detect would pick Same result as auto for this input
Skip header row: on Drops the first parsed row before flattening Removes `Name`, `Age`, `Location` - output starts at `John`
Trim: on (default) Strips leading and trailing whitespace on each cell Turns `, 30` into `30` (no leading space in output)
Trim: off Preserves whitespace around field values exactly as in the source `Age`, ` 30`, ` New York` keep their leading spaces
Dedupe: on Keeps first occurrence of each cell, drops later repeats No duplicate cells in this sample - output unchanged

FAQ

What is the difference between this and Convert CSV rows into a list?
This one flattens every cell to its own line (row 1 cells, then row 2 cells). Convert CSV rows into a list gives you one row per line, with a joiner (default `|`) between the cells. Same parser, different output shape.
Why is the header row in my output?
Skip header row is off by default - the parser cannot know whether your first row is labels or data. If row 1 is `Name,Age,Location` and you want only values, toggle Skip header row on.
My CSV has commas inside quoted fields. Will the parser handle that?
Yes. `"Smith, John"` stays as a single cell, `""` inside a quoted field parses as a literal `"`, and a newline inside a quoted field is preserved as part of the cell value. This is full CSV parsing, not a naive string split.
The separator is being detected wrong. How do I override it?
Pick the real separator from the dropdown (`,`, `;`, `|`, or tab). Auto-detect picks the character that occurs most often - if your data has commas inside values but pipes between columns, auto-detect can guess wrong.
What does Trim do exactly?
Strips leading and trailing whitespace from each parsed cell. Useful for CSVs written with `", "` between fields (the space after the comma becomes a leading space on the next cell unless you trim). It does not touch whitespace inside a cell value - only the edges.