CSV Editor & Viewer Online
Open, view, edit, and convert CSV files — entirely in your browser. Filter, sort, dedupe, group-by, find-replace, split big files, and convert to JSON, SQL, Markdown, HTML, XML, YAML, or TSV. Web Worker parsing + virtualized table keeps it smooth even with millions of rows.
Paste CSV/TSV data, or upload a file (up to several hundred MB)
0 characters · 0 lines
The free online CSV editor & viewer
CSV Toolkit is a free online CSV editor and CSV viewer that runs entirely in your browser — no signup, no upload, no rate limit. Open any CSV, TSV, or delimited file (comma, semicolon, tab, pipe, or custom), view it as a sortable table, and run the cleaning, transforming, and converting operations you'd normally do in Excel or a Python script. It's built to handle millions of rows smoothly using Web Worker parsing and virtualized table rendering, so a 100MB CSV doesn't freeze your browser the way most online CSV tools do.
What can you do with CSV Toolkit?
| If you searched for… | How to do it here |
|---|---|
| "open CSV file online" / "view CSV file online" | Drop the file on the Import tab → click Parse → the table opens in the Transform tab |
| "CSV editor online" / "edit CSV online" | Open any CSV in seconds, then use the Transform sidebar to modify rows and columns |
| "CSV to JSON converter" | Import → Export tab → JSON (array of objects or array of arrays) → Download |
| "CSV to SQL" / "CSV to INSERT statements" | Export tab → SQL → set the destination table name → Download .sql |
| "CSV to Markdown table" | Export tab → Markdown → Copy & paste into your README / blog |
| "CSV to HTML" / "CSV to HTML table" | Export tab → HTML → ready-to-paste <table> markup |
| "CSV to XML" or "CSV to YAML" | Export tab → XML / YAML → Download |
| "remove duplicate rows from CSV" | Transform → Dedupe identical rows (or by a specific column) |
| "filter CSV rows" / "filter CSV by column" | Transform → Filter section → column + operator (contains / equals / greater than / less than) + value |
| "sort CSV by column" | Transform → select column → Asc / Desc |
| "split large CSV into multiple files" | Split tab → set rows per chunk → Download N files |
| "CSV pivot table" / "group by CSV" / "aggregate CSV" | Analyze tab → Group by + aggregate (count / sum / avg / min / max) |
| "CSV column statistics" / "analyze CSV" | Analyze tab — per-column type detection, min / max / sum / mean / median / top values |
| "rename CSV columns" / "drop CSV columns" | Transform → select column → type new name + Enter to rename, or Drop button to remove |
| "CSV find and replace" | Transform → Find & replace section → scoped to one column or all |
| "CSV uppercase / lowercase / title case" | Transform → select column → ABC / abc / Abc buttons |
| "trim whitespace CSV" / "clean CSV data" | Transform → Trim whitespace (also: Remove empty rows) |
| "TSV editor" / "pipe-delimited file viewer" | Set delimiter on Import tab (tab / pipe / semicolon / custom) |
| "large CSV viewer" / "million-row CSV editor" | Uses Web Worker parsing + virtualized table; tested with 10M+ rows |
| "CSV without Excel" / "view CSV without spreadsheet software" | Browser-based — works on Chromebooks, locked-down corporate laptops, and mobile |
Performance: handles millions of rows
Most online CSV tools choke at 10,000-100,000 rows because they load the entire file into a single DOM table — your browser tries to render 100k <tr> elements and freezes for 30 seconds. CSV Toolkit avoids this with three tricks:
- Web Worker parsing. Files larger than ~500KB parse in a background thread (Papa Parse
worker: true), so your main thread keeps responding to clicks and scroll while the parser works. You see a live row count as parsing progresses. - Virtualized table rendering. Only ~30 rows are in the DOM at any given time — the rows you're currently looking at, plus a small overscan buffer. Scrolling to row 500,000 takes the same time as scrolling to row 50.
- Transitions for transforms. Filter / sort / dedupe operations run inside React 18 transitions, so the UI stays interactive while the operation completes. A spinner appears in the stats bar so you know a transform is in progress.
Per-column statistics are automatically skipped for datasets over 50,000 rows (computing unique counts and top values across millions of rows would be slow). Click "Compute stats anyway" on the Analyze tab to opt in.
CSV vs Excel: when to use which
CSV (comma-separated values) is a plain-text format. It's smaller, faster, and universally compatible across every spreadsheet (Excel, Google Sheets, Numbers, LibreOffice Calc), every database (Postgres, MySQL, SQLite, MS SQL Server, BigQuery), every analytics tool (Python pandas, R, Power BI, Tableau), and every API import. Excel files (XLSX) carry formatting, formulas, multiple sheets, and proprietary metadata — useful for reports, but overkill for data transfer.
Use CSV Toolkit when you need to look at or clean up CSV data fast without opening Excel — or when you don't have Excel installed (Chromebook, Linux without LibreOffice, mobile). For complex multi-sheet spreadsheets with formulas, stick with Excel or Google Sheets.
Frequently Asked Questions
How do I open a CSV file online?
Click Upload file on the Import tab and pick your .csv file (also works with .tsv, .txt, and any delimited extension). The toolkit reads it via your browser's FileReader — no upload to a server. Auto-detect handles the delimiter; if it picks wrong, override on the Import tab. Click Parse to load.
Can this CSV editor really handle millions of rows?
Yes. Parsing uses Papa Parse's Web Worker mode for files over ~500KB so the UI stays responsive. The data table uses row virtualization so only visible rows are in the DOM — you can scroll smoothly through datasets with 5M-10M rows. The hard limit is browser RAM (~1-2GB typically); a CSV under ~500MB of text content will fit comfortably on modern machines.
How do I convert CSV to JSON, SQL, or Markdown?
Import your CSV → click the Export tab → select your target format from the dropdown (JSON as array-of-objects or array-of-arrays, SQL INSERT statements, Markdown table, HTML table, XML, YAML, or TSV) → Copy or Download. SQL export lets you set the target table name.
How do I remove duplicate rows from a CSV?
On the Transform tab, click "Dedupe identical rows" to remove rows that exactly match another row. To dedupe by a specific column (e.g. only keep one row per email), select the column in "Column operations" and click "Dedupe by this column".
How do I split a big CSV into smaller files?
On the Split tab, set the number of rows per chunk and click Download. The toolkit produces N separate CSV files, each with the same header row and up to your row-count limit. Your browser may ask for permission for the first download and then auto-allow the rest.
How do I merge or combine multiple CSV files?
Paste the first CSV, click Parse, then go back to the Import tab and paste/upload the second file. Concatenated import is on the roadmap — for now, the simplest workflow is to concatenate the CSVs in a text editor (drop them all into one file with one header at the top) and import the combined file.
How do I filter CSV rows by a column value?
Transform tab → Filter section → pick the column, choose an operator (contains, equals, not equals, greater than, less than), enter a value, click Filter. The data table updates in place to show only matching rows. Filters stack — apply multiple in sequence to narrow down progressively.
Can I undo a transform?
Not yet — every transform modifies the working dataset. To undo, click Reset on the stats bar to go back to the import step, or export an intermediate copy if you're doing a complex multi-step pipeline.
Is the CSV editor free? Is there a paid tier?
Completely free, no signup, no rate limit, no paid tier. Use it as much as you want, on any size dataset that fits in your browser memory. It's a top-of-funnel tool from Quillly, the blogging platform for the AI era.
Is my CSV data private?
100%. All processing happens in your browser via JavaScript. Your file is never uploaded to a server, stored, logged, or shared. Inspect the page's network tab — no XHR or fetch requests are made when you parse or transform data. This makes it safe for sensitive data (customer lists, payroll, financial records) and compliant with GDPR / HIPAA / SOC 2 data-handling requirements.
Why is the Analyze tab empty for my huge file?
Per-column statistics auto-compute for datasets up to 50,000 rows. Above that, computing unique counts and top-5 values across millions of rows is slow enough to noticeably pause the UI. Click "Compute stats anyway" to opt in — typically takes 1-5 seconds for a million rows.
What file extensions are supported?
.csv, .tsv, .txt for input. The delimiter is what matters, not the extension — a pipe-delimited file with a .psv extension works fine if you rename to .txt or just paste the content.
How do I export to Excel (XLSX)?
Direct XLSX export isn't supported (XLSX is a complex binary format). Export to CSV and open it in Excel — Excel will recognize the delimiter and offer to convert to XLSX on save. For best Excel compatibility, use comma delimiter and UTF-8 encoding (the default).