CSV delimiters

CSV delimiters: comma, semicolon, tab or pipe, and how to change them

RFC 4180 separates CSV fields with commas, but many files use one of 3 common alternatives instead: semicolon, tab or pipe. rows.page detects all 4 and exports a comma-delimited CSV in your browser, free with no signup, for files up to 1.5 GB.

.csv.tsv
Drop a file here
Stays in your browserUp to 1.5 GB

No file handy? Open CO2 emissions by country and year (50k rows, 14 MB).

What is a CSV delimiter?

A delimiter is the character that separates one field from the next on each line. RFC 4180 uses commas and wraps a field in double quotes when it contains a comma, a double quote or a line break, writing a quote inside a quoted field as "".

Many .csv files use another character. Excel on Windows writes CSV with the Windows Region list separator, which is usually a semicolon where the decimal symbol is a comma, so a price like 12,50 stays one field. Other tools write tab- or pipe-separated text and still call it .csv.

Common CSV delimiters
DelimiterCharacterWhere you see itDetected by rows.page
Comma,Defined by RFC 4180Yes
Semicolon;Excel on Windows where the decimal symbol is a commaYes
Tab\t.tsv and .tab files, and cells copied from Excel or Google SheetsYes
Pipe|Exports whose text often contains commas and semicolonsYes

How do you tell which delimiter a CSV file uses?

  • If a spreadsheet puts each whole line in column A, it split the file on the wrong character.
  • Open the file in a text editor and look at the header row: the character between every column name is the delimiter.
  • Watch the quotes: in "Smith, John";42;Paris the comma sits inside a quoted field, so the delimiter is the semicolon.
  • Or drop the file on rows.page, which detects comma, semicolon, tab or pipe and the header row, and shows the columns split in a grid.

How do you change a CSV delimiter to a comma?

rows.page

  1. Drop the file on rows.page, or click Paste data and paste the text. .csv and .txt files open as CSV, .tsv and .tab files as TSV.
  2. Check the grid and the Columns panel to confirm the header row and the column types.
  3. Open Export and pick CSV.

You get a comma-delimited UTF-8 file with a header row and no BOM, and fields that contain commas are wrapped in double quotes. Export writes the current view, so filters, sorting, hidden columns or a SQL query apply, and cells that start with =, +, -, @, a tab or a carriage return get a leading apostrophe so spreadsheets don't run them as formulas.

rows.page has no delimiter, encoding or BOM setting, so it can't write semicolon or pipe files. DuckDB-WASM reads the file in your browser, and nothing is uploaded unless you press Share.

DuckDB

For files over the 1.5 GB browser limit, or inside a script, use DuckDB:

sql
COPY (SELECT * FROM read_csv('in.csv', delim = ';')) TO 'out.csv' (HEADER, DELIMITER ',');

Add decimal_separator = ',' inside read_csv to turn 12,50 into the number 12.5. To write semicolons instead, swap the characters: delim = ',' in read_csv and DELIMITER ';' at the end.

How do you change the CSV delimiter in Excel?

Open a file that uses another delimiter

Instead of double-clicking the file, go to Data > Get Data > From File > From Text/CSV, pick the file, and choose the delimiter before you load it. Excel then splits the columns the way the file was written.

Save with another delimiter

  1. Go to File > Options > Advanced.
  2. Untick Use system separators.
  3. Set the decimal separator. With a comma as the decimal separator, Excel saves CSV files with semicolons.

This changes Excel's settings, not the Windows Region settings, so tick Use system separators again when you're done.

Why does find-and-replace break a CSV file?

Replacing every ; with , in a text editor or with sed works on a table of plain integers, but it breaks any field that contains a comma. Take this semicolon row, where the name has a comma and the price uses a decimal comma:

text
104;Widget, small;12,50

Find-and-replace gives 104,Widget, small,12,50, which is five fields instead of three. A CSV parser reads the three fields first and quotes the ones that contain commas, so DuckDB and rows.page write 104,"Widget, small","12,50".

rows.page limits and prices

WhatLimit or price
Open a file in your browserFiles up to 1.5 GB, $0, no account, nothing uploaded
Share a link without an account$0, files up to 100 MB, link deleted 7 days after creation
Free account$0, 10 datasets kept, last 3 versions
Pro$12/month, 100 datasets, files up to 500 MB, private links
Max$39/month, 1,000 datasets, files up to 2 GB, private links

Questions

Can rows.page export a semicolon or pipe-delimited CSV?

No. It detects comma, semicolon, tab and pipe when it opens a file, but CSV export is always comma-delimited UTF-8 without a BOM. Use the DuckDB command above with DELIMITER ';' or DELIMITER '|' instead.

Why does Excel put my whole CSV in column A?

Excel split the lines on a different character than the file uses, for example commas in a semicolon file. Import it with Data > Get Data > From File > From Text/CSV and pick the delimiter yourself, or convert the file to the separator your Excel expects.

Which text encodings does rows.page read for a CSV?

UTF-8, and UTF-16 with a byte order mark ("Read as UTF-16 text."). Other files are read as Latin-1 ("Read as Latin-1 text."), but a byte from 0x80 to 0x9F, such as a Windows-1252 euro sign or curly quote, stops the file from opening. If that happens, save the file from Excel as CSV UTF-8 (Comma delimited) and open it again.

How big a CSV can I convert in rows.page?

Up to 1.5 GB per browser tab, with no row limit; the grid loads 100 rows at a time as you scroll. A bigger CSV or TSV loads partially with the note "Loaded the first N rows: the file is X, more than the browser can hold."

Can I share a semicolon CSV so others see the columns split?

Press Share or run curl -T data.csv https://rows.page to get a https://rows.page/<id> link that opens with the delimiter already detected. Without an account you get 100 MB per request, 50 pushes and 1 GB per IP address per UTC day, and links expire after 7 days.