CSV Viewer

View, sort, and filter CSV data in an interactive table. Paste or upload a file and explore the rows instantly in your browser — no upload required.

Advertisement

CSV viewer: open a CSV and see what is actually in it

Upload a CSV file or paste the raw text, and it renders as a sortable, filterable table in your browser — row count, column count, and every value shown exactly as it appears in the file. Nothing is uploaded, nothing is converted, and no value is reinterpreted on the way in.

That last part is the reason this tool exists. A CSV is a plain text file, and opening one by double-clicking it hands it to a spreadsheet application that treats the contents as a suggestion. If you have ever opened a customer export and found postcodes with their leading zeros gone, part numbers turned into dates, and long identifiers rendered in scientific notation, you already know the problem. Worse, if you then saved the file, the damage was written back to disk. Sometimes the honest requirement is not "edit this data" but "let me read this data without anything touching it".

What Excel does to a CSV, and why

None of these behaviours are bugs. A spreadsheet application guesses a type for every cell it imports, and the guesses are tuned for people typing numbers into a grid, not for machine-generated exports. The mismatch produces the same handful of failures over and over:

Value in the fileWhat a spreadsheet often showsWhat went wrong
012341234Read as a number, and numbers have no leading zeros. Wrecks postcodes, ZIP codes, account numbers, cost centres and any zero-padded ID.
12345678901234561.23457E+15Read as a number and displayed in scientific notation. Beyond fifteen significant digits the trailing digits are lost outright, so long card-style and barcode-style identifiers do not survive a round trip.
03/04/20263 April or 4 March, depending on the machineParsed as a date using the locale of whoever opened it. The same file genuinely means different things on two colleagues' laptops.
SEPT2, MARCH1a date in September or MarchThe famous gene-name problem: text that pattern-matches a date gets converted to one.
+44 20 7946 0000#NAME? or a formula errorA leading + or = is read as the start of a formula.
0.100.1Trailing zero dropped as insignificant — harmless in maths, a mismatch if the field is a fixed-precision string.

This viewer performs none of those conversions. Every field is held and displayed as text, exactly as parsed. 01234 stays 01234. A sixteen-digit identifier keeps all sixteen digits. 03/04/2026 is shown as the nine characters it is, and the tool takes no position on which date that means. If a value looks wrong here, it is wrong in the file — which is precisely the diagnostic you want when a colleague insists the export is fine and their spreadsheet insists otherwise.

What the parser figures out for you

  • The delimiter, automatically. Comma, tab, semicolon and pipe are all detected, along with the ASCII record and unit separators. A semicolon-separated file — the default CSV export across much of continental Europe, where the comma is the decimal separator — opens correctly with no setting to change. So does a tab-separated export that someone named .csv.
  • Line endings. Windows CRLF, Unix LF and old-style CR are all recognised, so a file that moved between operating systems does not come out as one enormous row.
  • Quoted fields. This is where naive splitting on commas falls apart. A field wrapped in double quotes may contain commas, and it may contain line breaks — a postal address written across three lines inside one cell is valid CSV. Doubled quotes inside a quoted field ("") are the escape for a literal quote character. All of this is parsed properly, so a file with addresses or free-text comments in it produces the row count you expect rather than a column shift halfway down.
  • Blank lines are skipped rather than rendered as empty rows.

The first row is treated as the header row and becomes the column titles. There is no "my file has no header" switch, so if your export starts straight into data, the first record becomes the headings and the row count is one short — add a header line to the paste box if that matters.

Encoding: read this if you have accented characters

Be straight about the limit here. Files are read as UTF-8. There is no character-set selector and no automatic detection of legacy encodings. A byte order mark is handled and stripped, so a UTF-8-with-BOM file exported from Excel opens cleanly and does not show a stray character glued to the first column heading.

What will not work is a file saved in Windows-1252 or Latin-1 that contains non-ASCII characters. Those encodings use single bytes for characters like é, ö, £ and the curly quotes, and those bytes are not valid UTF-8 — so they arrive as replacement characters or mojibake. If you see � where an accent should be, or é in place of é, the file is not UTF-8. The fix is at the source: re-export as UTF-8, or open the file in a text editor that lets you set the input encoding and re-save it as UTF-8. Plain ASCII files are unaffected either way, which covers a large share of real exports.

It runs entirely in your browser

The file is read locally with the browser's own file reader and parsed in the page. It is not transmitted anywhere, not stored, and not logged — there is no server involved in the viewing at all. Load the page, disconnect from the network, and it still works.

This is the specific reason to reach for a local viewer rather than a hosted one when the file is a customer list, a payroll extract, a patient export or anything else covered by a data-handling policy. "I opened it in a table viewer" and "I uploaded it to a website" are very different sentences in an incident review, and most online CSV tools are the second one. The practical ceiling is a 10 MB file, which is a large number of rows for text data; past that you will get a size error, because everything is held in memory in the tab.

Reading a file once it is open

Above the table you get the row count and the column count immediately — often the whole question, when you are checking whether an export produced the number of records it should have.

  • Filter across every column at once by typing in the filter box. It is a case-insensitive substring match against all cells in a row, and the row keeps its original numbering, so you can find one order ID in a file of thousands without knowing which column it lives in. A filtered count appears next to the totals.
  • Sort by clicking a column heading. Clicking cycles through ascending, descending, and back to the file's original order — that third state matters, because for many CSVs the original row order is itself meaningful and you want to get back to it.
  • Page through 100 rows at a time. Filtering and sorting apply across the whole file, not just the visible page, and changing either returns you to the first page.
  • Hover a truncated cell to see its full value. Long free-text fields are clipped so the table stays readable rather than one column pushing everything off screen.
  • Reset clears the file and every setting, ready for the next one.

One thing to know about sorting: a column is sorted numerically when both values being compared parse as numbers, and alphabetically otherwise. This is a display decision only — the underlying values are never altered — but it means a column of zero-padded IDs sorts by numeric value rather than as text, so 0009 comes before 0010 rather than after it. Mixed columns containing both numbers and text fall back to alphabetical comparison.

Using it to diagnose a broken file

Most "the CSV is corrupt" reports turn out to be one of a small number of things, and the fastest way to identify which is to look at the parsed grid:

  • Everything in one column. The delimiter was not what you thought, or the file is fixed-width rather than delimited. If the parser could not identify a delimiter at all it says so rather than silently guessing.
  • Columns shift partway down. Look at the last correct row and the first wrong one. Usually a free-text field contains an unescaped quote or an unquoted delimiter, and everything after it is off by one.
  • Far more rows than expected. A field containing a line break was not quoted, so one record became several.
  • Values appear under the wrong headings. The header row has a different number of fields from the data rows. Because the table is laid out from the header row, any extra fields in a data row are not displayed — if a row looks truncated, compare its field count in the raw text.
  • Trailing whitespace. Values that will not match anything in a lookup often have a space you cannot see; hover the cell to view the full contents.

What this tool deliberately does not do: it does not edit, save, download or convert. It is a read-only window on a file. If your next step is turning the data into something else — JSON for an API, or a smaller file — the CSV to JSON converter picks up from there.

This tool is provided for informational and educational purposes only. All processing happens in your browser — no data is sent to or stored on our servers. While we strive for accuracy, we make no warranties about the completeness or reliability of results.