CSV viewer and encoding checker
Open any CSV, sort and search every row, and export it again — plus the encoding problems Excel would hide from you.
Runs in your browser0 bytes uploadedOpen any CSV, sort and search every row, and export it again — plus the encoding problems Excel would hide from you.
Runs in your browser0 bytes uploadedDrop a CSV file here
Nothing is uploaded. The file is read in this tab.
A CSV file is about as simple as a file format gets: rows of text, values separated by a character. Almost nothing goes wrong with the format itself. What goes wrong is everything around it — which separator was used, which character encoding the bytes are in, and what a spreadsheet decides your data means when it opens it.
This viewer shows you the table, and then shows you the four problems that actually break CSV files in practice. Each one is reported with an example taken from your own file, because "this file has an encoding issue" is not useful andVästerÃ¥s → Västerås is.
Swedish, German, French and several other localised versions of Excel expect asemicolon as the separator, not a comma. The reason is arithmetic: those locales use a comma as the decimal mark, so a comma cannot also separate fields without ambiguity.
Open a comma-separated file in one of those versions of Excel and every row lands in a single cell, because Excel never found a separator it was looking for. The file is not broken. It was written for a different locale. This viewer detects which separator your file actually uses and names it.
This is the single most common CSV complaint, and it has an exact cause. The letterå in UTF-8 is two bytes: C3 A5. Read those two bytes as Windows-1252 instead — one byte per character — and you get à followed by ¥. Hence Ã¥.
Excel makes that mistake unless the file begins with a byte order mark, a three-byte prefix that says "this is UTF-8". That is the entire difference between the two CSV options in Excel's Save As dialog, and it is why one of them is called "CSV UTF-8" while the other is just "CSV".
The viewer detects the mismatch and offers to repair the text, so you can confirm the file is recoverable before deciding what to do with it.
A postcode like 01234, a product code like 007, a phone number beginning with a zero — all of these are text that happens to look like a number. Open the file in Excel and it will helpfully convert them to numbers, and the leading zero is gone. Save the file and the loss is permanent.
Nothing warns you. The cells simply contain different values than they did. This viewer marks every affected cell and counts them, so you know before you open the file somewhere that will damage it.
A quoted CSV field is allowed to contain a line break. It is valid, common in exported comments and addresses, and it breaks any parser written by someone who assumed one row equals one line. If your file has them, the viewer says so and how many — because a file that looks fine here and falls apart in another tool is worth knowing about in advance.
Most online CSV viewers show you a preview and then ask you to trust it. This one loads the whole file. A 50,000-row export scrolls from the first row to the last, and the row counter at the top of the table is the real number, not a cap.
The trick is that only the rows currently on screen exist as elements on the page — roughly forty of them, replaced as you scroll, with the space above and below held open so the scrollbar stays honest about how much file is left. That is why a large file behaves like a small one, and why the tool never has to apologise for a limit.
Click a column heading to sort it, click again to reverse it, and click a third time to put the file back in its original order. The third click matters: the order the rows arrived in is information too, and a tool that can only sort is a tool you have to reload to undo.
Before sorting, the column is examined. Numbers sort as numbers, so 9 comes before 20 and not after it. Dates sort chronologically, whether they are written2024-03-09 or 03/09/2024 — and if any row in the column has a day above twelve, the column is read as day-first rather than month-first, because that is the only honest reading of it. Everything else sorts as text using your browser's own collation, which puts item2 before item10 and sorts å, ä and ö where the language they belong to expects them.
One rule overrides the rest. A column with leading zeros is text. A single 01234 anywhere in the column is enough to keep it out of numeric sorting, because the moment a postcode is treated as a number it stops being a postcode. It would be a strange tool that warns you about Excel destroying leading zeros and then quietly did the same thing on the way to sorting them.
Empty cells sort to the bottom in both directions, as they do in a spreadsheet, and values that do not fit the column's type — an N/A in a column of numbers — land just above them rather than being scattered through the results. Equal values keep the order they had in the file.
The search box filters rows as you type, across every column, ignoring case unless you ask it not to. The counter tells you how many rows matched and how many individual cells did, which are different numbers whenever a row matches twice — a customer whose name appears in both the name column and the email column, for example.
Matches are highlighted inside the cell rather than just implied by the row being present, so you can see immediately whether you found what you meant or a substring of something else. You can also narrow the search to a single column, which is the difference between finding every row mentioning a city and finding the rows where the city column is that city.
Character encoding is detected from the bytes, but detection cannot always be right. A file that is genuinely Windows-1252 is often also valid UTF-8 — the byte sequences overlap — so nothing about the file itself announces the mistake. Only a human looking at the text can tell that ö was supposed to beö, or that a name has quietly lost its accent.
So the reading is a setting, not a verdict. Pick UTF-8, UTF-16 LE, UTF-16 BE or Windows-1252 and the table is decoded again from the same bytes already in memory. Nothing is re-read from disk and nothing is sent anywhere. If the accented characters snap into place, you have found the encoding the file was actually written in — and you can export it in a form that says so.
Exports follow what you see. If you sorted the table and filtered it down to the forty rows you care about, that is what leaves — the row count is printed on the button before you click it. Values are written exactly as they were read; nothing is re-typed, rounded or trimmed on the way out.
CSV lets you choose the delimiter and whether to write a byte order mark. The mark is three bytes at the very start of the file that say "this is UTF-8". Without it, Excel in several European locales assumes the legacy encoding, and your å arrives as Ã¥ — the same failure described further up this page, now avoidable in the other direction.
But a BOM only fixes the encoding, and that is worth being explicit about, because plenty of tools imply it fixes more. Excel still re-interprets a CSV when it imports it, so 01234 still arrives as 1234 whatever the file's encoding was. If your data has leading zeros, take the Excel (.xlsx) export instead. A real spreadsheet file stores a type with every cell, so a text column arrives as text and the zeros survive. Columns that genuinely hold numbers are written as numbers, so you still get arithmetic where arithmetic makes sense.
JSON gives you one object per row, keyed by column name, with every value as a string — for the same reason: turning 01234 into a JSON number is exactly the data loss this tool exists to point out. Duplicate and empty column names get unique keys instead of silently overwriting each other. TSV is there because a tab almost never appears inside a value, which makes it the safest thing to paste straight into a spreadsheet.
People open CSV files that contain customer lists, payroll data, exported orders, email addresses and membership registers. It is probably the single most personal-data-dense format in ordinary office use.
This tool reads the file in your browser. Nothing is transmitted, there is no server involved, and you can confirm that yourself by opening your browser's Network tab before you drop the file — there will be no upload request, because there is nothing to upload to.
Swedish and German Excel expect a semicolon as the delimiter, not a comma. A comma-separated file opens as one column because Excel never splits it. This viewer detects the actual delimiter and tells you which one your file uses.
The file is UTF-8 but was opened as Windows-1252. Excel assumes the legacy encoding unless the file starts with a byte order mark. This viewer detects it and can repair the text.
Yes. Every row is loaded and every row is searchable and sortable — only the rows currently on screen are drawn, so scrolling stays smooth. There is no preview limit and no row cap.
Not if you use the Excel (.xlsx) export. A CSV is re-interpreted on import, so Excel turns 01234 into 1234 no matter what encoding it is in. In an .xlsx each cell carries its own type, so a text column stays text.
No. The file is read by your browser and never transmitted. That matters here more than for most tools — CSV files routinely hold customer lists, payroll and personal data.