Convert a list to CSV

Paste one item per line and get CSV back in either shape: one-per-line (vertical column) or joined into a single CSV row. Values that contain the separator, a double quote, or a tab are auto-quoted using standard RFC 4180 doubling. The tool is line-based, so each input line is one cell; newlines inside a cell are not supported from paste.

Input
Ready
Output
Live

One tool, two CSV shapes

This tool emits CSV in one of two shapes, chosen by the Shape option. Single row joins every item with your separator on one line - ideal for a single CSV row you want to paste into a cell or pass as a parameter. One per line emits every item as its own line - ideal when each item is really its own row and the CSV will be opened in Excel, Numbers, or imported into a SQL table.

Quoting follows RFC 4180. On Auto (the default), a value is quoted only when it needs to be: it contains the separator, a double quote, a tab, a pipe, or a semicolon. Embedded double quotes are escaped by doubling (`He said "hi"` becomes `"He said ""hi"""`). Always quotes every value even when unnecessary - useful when a downstream importer is strict. Never skips quoting entirely, even when a value would otherwise need it - only safe when you know your data never contains the separator. Newlines inside a cell are outside this tool's scope: the input is line-based, so each textarea line is one cell.

An optional header row can be prepended by toggling Add header row and filling in the header text. The header is emitted once at the top; it is not quoted or escaped, so type something safe (letters, digits, underscores, spaces).

How to use convert a list to csv

  1. 1Paste your list into the input panel, one value per line
  2. 2Pick the Separator - comma, semicolon, pipe, or tab
  3. 3Pick the Shape - `One per line` for a column or `Single row` to join everything onto one line
  4. 4Leave Quotes on Auto to quote only where needed, or force Always / Never
  5. 5Toggle Add header row to prepend a labelled header with the text you type
  6. 6Copy the CSV or download it as a .csv file from the output panel

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 converter actually does

Concrete behaviors - match them to your downstream consumer.

Choose the CSV shape

Shape: One per line produces a CSV column (one value per row). Shape: Single row joins all values with your separator onto a single line. Pick based on what the receiving system expects - a SQL import almost always wants one-per-line, an API parameter often wants a single row.

Four separator choices, no custom input

Comma (standard CSV), semicolon (European locales where comma is a decimal separator), pipe (ambiguity-proof for text with commas), or tab (TSV). The separator also affects quoting: a value containing the active separator is always quoted on Auto mode, even if it has no other special characters.

RFC 4180 quoting with three modes

Auto (default) quotes only when needed: the value contains the separator, a `"`, a tab, `|`, or `;`. Always quotes every value, which some strict importers require. Never emits values raw - safe only when your data provably contains none of those characters. Embedded double quotes are always escaped by doubling (`""`).

Optional labelled header row

Toggle Add header row and type the text you want in the first cell. The header is prepended as a single line - same shape as the rest of the output, but the header text is emitted literally without quoting or escaping. Keep header names alphanumeric + underscores for safety.

Runs in your browser

The conversion happens in JavaScript, locally. Nothing is sent to our servers - relevant when your list contains emails, internal IDs, PII, or anything else you would not paste into an online service.

Worked example

Default shape `One per line` and `Auto` quoting. Quoting kicks in on the 2nd and 3rd lines because they contain the separator / a double quote; embedded `"` is doubled.

Input
Apples
Pears, red
Oranges "Valencia"
Output
Apples
"Pears, red"
"Oranges ""Valencia"""

Settings reference

How each option shapes the output using the sample above.

Setting What it does Effect on the sample
Separator: comma (default) Character placed between values when Shape is Single row; also triggers Auto quoting when a value contains it No visible change on the default One-per-line shape; on Single row the three items join with commas
Shape: One per line (default) Emits every value on its own line (CSV column) Three output lines, one per item - the default output above
Shape: Single row Joins all values with the separator onto one line `Apples,"Pears, red","Oranges ""Valencia"""`
Quotes: Auto Adds quotes only when the value contains the separator, a quote, a tab, `|`, or `;` `Apples` stays bare; `Pears, red` and `Oranges "Valencia"` get quoted
Quotes: Always Wraps every value in double quotes even when unnecessary All three output lines are quoted
Add header row: on, text "Fruit" Prepends a header line before the data First output line is `Fruit`

FAQ

What is the difference between "One per line" and "Single row"?
One per line emits a CSV column - each list item becomes its own row. Single row joins all items onto one line with your separator between them. Downstream tools almost always want one-per-line for importing; APIs and URL params often want a single row.
How are quotes and commas inside my values handled?
On Auto quoting (the default), any value containing the separator, a `"`, a tab, `|`, or `;` is wrapped in double quotes. Embedded `"` characters are escaped by doubling them (`"` becomes `""`) - that is the standard RFC 4180 convention every major CSV parser understands. Note that newlines inside a value are not possible from this tool because the input is line-based - each textarea line is one cell.
When should I use the Always or Never quote modes?
Always is useful when a strict importer (some legacy tools, some ETL pipelines) requires every field to be quoted uniformly. Never skips quoting entirely - only safe when you are certain your data contains no separators, quotes, or tabs, and generally you should avoid it for CSV meant for others.
Does Add header row escape or quote the header text?
No. The header is emitted literally, one line at the top. Keep header names alphanumeric with underscores or spaces - if you put commas or quotes in the header, they will not be escaped.
Can I parse CSV back into a list?
Yes, use convert-csv-rows-into-a-list tool - it auto-detects the separator, handles quoted fields with embedded commas and newlines, and offers row/column/cells output modes.