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
- 1Paste CSV into the input panel - commas, semicolons, pipes, or tabs all work
- 2Output updates live - every cell becomes one line, left to right then top to bottom
- 3Toggle Skip header row if your first line is column labels you do not want in the output
- 4Leave Trim on to strip the spaces that creep in around `,` separators (e.g. `, 30` becomes `30`)
- 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.
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.
Name, Age, Location John, 30, New York Jane, 25, Los Angeles
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 |