CSV means comma-separated values, a century of “put the table in a text file” distilled into RFC 4180. Each line is a row. Each comma (or other delimiter) cuts a field. Quotes wrap a field that itself contains a comma, a quote or a line break. That is the whole data model: a rectangle of strings. Open a copy in the CSV Viewer when the rectangle is a CRM export, a payroll sheet or anything you would not upload.
A minimal RFC 4180 file
name,role,city Ada Lovelace,mathematician,"London, UK" "Byron, Annabella",patron,Kirkby Mallory
Row one is a header because it looks like names, not because the spec requires it. Ada's city is quoted so the comma inside London stays in one cell. Annabella's name is quoted because it contains a comma. An inner quote would be written as "She said ""hello""". Those two rules, wrap and double the inner quote, are the difference between a parser and a line.split(",") that explodes on the first address.
RFC 4180 also says rows end with CRLF. Plenty of files, especially from Unix tools, use LF only. A UTF-8 BOM (EF BB BF) sometimes sits on the first three bytes so Excel treats the file as Unicode. A careful viewer strips the BOM and accepts both line endings. The viewer on this site does both, in the tab.
Dialects you will actually meet
- Comma. The RFC default, and what most APIs emit.
- Semicolon. Common in locales where comma is the decimal mark. Excel there writes
;and then surprises everyone else. - Tab.
.tsv. Handy because tabs rarely appear in fields. - Pipe.
|, often from legacy exports.
Auto-detection counts candidate delimiters on the first line, ignoring commas that sit inside quotes so a quoted address does not look like five columns. You can override Auto when the guess is wrong. TSV is just CSV with a different delimiter; treat it as the same format.
How to open one without uploading it
“Online CSV viewer” too often means “POST the file to a server, render an HTML table, maybe delete it later.” Payroll rows, customer emails and invoice lines do not belong in that request. Safe means the bytes are read by the browser's File API and parsed on the device:
- Open the CSV Viewer.
- Drop the .csv or .tsv, or paste the text. Nothing is sent.
- Confirm the delimiter and whether row one is a header.
- Sort and search in the table. Large files stay smooth because only visible rows render.
- Need JSON? Use Convert this CSV to JSON; the handoff stays in sessionStorage for this tab.
After the page has loaded you can disconnect and keep opening files that are already on disk. That is the same offline check as every other tool here; the procedure is on how it works.
What CSV cannot do
Types. Every cell is a string. 007 might be an employee id or the number seven; a spreadsheet will guess, often wrongly. Nested objects do not exist. Comments do not exist. A second table in the same file does not exist. When the data is a tree, use JSON; when it is configuration a human edits, consider YAML; the trade-offs are in JSON vs YAML vs CSV.
Spreadsheets add another trap: they interpret unquoted values. 1-3 becomes a date, SEPT1 becomes September 1, long numeric ids lose precision. For a round-trip you care about, keep the CSV as text, open it in a viewer that does not coerce types, and only then import with explicit column types.
Size and quoting pitfalls
A hundred thousand rows is a normal CRM dump and a miserable DOM if you render every <tr>. Virtualize the table: keep the rows in memory, paint a window. Sorting and search still scan the array, which is fine at that size on a laptop. If the file is a few million rows, a browser tab is the wrong tool; use a local command (csvkit, DuckDB, Python) on your machine, still without uploading.
Broken quoting is the usual parse error: an opening quote with no closer, or a delimiter that was not doubled inside a quoted field. The result is columns that appear to shift right on later rows. Look at the first bad row in a viewer rather than in Excel, which will happily invent extra columns. If you must repair the text, do it in an editor; then re-open the file locally.
A safe workflow
- Prefer a download to your disk over a web “open in app” that posts the file.
- Do not paste production CSVs into converters whose network tab you have not watched.
- Decode any Base64 wrapper locally first (What is Base64 encoding?) if the export arrived as a blob.
- Convert a copy to JSON only when you need objects; the original CSV stays the source of truth for the rectangle.
Next step: drop a non-sensitive sample onto the CSV Viewer, then convert it with JSON ↔ CSV if you want objects. Customer files stay on this device.