Edit CSV/TSV files as a spreadsheet grid in VS Code — lossless edits (only the changed cell is rewritten), sort, filter, paste from Excel, insert/delete rows & columns, delimiter auto-detection.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Edit .csv and .tsv files as a spreadsheet grid in VS Code. Each value lives in its own cell, organized in rows and columns.
Features
Lossless editing — only the cell you change is rewritten. Quotes, line endings (LF/CRLF), BOM, blank lines, ragged rows and the final newline of the file are preserved, so Git diffs stay small.
Editable grid with sticky column letters and a sticky header row.
Sort by any column (numbers sorted numerically, 1,5 decimals supported, empty cells last, header row kept on top).
Filter rows by text (view only — never modifies the file).
Paste from Excel / Google Sheets — a copied block is spread across cells and grows the grid.
Insert / delete rows and columns anywhere (hover a row number or column letter).
Delimiter auto-detection (,; tab |) that ignores delimiters inside quotes and checks consistency across lines. Parse as lets you re-read the file with another delimiter without rewriting it.
Large files: rows are rendered 1,000 at a time (Show more / Show all).
Keyboard
Key
Action
Enter
Move down (adds a row at the end)
Tab / Shift+Tab
Next / previous cell (wraps rows)
↑ / ↓
Move between rows (inside multi-line cells: Alt+↑/↓)
Shift+Enter
New line inside the cell
Esc
Revert the current cell to its value before you started editing
Ctrl/Cmd+S
Save (pending typing is applied first)
Ctrl/Cmd+Z
Undo (typing not yet applied is undone first, then VS Code document undo)
Good to know
Changes are applied to the open document like any VS Code edit: the tab becomes dirty and you save with Ctrl/Cmd+S (or auto-save).
Parse as only changes how the file is read. It never converts the file to another delimiter.
Sorting rewrites the row order in the file; undo it with Ctrl/Cmd+Z.
To edit the raw text, use Raw text or Reopen Editor With… → Text Editor.
While a filter is active, pasting several rows is refused (they would land in hidden rows) — clear the filter first. Inserting a row clears the filter.
Pasting several lines of plain text (not from a spreadsheet) goes into a single cell.
Development
npm install
npm test # unit, host, UI (jsdom) and integration stress tests
npm run test:e2e # real Chromium (set CHROME_PATH, or install @sparticuz/chromium on Linux)