Skip to main content

Free CSV Viewer & Table Renderer

Paste or upload CSV/TSV and render it as a sortable, searchable table. Auto-detects delimiters. Inspect data dumps without opening Excel.

Works offline once loaded

Drop a file here, or click to browse

CSV, TSV, TXT · processed on your device

or press Ctrl+V to paste from your clipboard

Browse files
— or —

Your files never leave your device. All processing happens locally in your browser.

Common uses

  • Quick CSV InspectionOpen a CSV file in your browser to inspect its structure without firing up Excel or a database tool.
  • Debug CSV Exports from AppsInspect CSV exports from your application to verify the data and formatting before sending to clients or stakeholders.
  • Prepare Data Before ImportInspect a CSV before importing into a database, spreadsheet, or CRM to verify structure.
  • Academic Dataset InspectionOpen CSV research data, survey responses, or experiment results for a quick first look.
  • Lightweight Spreadsheet AlternativeOpen CSV files instantly when you just need to read them, without launching Excel or Google Sheets.

How It Works

CSV Viewer parses and renders your file using a hand-written RFC 4180-compliant tokenizer built directly into the tool — no third-party CSV library, no server. The entire process runs in your browser: file reading, delimiter detection, sorting, filtering, and export.

  1. 1
    File reading and delimiter detection
    Uploaded files are read via the browser's File.text() API; pasted text is captured from the textarea. The tool then scans the first 2000 characters and counts occurrences of comma, tab, semicolon, and pipe outside quoted fields — whichever appears most often becomes the active delimiter automatically.
  2. 2
    RFC 4180 tokenization
    A character-by-character tokenizer walks the raw text, tracking a quoted-field state so that commas, pipes, or newlines inside double quotes are treated as literal content rather than delimiters. Escaped quotes (two consecutive double-quote characters) are collapsed to a single quote, matching the RFC 4180 spec.
  3. 3
    Sortable, searchable table with column profiling
    The parsed rows are held in memory and filtered client-side on every keystroke. Clicking a column header sorts it using a type-aware comparator: if 80% or more of non-empty values in the column parse as numbers, numeric ordering is applied and non-numeric values are sorted to the end; otherwise locale-aware string comparison is used. A Stats panel computes count, distinct values, min, max, mean, and median per numeric column entirely in the browser.
  4. 4
    Paginated display and multi-format export
    To keep the DOM responsive, rows are paginated at 500 per page while search and sort still operate over the full dataset. The active view (headers plus filtered, sorted rows) can be exported as clean comma-delimited CSV (regardless of the original delimiter), a Markdown table, or a JSON array of objects — all generated locally and copied to clipboard or downloaded as a file.

Your CSV file is read directly in the browser and never uploaded to any server — only the file size (in kilobytes) is sent to analytics to count tool usage.

Guide

Worked example

Click "Try a sample". A table appears with a "#" column and the headers Name, Email, City, Signup, Orders and Notes over five people. The summary reads "Pasted data · 5 rows · 6 columns", and "Showing 5 of 5" counts the same five data rows; the header line is not counted. "Team lead, west region" stays in one cell because it was quoted. Click the "Orders" header: the rows sort 7, 29, 34, 41, 52 and an up arrow appears; click again to put 52 first. Press "Stats": the Orders card shows Count 5, Distinct 5, Min 7, Max 52, Mean 32.6 and Median 34. Type tokyo into "Search…": it reads "Showing 1 of 5" and only Carol Davis remains. "Copy" now copies that one row under its header as CSV, and "Download JSON" saves table.json.

Which settings to use, and the limits

  • Open data by file or by pasting. Drop a .csv, .tsv or .txt file on the drop area, or choose it with "Browse files". Or paste into "Paste CSV/TSV here…": pasting into an empty box shows the table straight away when the text has line breaks, tabs, commas, semicolons or pipes, while typed text needs "View table". "Edit" returns pasted data to the box and "Clear" starts again. A file is read as bytes: a byte-order mark, UTF-16 or valid UTF-8 are recognised, and anything else is decoded with a legacy code page guessed from the page language.
  • Set the delimiter and header yourself when needed. "Auto-detect delimiter" is ticked at first. It counts commas, tabs, semicolons and pipes outside quoted text in the first 2,000 characters and uses the most frequent; an Excel "sep=" first line is obeyed and hidden. Untick it to pick "Comma (,)", "Tab", "Semicolon (;)" or "Pipe (|)". "First row is header" is ticked at first; untick it and the columns are named "Column 1", "Column 2" and so on, with the first line shown as data.
  • Sort, search and read decimal commas. Click a column header to sort and click again to reverse; an arrow shows the direction. A column sorts as numbers when at least 80 percent of its non-empty cells are numbers, with other cells last; otherwise it sorts as text, so dates sort correctly only in year-month-day form such as 2023-04-12. In a semicolon file, "1.234,56" and "12,5" count as 1234.56 and 12.5. "Search…" keeps rows where any cell contains your text, ignoring case; if none do, you see No rows match with your text.
  • Switch on Stats for a quick profile. "Stats" shows a card for each column with "Count" (non-empty cells) and "Distinct" values. A column where at least 80 percent of the non-empty cells are numbers also gets "Min", "Max", "Mean" and "Median", rounded to two decimals, calculated from its numeric cells. Other columns list up to three "Top values" and how often each occurs. The cards follow the search box, so they describe only the rows currently shown.
  • Copy or download the view you see. "Copy" puts the table on the clipboard as comma-separated CSV, quoting cells that need it. "Copy Markdown" gives a pipe table, and "Download" saves table.csv. "Download JSON" saves table.json: a list of objects keyed by the header names, where a repeated name gets _2 added, and a blank one becomes column_ plus its position, such as column_3. Every value is text, so numbers stay as written. All four use the current search and sort, and CSV output always uses commas, whatever the source delimiter was.
  • Large files show 500 rows at a time. The table shows 500 rows per page, with "Previous", "Next" and "Page 1 of 3" below it. Sorting, search, stats and exports cover every row, not only the visible page. Long cells are cut off in the table; hover over one to see the whole value. It reads the whole file into memory and parses it in one go, so how large a file it can open depends on your device. The file is read in your browser and not uploaded.

Common problems and how to fix them

It says "budget.xlsx is a XLSX file, which this tool can't open." (with your own file name and format).
The drop area checks a file's first bytes as well as its name. An Excel workbook is a zip package, not text, so it is refused with a message naming its real format, usually with a link to the Excel / XLSX Viewer under it. To use this tool, open the workbook in Excel and choose Save As, then CSV, and drop that file here.
The columns look wrong: names and notes are split or jammed together.
Auto-detect uses whichever of the four delimiters occurs most often in the first 2,000 characters. Commas inside quoted text are skipped, but unquoted decimal commas are counted, so a semicolon file full of numbers such as 12,5 can be read as comma-separated. Untick "Auto-detect delimiter" and choose "Semicolon (;)", or whichever delimiter your file really uses.
Accented or non-English letters show as odd symbols.
When a file is not valid UTF-8, the tool guesses a legacy code page from the language of the page, such as Windows-1252 on the English page, a Cyrillic code page on a Russian page or Windows-1254 on a Turkish page. There is no encoding menu, so a wrong guess shows as odd symbols. Re-save the file as UTF-8 (in Excel, "CSV UTF-8"), or open this tool in the language the file was written for.
A number column sorts as text, with 10 before 9.
A column counts as numeric only when at least 80 percent of its non-empty cells parse as numbers. Currency signs, units such as 12 kg and words like n/a do not parse, so enough of them make the whole column sort as text. Remove the symbols from the data or move the unit into the header, then load it again.
The row count is higher than the number of rows with data.
Both the summary and "Showing" count every line below the header, and a blank line in the data counts as a row with one empty cell. Delete blank lines in the source and load it again. The header line itself is not counted while "First row is header" is ticked; untick it if your first line is data.

How it compares

This is a viewer, not a spreadsheet. You cannot edit cells, write formulas, draw charts or open several sheets, and .xlsx workbooks belong in the Excel / XLSX Viewer. In return it opens a CSV, TSV or pasted text with nothing to install, reads quoted fields that contain commas, guesses the delimiter, sorts, searches and profiles each column, and exports the filtered view as CSV, Markdown or JSON. The column statistics are basic: count, distinct values, minimum, maximum, mean, median and three top values. For pivot tables or formulas, use a spreadsheet program.

Related Tools

Frequently Asked Questions