Turn CSV rows into a clean list of lines
Convert CSV rows to a list when you need the data out of its grid and into something easy to scan, paste, or feed into the next tool. Drop a spreadsheet export, database dump, or report into the input, and each row becomes a clean line in the output.
The parser handles the messy stuff that breaks naive splits: quoted fields, commas inside values, escaped double quotes, and rows that span multiple lines. Auto-detect figures out whether the file is comma, semicolon, pipe, or tab-separated.
Everything runs in your browser via JavaScript. Your data never leaves the tab and there is no sign-up. Input size is only limited by your browser and device memory, not by an upload step.
Need a different shape? The Output option also supports First column only (when you just want one column worth of values) and Flatten every cell (when you want every value on its own line).
How to use convert csv rows to a list
- 1Paste your CSV into the input panel. You can copy straight from Excel, Google Sheets, or a .csv file in your editor.
- 2Pick an Output shape: one row per line (default), first column only, or flatten every cell.
- 3Leave Separator on Auto-detect, or pick the right one manually if your data has lots of embedded delimiters.
- 4Turn on Skip header row if the first line is column names you do not want in the output. Toggle Trim and Dedupe for extra cleanup.
- 5Copy the result, or hit Download to save the output as a plain text file.
Keyboard shortcuts
Drive ListShift without touching the mouse.
What CSV rows to a list lets you do
Five row-level jobs this tool shortens from a half-hour to a paste and a click.
Turn a subscriber export into a readable contact list
Paste a full CSV from Mailchimp, Klaviyo, or your CRM. Each row becomes one line containing that contact's fields, joined with the separator of your choice. Skip header row drops the column names so only the actual people end up in the list.
Build a status summary from a Jira or Asana export
Exported tickets from most trackers come out as CSV with ticket number, title, owner, status, and due date per row. One paste and every ticket is on its own line, ready to drop into a standup note, a weekly email, or a stakeholder update.
Clean up a pipe or tab-delimited log
Nginx access logs, Postgres psql output, and most CLI tools dump pipe-separated or tab-separated text, not real CSV. Auto-detect picks up the delimiter from the character frequency, so you do not have to pre-process the file or teach the tool what it is looking at.
Strip a header row from a 10,000-line export
Skip header row drops the first line in a single toggle, even on a file with 10,000 data rows behind it. No text editor macro, no sed one-liner, no awkward "delete row 1" in Excel. Toggle, paste into the next tool, done.
Remove duplicate rows from a transaction or event log
Ops exports double up all the time - an ETL retry, two syncs into the same file, a copy-paste gone wrong. Enable Dedupe and every identical row collapses into a single line, without having to sort the file in Excel first.
Worked example
A three-column CSV with a quoted field containing a comma, one row per line in the output.
name,email,city alice,[email protected],London bob,[email protected],Berlin carol,"carol, m.",Paris
name | email | city alice | [email protected] | London bob | [email protected] | Berlin carol | carol, m. | Paris
Settings reference
How each option changes the output, with the sample CSV above as the input.
| Setting | What it does | Effect on the sample |
|---|---|---|
| Row join: " | " (default) | Joins each row's cells with " | " | Gives "alice | [email protected] | London" |
| Row join: custom | Any separator you type (e.g. " - " or " / "). Cells containing the separator are quoted. | Stays unambiguous even with commas inside cells |
| Separator: Auto | Detects comma, semicolon, pipe, or tab from the input | Picks "," for this sample |
| Separator: Tab | Forces tab as the delimiter even if the input has commas | Each row is kept intact as a single item |
| Skip header: on | Drops the first row of the CSV | Removes the "name, email, city" header line |
| Trim: on | Strips leading and trailing whitespace from every cell | Handles pasted CSVs with ragged spacing cleanly |
| Skip empty: on | Filters any line that parses to an empty string | Drops blank rows from the output |
| Dedupe: on | Keeps one copy of each unique line of output | Repeated rows appear only once |
| Output: First column only | Keeps the first cell of each row and drops the rest | Gives "name / alice / bob / carol" |
| Output: Flatten every cell | Emits every cell as its own list item | Gives "name / email / city / alice..." etc. |