Skip to content
A CSV file open in the grid editor inside VS Code

CSV Grid Editor

A spreadsheet over the file itself — not a copy of it. Edit, filter, chart, query with SQL and re-run your cleanup as a pipeline, without leaving VS Code.
Marketplace versionMarketplace installsOpen VSX versionCI statusMIT licence
Opening a CSV file in the grid, filtering a column, and running a SQL query

CSV is the format everyone actually exchanges, and reading one in a text editor means counting commas. Opening it in a spreadsheet means leaving your editor — and often means the spreadsheet silently reformats your data on the way back out: dates rewritten, leading zeros dropped, long identifiers turned into scientific notation.

This extension puts the grid inside VS Code, on top of the file itself. The text document stays the source of truth, so Ctrl+S, Ctrl+Z, the dirty indicator, file watching and Git all behave exactly as they do for any other file. Nothing is cached in a parallel model that can drift, and nothing reformats your data behind your back.

Nothing to configure

Install it and open a .csv, .tsv, .tab or .psv file. The delimiter, the header row and every column type are detected, and all three can be overridden per file.

Nothing to upload

Every feature — parsing, statistics, charts, SQL, pipelines — runs locally inside VS Code. No service sees your data, and the extension works offline.

Nothing to unlearn

AutoFilter dropdowns, Ctrl+F, Ctrl+D, Ctrl+R, range selection with a live sum in the status bar. If you know the spreadsheet, you already know this.

Big files stay fast

Virtualised rendering keeps scrolling smooth past 100,000 rows, and editing, SQL and export operate on the whole file regardless of how much is on screen.

Edit

A real grid over a real file

Double-click, F2, or just start typing. Insert, duplicate, move, delete and hide rows and columns. Split a column, merge several, transpose the table, fill down and right, trim, change case, drop duplicates. Ctrl+S saves the file; Ctrl+Z undoes into VS Code’s own undo stack.

Find

Excel-style AutoFilter

A searchable list of each column’s distinct values with counts, tri-state (Select All) and (Blanks), plus Text, Number and Date condition filters with wildcards. Value lists cascade from the other columns, so you never pick a combination that matches nothing.

Understand

Statistics and charts

Per-column counts, distinct values, blanks, min, max, sum, mean, median, standard deviation, quartiles and top values. Histograms for numeric columns, top-value bars for everything else.

Query

Real SQL, in memory

The file is loaded into an in-memory SQLite database named csv. Joins onto itself, window functions, aggregates — all of it. Results copy out or open as a new CSV.

Repeat

Pipelines

Describe a cleanup once as a .csvpipe.json file and re-run it on demand, on open, or on save. Fifteen no-code steps, two low-code expression steps, and code steps that shell out to pandas, jq, awk, Miller or anything else you already have.

Ship

Export anywhere

The whole file or just the selection, to JSON, Markdown, HTML, SQL inserts, or a different delimiter. Selections go straight to the clipboard in a form Excel understands.

  1. Install the extension.

    From the Marketplace, or from a terminal:

    Terminal window
    code --install-extension bash-365.csv-grid-viewer
  2. Open any delimited file, then choose Open in Grid Editor from the title bar, Explorer menu, or Command Palette. CSV/TSV open as text by default so the grid does not hijack them.

  3. Select a range of numbers. The status bar shows count, sum, average, minimum and maximum, exactly like the spreadsheet you came from.

  4. Click the caret in a column header (or press Alt+Down) for sorting and Excel-style filtering.

  5. Open the SQL panel and run SELECT * FROM csv LIMIT 10.

Library Role
PapaParse RFC 4180 parsing and serialisation
Tabulator Virtualised grid, range selection, clipboard
sql.js SQLite compiled to WebAssembly
Chart.js Charts

Released under the MIT licence. Requires VS Code 1.90 or later; everything else ships inside the extension.