How CSV Grid Editor compares with Excel and with the tools people already use on CSV files, and what is still missing. Updated 2026-09-09 for version 0.2.0.
Legend: ✅ available · ◐ partial · ❌ missing · — not applicable to a plain-text CSV.
Compared against: Microsoft Excel (desktop), Rainbow CSV (VS Code), Edit CSV (VS Code, janisdd), Excel Viewer (VS Code, GrapeCity), Data Wrangler (VS Code, Microsoft), and the CLI tools csvkit, Miller (mlr) and qsv.
| Feature |
Excel |
Rainbow CSV |
Edit CSV |
Excel Viewer |
Data Wrangler |
csvkit / mlr / qsv |
CSV Grid Editor |
| Grid view with row numbers |
✅ |
❌ (text) |
✅ |
✅ |
✅ |
❌ |
✅ |
| Virtualised rendering for 100k+ rows |
✅ |
✅ |
◐ |
✅ |
✅ |
✅ |
✅ (csv.maxRows) |
| Column type inference |
✅ |
◐ |
❌ |
✅ |
✅ |
✅ |
✅ |
| Frozen header row |
✅ |
— |
✅ |
✅ |
✅ |
— |
✅ |
| Frozen columns / freeze panes |
✅ |
— |
✅ (fixed columns) |
✅ |
❌ |
— |
◐ row numbers only (see gaps) |
| Resize / auto-fit column widths |
✅ |
◐ align |
✅ |
✅ |
✅ |
— |
✅ |
| Hide / show columns |
✅ |
❌ |
❌ |
✅ |
✅ |
✅ (select) |
✅ |
| Reorder columns by drag |
✅ |
❌ |
❌ |
✅ |
✅ |
✅ (select) |
✅ (written to file) |
| Wrap text / multi-line cells |
✅ |
◐ |
✅ |
❌ |
❌ |
— |
✅ |
| Go to cell (Ctrl+G) |
✅ |
◐ (Ctrl+G line) |
❌ |
❌ |
❌ |
— |
✅ |
| Rainbow column colouring in text |
— |
✅ |
— |
— |
— |
— |
✅ |
| Hover shows column name (text) |
— |
✅ |
— |
— |
— |
— |
✅ |
| Field-count consistency lint |
— |
✅ |
◐ |
❌ |
❌ |
✅ (csvclean) |
✅ (diagnostics + ragged-row banner) |
| Theme aware |
✅ |
✅ |
✅ |
✅ |
✅ |
— |
✅ |
| Zoom |
✅ |
(VS Code) |
(VS Code) |
(VS Code) |
(VS Code) |
— |
(VS Code) |
| Feature |
Excel |
Rainbow CSV |
Edit CSV |
Excel Viewer |
Data Wrangler |
csvkit / mlr / qsv |
CSV Grid Editor |
| Edit cells in place, F2 / Enter |
✅ |
text only |
✅ |
❌ (read-only) |
❌ |
— |
✅ |
| Type to replace cell content |
✅ |
— |
❌ |
— |
— |
— |
✅ |
| Native save, undo/redo, dirty state |
✅ |
✅ |
◐ (own undo) |
— |
— |
— |
✅ (VS Code text document) |
| Range selection, copy / cut / paste |
✅ |
◐ |
✅ |
◐ copy |
❌ |
— |
✅ |
| Insert / delete / duplicate rows |
✅ |
— |
✅ |
— |
❌ |
✅ |
✅ (multi-row, “Insert rows…”) |
| Insert / delete / rename / duplicate columns |
✅ |
— |
✅ |
— |
✅ |
✅ |
✅ (multi-column) |
| Move rows / columns |
✅ |
— |
❌ |
— |
❌ |
— |
✅ |
| Fill down / fill right (Ctrl+D / Ctrl+R) |
✅ |
— |
❌ |
— |
❌ |
— |
✅ |
| Fill series (fill handle) |
✅ |
— |
❌ |
— |
❌ |
— |
◐ menu action, no drag handle |
| Clear contents (Delete) |
✅ |
— |
✅ |
— |
— |
— |
✅ |
| Select all (Ctrl+A), Ctrl+Home / End |
✅ |
— |
◐ |
— |
— |
— |
✅ |
| Header row toggle, delimiter override |
◐ (import wizard) |
✅ |
✅ |
❌ |
✅ |
✅ |
✅ |
| Quote / escape / comment options |
◐ |
✅ |
✅ |
❌ |
✅ |
✅ |
◐ RFC 4180 quoting only (see gaps) |
| Trim whitespace, change case |
✅ (functions) |
— |
✅ trim |
— |
✅ |
✅ |
✅ |
| Remove empty rows |
✅ (manual) |
— |
✅ |
— |
✅ |
✅ |
✅ |
| Remove duplicates |
✅ |
— |
❌ |
— |
✅ |
✅ (dedup) |
✅ (choose key columns) |
| Text to columns (split) |
✅ |
— |
❌ |
— |
✅ |
✅ (nest, split) |
✅ |
| Merge / concatenate columns |
✅ (formula) |
— |
❌ |
— |
✅ |
✅ |
✅ |
| Transpose |
✅ |
— |
❌ |
— |
❌ |
✅ (transpose) |
✅ |
| Fill empty cells |
✅ |
— |
❌ |
— |
✅ |
✅ (fill-empty) |
✅ |
| Formulas per cell |
✅ |
— |
❌ |
— |
✅ (pandas) |
✅ (DSL) |
◐ compute-column expressions, not per-cell formulas |
| Flash Fill |
✅ |
— |
❌ |
— |
❌ |
— |
❌ |
| Number / date formatting |
✅ |
— |
❌ |
◐ |
✅ |
✅ |
❌ (values are stored as text) |
| Data validation, comments, conditional formatting |
✅ |
— |
❌ |
❌ |
❌ |
— |
❌ (not representable in CSV) |
| Highlight leading/trailing whitespace |
❌ |
❌ |
✅ |
❌ |
❌ |
— |
✅ |
| Feature |
Excel |
Rainbow CSV |
Edit CSV |
Excel Viewer |
Data Wrangler |
csvkit / mlr / qsv |
CSV Grid Editor |
| Find / replace with regex |
✅ (wildcards) |
(VS Code) |
✅ |
❌ |
❌ |
✅ (csvgrep) |
✅ |
| AutoFilter value list with search |
✅ |
❌ |
❌ |
✅ |
✅ |
— |
✅ (cascading, counts, blanks) |
| Text / number / date condition filters |
✅ |
❌ |
❌ |
◐ |
✅ |
✅ |
✅ (two conditions, And/Or, wildcards) |
| Filter by selected cell’s value |
✅ |
❌ |
❌ |
❌ |
❌ |
— |
✅ |
| Sort (view) |
✅ |
❌ |
✅ |
✅ |
✅ |
✅ |
✅ |
| Sort written back to the file |
✅ |
❌ |
✅ |
❌ |
✅ |
✅ (csvsort) |
✅ |
| Multi-level sort dialog |
✅ |
❌ |
❌ |
◐ |
✅ |
✅ |
✅ (3 levels) |
| Custom sort orders (lists) |
✅ |
❌ |
❌ |
❌ |
❌ |
— |
❌ |
| Top-N / percent filter |
✅ |
❌ |
❌ |
❌ |
❌ |
✅ (top) |
◐ via SQL LIMIT or sort |
| Feature |
Excel |
Rainbow CSV |
Edit CSV |
Excel Viewer |
Data Wrangler |
csvkit / mlr / qsv |
CSV Grid Editor |
| Selection sum / average / count / min / max |
✅ |
❌ |
◐ |
❌ |
❌ |
— |
✅ |
| Column statistics (distinct, nulls, quartiles, std dev) |
◐ |
❌ |
◐ |
❌ |
✅ |
✅ (csvstat, stats) |
✅ |
| Frequency table / top values |
✅ (pivot) |
❌ |
❌ |
❌ |
✅ |
✅ (frequency) |
✅ |
| Charts |
✅ |
❌ |
❌ |
❌ |
✅ (histograms) |
❌ |
◐ histogram / top-values bar chart |
| SQL over the data |
◐ (Power Query) |
✅ (RBQL) |
❌ |
❌ |
✅ (pandas) |
✅ (csvsql) |
✅ (SQLite) |
| Pivot tables |
✅ |
❌ |
❌ |
❌ |
✅ |
✅ (mlr) |
◐ GROUP BY in SQL, no pivot UI |
| Random sample |
❌ |
❌ |
❌ |
❌ |
✅ |
✅ (sample) |
✅ (pipeline step) |
| Join with another file |
✅ (Power Query) |
❌ |
❌ |
❌ |
✅ |
✅ (csvjoin) |
❌ (see gaps) |
| Stack / append files |
✅ (Power Query) |
❌ |
❌ |
❌ |
✅ |
✅ (csvstack) |
❌ (see gaps) |
| Feature |
Excel |
Rainbow CSV |
Edit CSV |
Excel Viewer |
Data Wrangler |
csvkit / mlr / qsv |
CSV Grid Editor |
| Recorded / reusable transformation steps |
✅ (Power Query, macros) |
❌ |
❌ |
❌ |
✅ (generates pandas) |
✅ (shell) |
✅ (*.csvpipe.json, no-code / low-code / code) |
| Run automatically on open / save |
◐ (VBA) |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
| Scripting with a real language |
✅ (VBA, Python) |
❌ |
❌ |
❌ |
✅ (Python) |
✅ |
✅ (JavaScript, any CLI via stdin/stdout) |
| Export JSON / Markdown / HTML / SQL |
◐ |
❌ |
❌ |
❌ |
✅ |
✅ (csvjson, mlr) |
✅ |
| Change delimiter / quoting on export |
✅ |
❌ |
✅ |
❌ |
✅ |
✅ |
✅ (delimiter), ◐ quote-all |
| Excel (.xlsx) import / export |
✅ |
❌ |
❌ |
✅ (view) |
✅ |
✅ (in2csv) |
❌ (see gaps) |
| Encoding selection / BOM |
✅ |
(VS Code) |
✅ |
❌ |
✅ |
✅ |
(VS Code files.encoding) |
- Freeze columns. Tabulator warns that frozen columns other than the row header behave unpredictably with range selection, so only row numbers are frozen today. Fixing it means either accepting that warning with testing or rendering a separate frozen pane.
- Join and append other files. csvkit’s
csvjoin / csvstack and Data Wrangler cover this. Natural home: two pipeline steps (join with key columns and left/inner mode; append with a file glob) plus a Data-menu dialog.
- Fill handle drag. Fill down/right/series exist as commands and shortcuts; the drag handle on the selection corner is not implemented.
- Per-cell formulas. CSV cannot store formulas, but a computed column that re-evaluates from an expression (the pipeline
compute step) could be surfaced as a “formula column” in the grid. Not planned for the file format itself.
- Number and date formatting. Values are text in CSV; a display-only format (thousands separators, date locale) per column would help reading without changing the file.
- Custom sort lists and sort by colour. Not planned; multi-level sort covers most needs.
- Pivot table UI. SQL
GROUP BY works today; a form-driven pivot (rows, columns, aggregate) would help non-SQL users.
- Quote character, escape character and comment lines as parse options (Edit CSV, csvkit). PapaParse supports them; they need settings plus round-tripping on save.
- .xlsx import/export. Would need SheetJS or ExcelJS; deliberately excluded to keep the bundle small.
- Drag rows to reorder. Move up/down exists; drag conflicts with row-header range selection in Tabulator.
- Conditional formatting, data validation, comments. Not representable in CSV; could exist as workspace-side metadata but is out of scope.
- Excel Viewer is read-only, so the editing rows are blank for it; Rainbow CSV works in the text editor and is compared on text-mode features.
- CLI tools are compared on capability, not interactivity. Any of them can be invoked from a pipeline
command step, so their capabilities are reachable from the grid.
- Data Wrangler operates on pandas DataFrames and generates Python; it is the closest analogue to the pipeline builder here.