CSV Viewer and Editor

Drop a CSV file on the page, or paste the text, and it opens as a table you can sort, filter, search and edit. Your browser reads the file; it is never uploaded anywhere.

How to use it

  1. Drop a .csv, .tsv or .txt file on the drop zone, choose one with the file picker, or paste the text.
  2. The delimiter (comma, semicolon, tab or pipe) is detected for you. Change it, or turn off "First row is a header", if the guess is wrong.
  3. Click a header to sort, use the column menu to filter, or type in the search box to filter every column at once. Double-click a cell to edit it.
  4. Download the rows you are looking at as CSV, JSON or an Excel .xlsx file. The download follows your sort, filters and edits.

Built with SvGrid

The table is SvGrid, a free MIT data grid for Svelte 5. "Get the code" turns your file into a Svelte component that renders the same table in your own app. See the documentation and the live demos.

Frequently asked questions

Is my CSV file uploaded to a server?

No. The file is read with your browser's File API and parsed by code running in this page. Nothing is sent anywhere, so it is safe to open files with customer or financial data.

How large a CSV file can it open?

The table only draws the rows that are on screen, so scrolling stays smooth on long files. The practical limit is your browser's memory, not a row cap set by the tool.

Which delimiters and formats does it read?

Comma, semicolon, tab and pipe, detected from the first rows. Quoted fields can contain the delimiter, line breaks and doubled quotes, as RFC 4180 describes. A byte order mark at the start of the file is ignored.

Can I edit the CSV and save it?

Yes. Double-click a cell, type the new value and press Enter. "Download CSV" then writes the edited rows, in the order and with the filters you have on screen.

Can I convert a CSV file to JSON?

Yes. "Download JSON" writes an array of objects keyed by the header row, with numeric columns written as numbers.

Can I convert a CSV file to Excel?

Yes. "Excel" writes an .xlsx file with numbers stored as numbers, the header row frozen and your sort and filters applied. It is the export from @svgrid/enterprise, the same exportGrid call you would use in your own Svelte app.

Why does a column of IDs or ZIP codes stay as text?

A column is treated as numbers only when every value is a plain number. A value with a leading zero, like 00501, keeps the whole column as text so the zero is not lost.

More free tools