gizmobench

CSV Viewer

Open a CSV and the table is on the first screen: the file on the left, the rows on the right, sorted by any heading you click and filtered by anything you type. The reading follows RFC 4180 rather than splitting the line on commas, so a quoted comma stays inside its value, a doubled quote becomes one quote, and a line break inside quotes does not start a new row. Three things here that a spreadsheet import usually gets wrong: a row with the wrong number of cells is marked with the count it actually had and kept, never dropped; two columns that share a heading stay two columns; and a cell that begins with an equals sign is text on this page and is never evaluated. The delimiter is worked out from the file, counting only the characters outside quotes, and can be set by hand to comma, semicolon, tab or pipe. Nothing is uploaded, nothing is refused for its size, and the table draws only the rows in view, so a file of hundreds of thousands of rows scrolls at the speed of the machine you are on.

150 characters
Table
#
11Wrench, 8mm24.50
22Hammer112.00
33Tape measure, 5m47.25
44Bolt "M8"500.18
55Screwdriver35.95
6*Total=SUM(C2:C6)
Rows
6
Columns
4
Delimiter
Header

6 of 6 rows shown in 4 columns, read as comma separated values, worked out from the file. 1 row did not have the same number of cells as the header. They are shown, and marked beside the row number. 1 cell begins with an equals sign and is shown as text.

  • Quoted comma"Wrench, 8mm"
    Wrench, 8mm | 2
  • Doubled quote"say ""hi"""
    say "hi" | 1
  • Ragged row3 cells in a 4 column file
    3 of 4 cells read: 7 | Hammer | 1 | (empty)
Accuracy. Reads the file by the RFC 4180 quoting rules and shows every row it read, including ragged ones. A cell beginning with an equals sign is text here and is never evaluated, and the file is read in your browser.

Common questions

How do I open a CSV file?
Three ways, and they all end in the same table. Press Open file and pick it, drag the file onto the left panel, or paste the rows straight into the box. The file is read by your own browser: it is not uploaded, there is no account, and no size is refused. The practical ceiling is the memory of the machine you are sitting at rather than a number this page invented, and to give you a sense of it, a 27MB file of 150,000 rows is read in well under a second on a current laptop. The file on your disk is never written to. Everything you do here, sorting, filtering, changing the delimiter, changes what is on screen, never the file.
What happens to a comma inside a value?
It stays inside the value, because the file is read by the RFC 4180 quoting rules rather than by splitting each line on the delimiter. A value wrapped in double quotes may hold the delimiter, so "Wrench, 8mm" is one cell and the comma is part of the text. A doubled quote inside a quoted value is one quote, so "say ""hi""" reads as say "hi". A line break inside quotes is part of the value and does not start a new row: the table shows it as an arrow so every row keeps one line, and Copy and Download write the break back out unchanged. If a quote is opened and never closed, the rest of the file is read as one cell and the page says so under the table rather than quietly losing the rows.
My file uses semicolons, not commas. Will it still open?
Yes. The delimiter is worked out from the file by counting commas, semicolons, tabs and pipes that sit outside quoted values, which is why a semicolon file full of "one, two, three" notes is still read by its semicolons. The Delimiter control shows what was chosen and lets you override it with comma, semicolon, tab or pipe when the guess is wrong or when you want to see the file read another way. The Header control does the other half: First row treats the top line as the column names, None names the columns by position and reads every line as data.
Why is a row marked with a star?
Because it holds a different number of cells from the header, which is what ragged means, and the mark is there so the row is visible rather than quietly repaired. Hover the star, or read it with a screen reader, to see how many cells it really had, for example 3 of 4. A short row is padded with empty cells so the columns still line up, a long row widens the table and the extra columns are named by position, and in both cases nothing is thrown away. The line under the table counts them: this tool would rather show you a mess in a file than hide it.
Does it run formulas, like a spreadsheet?
No. A cell that begins with an equals sign, for example =SUM(B2:B9), is a piece of text here. It is displayed as written, it is exported as written, and there is no code anywhere in this tool that could evaluate it. That is deliberate: a formula in a CSV is untrusted text from whoever produced the file, and the only safe reading of it is as text. Such cells are counted for you under the table, so you know which values a spreadsheet would have turned into something else. Markup inside a cell gets the same treatment: it is shown as the characters it is made of, never rendered.
How does sorting work, and does it change my file?
Click a heading once to sort up, again to sort down, a third time to go back to the order the file was written in. Numbers sort by value rather than by spelling, so 2 comes before 10, and a figure written with grouping separators, such as 1,204, is still read as one number. Text sorts without regard to case. Empty cells go to the bottom whichever way the column runs, so a sort never buries the rows that have data. Rows that tie keep the order they were read in. Nothing about the sort touches the file: it changes the view, and the file on your disk is untouched.
What exactly do Copy and Download give me?
The rows on screen, in the order on screen: the filter is applied first, then the sort, then the file is written. It is written by the RFC 4180 rules, so a value holding the delimiter, a quote or a line break comes back quoted and a quote inside it is doubled, and the records are separated by CRLF, which is what the standard specifies and what spreadsheets expect. The heading line is included when the first row is being read as a header. A ragged row is written as the padded row you see, so the file you get back is rectangular. Read the result back into this page and you get the same cells you started with.
The accents in my file look wrong. Can I change the encoding?
Yes, with the encoding control at the top of the file panel. Auto follows the byte order mark when there is one, then tests the bytes against UTF-8, and falls back to Windows-1252, which is what a spreadsheet on Windows writes when it is not asked for UTF-8. If the guess is wrong you can force UTF-8, UTF-16 or Windows-1252, and the file you opened is decoded again straight away without reopening it. The panel names the encoding the text was read with.
Is my file uploaded, and is it remembered?
Nothing is uploaded and nothing is sent anywhere: the reading happens in this tab. What you paste or open is kept in this browser alone, along with your delimiter and header choices, so the table is still here when you come back, and the Start over button above the tool forgets it. One limit is worth knowing: a draft longer than 100,000 characters is read and shown in full but is not written to storage, so a very large file is not kept after you close the tab. If your browser blocks storage entirely, everything on the page still works; nothing is remembered between visits.

Reads the file by the RFC 4180 quoting rules and shows every row it read, including ragged ones. A cell beginning with an equals sign is text here and is never evaluated, and the file is read in your browser.