Open a CSV or TSV file and read it as a proper table. Sort by any column, filter rows with a search or per-column conditions, hide columns you do not need, and copy or download what is left.
Everything runs locally in your browser. Your data never leaves your device.
Load a table
Drop a CSV or TSV file here
Comma, semicolon, tab and pipe separated files up to 32 MB.
No table yet
Drop a CSV or TSV file above, paste the text, or load the example. The table then appears here with sortable columns, a search, per-column conditions and export buttons.
Next steps
Send this tool's output straight into another tool.
Build a Markdown table in a spreadsheet-like editor and copy the aligned result. Add, move and delete rows and columns, set per-column alignment, and paste cells straight from Excel, Google Sheets or CSV. The output stays neatly padded so it reads well as plain text.
Convert config and data between JSON, YAML, TOML, JSON5, INI, XML, CSV and .env. Type or paste on the left, pick the output format on the right, and copy the result. Includes a format button and a minify toggle.
Paste JSON to explore it as a collapsible, searchable tree, hide the fields you don't need, and see the structure it implies as a badge-annotated schema and a copyable TypeScript interface.
Compare two JSON documents by structure and see every added, removed and changed key and value with its exact path. Browse the result as a tree, a filterable change list or a line diff, ignore array order, catch type changes and export the changes as a JSON report.
Convert text into every case at once: title case in the APA, AP, Chicago, MLA, Bluebook, AMA and NYT styles, sentence case, upper, lower, camelCase, snake_case, kebab-case and more.
Compare two texts and see every added, removed and changed line highlighted, side by side or inline, with the changed words marked within each line. Ignore case, whitespace or blank lines, read a summary of how much changed, and export the result as a unified diff.
This tool opens a CSV or TSV file and shows it as a real table. Drop a file in or paste the text, and the separator is worked out for you, quoted values holding commas or line breaks are read the way the format intends, and every column gets a guessed type so numbers sort as numbers and dates sort as dates.
From there it behaves like a table should. Click a column title to sort by it, search across the visible columns, add per-column conditions such as greater than or is empty, hide the columns you do not care about, then copy or download exactly what is left as CSV, TSV or JSON rows.
What you can do
Open a CSV file and read it as a sortable table.
View a TSV, semicolon separated or pipe separated file without a spreadsheet.
Sort a CSV by any column, with numbers and dates in the right order.
Filter CSV rows with a search or a per-column condition.
Hide the columns you do not need and export only the rest.
Convert a CSV file to JSON rows.
Convert between comma, semicolon, tab and pipe separated files.
Find empty cells, duplicates and the range of a column.
Open a CSV that Excel exported with a byte order mark or CRLF line endings.
How to use the CSV Viewer
1Drop a CSV or TSV file into the box, paste the text, or press Load example.
2Check the detected separator and the header switch, and change them if the columns look wrong.
3Click a column title to sort by it. Clicking again reverses it, and a third click clears the sort.
4Narrow the rows with the search box, or turn on Conditions for per-column filters like greater than, equals or is empty.
5Hide columns you do not need from the Columns menu, and open a column's type chip for its summary.
6Copy or download what is left as a delimited file or as JSON rows.
How the separator is found
Comma is only the most common choice, not the only one. German and French exports usually use a semicolon, spreadsheets copy to the clipboard as tab separated text, and log pipelines like the pipe. The viewer tries all four, reads the first 64 KB with each, and keeps the one that splits the file into the most consistent set of columns. If the guess is wrong, pick the separator by hand and the table redraws.
Reading follows RFC 4180 with the relaxations real files need. A double quoted value may hold the separator, line breaks and doubled quotes, records may end in LF or CRLF, blank lines are skipped, and a leading byte order mark from Excel is stripped before anything else happens.
Messy files still open
A row with too few values is padded with empty cells. A row with too many keeps its extra values in generated columns rather than losing them. Empty column names are numbered, repeated column names get a suffix so they stay apart, and a quoted value that was never closed is read to the end of the file. Each of these is reported as a warning above the table, so you can see what was repaired instead of wondering why the numbers look off.
The header switch matters here. Turn it off for a file that starts straight into data, and every column is named Column 1, Column 2 and so on.
Column types and sorting
Each column is sampled and labelled number, date, boolean or text once nine out of ten of its filled values fit. Numbers accept a leading currency symbol, grouped thousands, a trailing percent sign and accounting style negatives in brackets. Dates accept ISO dates and date-times, YYYY/MM/DD, DD.MM.YYYY, MM/DD/YYYY and YYYY-MM. Booleans accept true and false, yes and no, y and n.
The type is what makes sorting useful. A number column sorts 2 before 10 instead of the other way round, a date column sorts chronologically, and a text column sorts naturally so item 2 lands before item 10. Empty cells always go last, whichever direction you pick. The same types drive the comparison conditions, so greater than on a date column really does mean later.
One thing to watch: a comma is always read as a thousands separator, so a value written as 1,5 counts as text rather than as one and a half. Convert those to a dot first if you need them sorted as numbers.
Exports carry the current view
Copy and download always write what the table shows, with the sorting, the search, the conditions and the hidden columns already applied. Pick the separator to write, decide whether the header row goes along, and get a .csv, a .tsv or JSON rows. The JSON export turns number and boolean columns into real JSON values by default and writes empty cells as null, or keeps everything as text when you prefer that.
The same view is what travels onward. Send the table to the Markdown Table Generator to turn it into a Markdown table, to the Config Converter to reshape it into YAML or TOML, or send the JSON to the JSON Inspector to explore it as a tree.
Limits
Files up to 32 MB can be opened and the first 100,000 rows are read, which is enough for the exports people actually inspect by hand. Rows are shown a page at a time so scrolling stays smooth on a wide table. Tables above 256 KB are held for the session only and will not be there after a reload, since a browser's local storage is far too small for them.
This is a viewer, not an editor. Cells cannot be changed here. To build or edit a small table by hand, use the Markdown Table Generator, which imports the same delimited text into an editable grid.
Encode and decode Base16, Base32, Base36, Base45, Base58, Base62, Base64 and Base85. Pick the alphabet variant you need, from Crockford Base32 to Bitcoin Base58 and Ascii85, and convert in either direction.
Decode Base64 to text or encode text to Base64. Paste into the top box, read the result below, and flip the direction with one click. Handles Unicode correctly, reads URL-safe Base64, and shows binary payloads as a hex dump you can download.
Format code in JavaScript, TypeScript, JSON, JSON5, HTML, Vue, CSS, SCSS, LESS, Markdown, YAML, GraphQL, XML and SQL. Pick tabs or spaces, set the indent width, and format the input in place with one click.
Escape text into HTML entities or decode entities back to plain text. Choose named or numeric entities, escape only the unsafe characters or everything outside ASCII, and read the result live.