📋 CSV Viewer

Open, search, sort and filter a CSV in the browser, then export just the rows and columns you kept.

Drop your CSV here, or click to browse Release to load!

Supported: .csv · .tsv · .txt — up to 50 MB

Parse Options

Parsing CSV…

Large files may take a moment

📄 📊 rows 📋 columns 💾 ⚙️
⚠️ Large dataset ( rows). Filtering and sorting may be slightly slower.

Visible Columns

← Scroll horizontally to see all columns →

Sorted by:

#

Page of

Go to

Related Tools

Parsing, delimiter detection and column typing

When you drop a file or paste text, the viewer reads it locally and splits it into records, respecting quoted fields so that a comma inside quotation marks is treated as data rather than a separator. Delimiter detection is automatic by default, and you can override it with comma, semicolon, tab or pipe, which is useful for exports that use semicolons or tabs.

If the first row as headers option is on, that row becomes the column names and is excluded from the data; if it is off, columns are numbered and every row is treated as data.

The tool then infers a type for each column by testing its values. If at least 80 per cent of the values in a column parse as finite numbers once thousands separators are removed, the column is treated as numeric; otherwise it is text. That decision drives sorting. Numeric columns sort by value, with non-numeric entries pushed to the end, while text columns use a locale comparison with numeric awareness and case insensitivity.

Search scans every column of every row for your term, and the row count updates to show how many of the total match.

Sorting a price column that spreadsheets get wrong

Suppose a file has a Price column containing 1,200, 89, 450 and 1,050, entered with thousands separators. Sorted as plain text, those values order as 1,050 then 1,200 then 450 then 89, because text comparison works character by character and the digit 1 sorts before 4 and 8.

The viewer avoids this. All four values parse as numbers once commas are stripped, which is 100 per cent of the column and comfortably above the 80 per cent threshold, so the column is typed as numeric. Ascending order becomes 89, 450, 1,050, 1,200, and descending reverses it.

Now imagine one row has the entry Pending instead of a number. That is one non-numeric value out of five, so 80 per cent still parse and the column stays numeric. Ascending order becomes 89, 450, 1,050, 1,200 and finally Pending, because unparseable entries are sorted to the end rather than being treated as zero.

Add a second and third text entry, though, and only three of seven values parse, which is about 43 per cent. The column flips to text and you are back to character ordering, which is the clearest sign that the column needs cleaning at source.

Reading the results and exporting only what you need

The stats bar is the first thing to check after loading. If the column count is 1 when you expected several, the delimiter is wrong, so switch from auto-detect to the correct character and reparse. If the first data row is missing, the headers toggle is set the opposite way to your file.

When a search is active the counter shows how many of the total rows match, and that filtered view is what the export writes out, along with only the columns you have left visible. This makes the tool a quick way to cut a large extract down to a working subset: search for a customer name, hide the columns nobody needs, and export the remainder as a clean file.

A few limits are worth knowing. Everything is held in memory, so very large files are constrained by your device rather than by any upload limit, and the tool warns that filtering and sorting slow down beyond roughly 50,000 rows. Values are displayed as they appear in the file, so leading zeros in postcodes and product codes are preserved rather than being stripped the way a spreadsheet often does. Sorting changes the display order only.

Frequently Asked Questions

No. The file is read and parsed by JavaScript in your browser, so its contents never leave your device and no network request carries your data. That makes the tool suitable for confidential extracts, and it also means the viewer keeps working offline once the page has loaded.
There is no fixed limit because nothing is uploaded, but the whole dataset is held in your browser's memory. Files of a few tens of thousands of rows are comfortable on most machines, and the tool warns you beyond roughly 50,000 rows that filtering and sorting will be slower.
The delimiter is almost certainly not a comma. Files exported in regions that use a comma as the decimal separator typically use semicolons instead, and some exports are tab-separated despite the .csv extension. Switch the delimiter setting from auto-detect to semicolon, tab or pipe and load the file again.
No. The export creates a new CSV download containing the rows matching your current search and only the columns you have left visible. Your source file is untouched, and sorting within the viewer affects the display order only rather than rewriting any data.
The viewer shows values exactly as they appear in the file rather than converting them to numbers. Spreadsheet applications commonly strip leading zeros from codes on import, which corrupts postcodes, product references and phone numbers, so this is a deliberate difference and one reason to inspect raw CSVs here first.