Built on advanced on-device AI and hardware acceleration to deliver professional-grade performance with uncompromising privacy.On-device AI — professional-grade, fully private.
View CSV as Table
CSV viewer for large files - every row, filters, stats, no upload
- No upload
- Every row, no page limit
- Filters, sorting, statistics
- CSV, TSV, JSON, NDJSON out
Drop a CSV file here
CSV, TSV, TXT or PSV - up to 250 MB, read on your device
Open a CSV file to see it as a table.
Reading the file
Search
Column filter
Navigate
Useful when a file has more columns than fit across
Display
Column statistics
Export
Exports the rows and columns currently shown, in the current sort order.
Your plan
Free reads files up to 250 MB, with every viewing and export feature.
How to view a CSV file as a table
- 1
Open your file
Drop a CSV, TSV, TXT or PSV file onto the page, or browse for one. The file is read on your device and never uploaded.
- 2
Check what was detected
The bar above the table shows the delimiter, the encoding and whether the first row was treated as a header. Override any of the three if the file needs it.
- 3
Read the whole file
Scroll the table. Every row of the file is reachable, whether it has fifty rows or a million.
- 4
Narrow it down
Search every column at once, or add a per-column filter with contains, equals, a numeric range or a regular expression.
- 5
Sort what matters
Click a column header to sort it. Numbers and dates sort as numbers and dates; shift-click a second header to break ties with it.
- 6
Export what you see
Download the filtered, sorted, visible-column view as CSV, TSV, JSON or NDJSON, or copy it to the clipboard.
What this CSV Viewer offers
A CSV file is a grid pretending to be a text file. This tool turns it back into the grid, on your device, with the controls you need to actually read it - and without the two things every online viewer quietly does to a large file: crop it, or upload it.
- Every row, always. There is no page size and no row limit. A file with a million rows scrolls from the first record to the last.
- Correct parsing. Quoted fields containing commas, quotes and line breaks are read as single values, blank rows are preserved, and a byte-order mark never ends up inside a column name.
- Per-column filters. Contains, does not contain, equals, starts with, ends with, empty, not empty, greater than, less than, between, and regular expressions.
- Type-aware sorting. Numbers sort as numbers and dates as dates, on one column or several at once.
- Column statistics. Distinct values, blanks, sum, mean, median, minimum and maximum, for any column, over the rows currently in view.
- A record inspector. One row laid out as a labelled list, for files too wide to read across.
- A broken-row report. Rows whose field count does not match the header, and rows with an unclosed quote, both listed and jumpable.
- Export what you see. CSV, TSV, JSON or NDJSON of the filtered, sorted, visible-column view.
Why view CSV as a table
Opened in a text editor, a CSV is a wall of commas. Opened in a spreadsheet, it is a grid - but getting it there usually means an import wizard, a size limit and a decision about what the first row means before you have seen any of the data. A viewer sits between the two: the structure of a spreadsheet, with none of the commitment.
What the table view is actually for
- Seeing the shape of a file. How many columns there are, what each one holds, and whether the export you were sent is the one you expected.
- Checking before converting. A misread delimiter turns twelve columns into one, and it is far cheaper to notice that here than after the import.
- Finding the odd record. Search and per-column filters isolate the handful of rows that are wrong out of a million that are fine.
- Answering a quick question. The sum of a column, how many distinct values it has, how many rows are blank - without opening a spreadsheet at all.
- Reading data you cannot upload. Nothing leaves the device, so a file that is not allowed to go to a third-party server can still be read.
Reading a large CSV file
Most online CSV viewers handle a large file in one of two ways. Some upload it and do the work on a server, which is fast and means your data has left your computer. Others do it in the browser but load the whole file into memory as objects, which works until it does not - and the point where it stops working is usually a blank tab rather than an error message.
How this one is built instead
- The file is parsed off the main thread. The page stays responsive while a large file is read, rather than freezing for several seconds.
- Rows are indexed, not materialised. The parser records where each field starts and ends and decodes only the cells that are actually on screen - roughly eight hundred at a time.
- Only the viewport is drawn. Scrolling a million-row file costs the same as scrolling a fifty-row one.
- Filtering searches raw bytes. A search across every column of every row does not build a million strings to throw them away again.
- Measured, not claimed. A 69 MB file of 1,000,000 rows and 10 columns: about 0.8 seconds to a readable grid, 0.15 seconds to search every cell, and roughly 150 MB of memory.
Filtering and searching
There are two ways to narrow a file down, and they combine. The search box matches text anywhere in a row and is the fastest way to find something you can name. Per-column filters are how you describe a condition instead - everything over a threshold, everything that is blank, everything matching a pattern.
The available conditions
- Text. Contains, does not contain, equals, does not equal, starts with, ends with.
- Presence. Is empty, is not empty - which is how you find the records an export dropped a value from.
- Numbers. Greater than, at least, less than, at most, and between two values.
- Patterns. A full regular expression, with a clear message beside the box if the pattern does not compile rather than an empty grid.
- Combined. Column filters apply together, and the search box applies on top of them. The row count above the table always says how many survived.
Sorting columns correctly
Sorting a CSV column as text is the single most common way a viewer gives a wrong answer that looks right: as text, 10 comes before 9, 2026-01-02 comes before 2026-1-10, and an empty cell sorts to the top where it hides the largest value you were looking for. This tool infers each column's type from a sample spread across the whole file, then sorts accordingly.
What that means in practice
- Numbers sort numerically. 9 before 10, and -3 before 0.
- Dates sort chronologically. ISO dates and common day/month/year forms are both recognised.
- Text sorts case-insensitively. So Apple and apple sit together instead of in two separate blocks.
- Blanks always sink. In both directions, so sorting descending to find the largest value does not return a screen of empty cells.
- Sorting is stable. Rows that tie keep their original file order, which is what makes shift-clicking a second column a refinement of the first rather than a replacement.
Delimiters and encodings explained
CSV is not one format. The separator varies by region and by the program that wrote the file, and the character encoding varies by operating system - which is why the same file can look perfect on one machine and like nonsense on another.
What is detected, and how
- Comma, semicolon, tab and pipe. The delimiter is chosen by which candidate produces a consistent column count across the first rows, ignoring anything inside quotes. Counting characters instead is what makes a semicolon file whose header holds a quoted comma render as a single column.
- UTF-8, with or without a byte-order mark. The mark is removed rather than left inside the first column name, on both the file and the paste path.
- UTF-16, little and big endian. This is what Excel writes for Unicode Text and what many database exports produce; without it the file reads as interleaved nulls.
- Windows-1252 and ISO-8859-1. The usual home of accented characters in older European exports.
- All of it overridable. Detection is a starting point, not a verdict - every choice is a control, and changing one re-reads the file you already opened rather than asking for it again.
Broken rows, quoting, and what a viewer owes you
Real CSV files are frequently malformed, and the failures are quiet. A row with one extra comma shifts every value after it into the wrong column. A quoted field that is never closed swallows the rest of the file into one cell. Neither produces an error; both produce a table that looks fine.
What this tool does about it
- Ragged rows are counted and listed. Any row whose field count differs from the header's is tinted in the grid and listed above it with its line number.
- Unclosed quotes are reported. The field is still read - the rest of the file becomes its value, which is what Python's csv module does too - but you are told, rather than left with a cell containing a line break and no explanation.
- Doubled quotes are preserved. A field written as "He said ""hi""" reads back as: He said "hi" - and exports as the same thing again.
- Blank rows are kept. Dropping them silently changes every row number after them, which makes the line numbers you are reading disagree with the file on disk.
- Line numbers are the file's. The gutter shows the row's line in the original file, so it still points at the right place after a sort or a filter. You can switch it to show the position in the current view instead.
Exporting what you see
The export is the view, not the file. Whatever your filters left, in the order you sorted it, with the columns you chose to keep - which makes the viewer a fast way to cut a large file down to the records you actually need.
Formats and details
- CSV. RFC 4180 quoting: a field is quoted only when it has to be, and quotes inside it are doubled.
- TSV. Tab-separated, for pasting straight into a spreadsheet.
- JSON. An array of objects keyed by the column headers, indented and readable.
- NDJSON. One JSON object per line, which is what most data pipelines and log tools expect.
- Clipboard. The same content, copied rather than downloaded, for when the destination is already open.
- Header optional. Include or omit the header row, for appending to a file that already has one.
How the viewer works on your device
Everything happens locally. The file is read from disk by the page, parsed in the background, and drawn to a canvas - it is never sent anywhere, and there is no server that could keep a copy.
What that means for you
- Private by construction. There is no upload step to trust, because there is no upload.
- Free, with no quota. No daily file limit and no watermark.
- Works offline. Once the page has loaded, it keeps working with no connection.
- Fast because nothing travels. A 69 MB file is readable in under a second, because the slowest part of an online viewer - moving the file - never happens.
- Bounded by your hardware, not by us. The free tier caps file size; Pro replaces that with whatever your device can actually handle.
Best practices
A few habits make a strange CSV much quicker to understand.
Tips
- Read the detection bar first. Delimiter, encoding and header are stated above the table. If the column count looks wrong, one of those three is the reason.
- Check the broken-row count. If it is not zero, look at those rows before drawing any conclusion from the rest.
- Use is-empty to audit a column. It is the fastest way to see whether an export lost values.
- Sort, then look at both ends. The largest and smallest values in a column are where bad data usually is.
- Hide columns you are not reading. A twelve-column file is much easier to scan as four, and hidden columns stay out of the export.
- Filter, then export. Cutting a large file down here is quicker than doing it after an import.
Common uses
- Checking a data export. Confirm a report from an analytics tool, a shop or a database has the rows and columns you expected.
- Debugging an import. See exactly what a system will read before you feed the file to it.
- Reading a log or event dump. Filter a million events down to the ones from one user or one hour.
- Quick arithmetic. Sum or average a column without opening a spreadsheet.
- Handling sensitive data. Read a file that policy does not allow you to upload anywhere.
Frequently asked questions
How do I open a CSV as a table?
Drop your CSV onto the page or browse for a file. It is read on your device and rendered as a scrollable grid with a fixed header row. The delimiter, the character encoding and whether the first row is a header are all detected automatically and shown above the table, so you can see what was assumed and change any of them if the file needs it. From there you can search, filter, sort, inspect a single record and export the result.
Does it handle large CSV files?
Yes. Every row of the file is reachable - there is no page limit and nothing is truncated. Files are parsed off the main thread and only the rows on screen are drawn, so a file with a million rows scrolls as smoothly as one with fifty. Measured on a 69 MB file of 1,000,000 rows: about 0.8 seconds to a readable grid, and a search across every column of every row in under 0.2 seconds.
Can I sort and filter the data?
Click any column header to sort it, and shift-click a second header to sort by that column within the first. Sorting is type-aware, so a number column orders 9 before 10 rather than the other way round, and blanks always sink to the bottom. The search box matches every column at once; per-column filters add contains, does-not-contain, equals, starts-with, ends-with, empty, not-empty, numeric greater-than and less-than, a between range, and full regular expressions.
What does the export contain?
Exactly what is on screen: the rows that survive your filters, in your sort order, with hidden columns left out. You can write CSV, TSV, JSON or NDJSON, with or without the header row, or copy the same content to the clipboard. Quoting follows RFC 4180, so a field containing a comma, a quote or a line break comes back out as the same value it went in as.
Which delimiters and encodings are supported?
Comma, semicolon, tab and pipe, detected automatically by looking at which candidate produces a consistent column count across the first rows - not by counting characters, which misreads a semicolon file whose header contains a quoted comma. Encoding covers UTF-8, UTF-16 little- and big-endian, Windows-1252 and ISO-8859-1, detected from the byte-order mark or the byte pattern, and a UTF-8 byte-order mark is stripped rather than left inside the first column name. Both can be overridden.
What happens to rows that are broken?
They are shown and counted rather than quietly dropped. A row whose field count does not match the header is tinted in the grid and listed above it, and so is a row whose quoted field was never closed - which is the dangerous one, because the row looks normal while having silently absorbed the rest of the file. Click any entry in the list to jump to that line.
Is my CSV uploaded, and is the tool free?
Nothing is uploaded. The file is read and parsed on your device, so it never leaves it and the tool keeps working with no connection once the page has loaded. Reading, filtering, sorting, statistics and every export format are free, with no daily quota. Pro raises the file-size cap to whatever your device can handle and lets you keep several files open at once.
from 118 ratings
Rate this tool
Tap a star — it takes a second