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.
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".
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 file | What a spreadsheet often shows | What went wrong |
|---|---|---|
01234 | 1234 | Read as a number, and numbers have no leading zeros. Wrecks postcodes, ZIP codes, account numbers, cost centres and any zero-padded ID. |
1234567890123456 | 1.23457E+15 | Read 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/2026 | 3 April or 4 March, depending on the machine | Parsed as a date using the locale of whoever opened it. The same file genuinely means different things on two colleagues' laptops. |
SEPT2, MARCH1 | a date in September or March | The famous gene-name problem: text that pattern-matches a date gets converted to one. |
+44 20 7946 0000 | #NAME? or a formula error | A leading + or = is read as the start of a formula. |
0.10 | 0.1 | Trailing 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.
.csv.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."") 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.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.
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.
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.
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.
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.
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:
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.