tsvsheet logo tsvsheet™

Recipes

The sheet is plain text, so everything that already speaks text speaks tsvsheet. Verified walkthroughs for piping sheets through databases, desktop and web spreadsheets, and charting tools — in both directions.

Version control

The sheet is the source and every value is derived, so a review shows the decision someone made — diffable, mergeable, blameable, and gateable in CI.

GitThe sheet is the source and every value is derived, so a review shows the decision someone made — one changed number, not a re-exported binary. Diff it, recompute it, merge two people's edits, blame a formula, and gate it in CI.

Databases

A rendered sheet is a table. Import it, query it, join it — and turn query results back into living sheets.

SQLitesqlite3 imports tab-separated values natively, so a rendered sheet is one pipe away from being a queryable table — and a query result is one formula row away from being a sheet again.
DuckDBDuckDB queries tab-separated files in place — no schema, no import step. A rendered sheet is a table the moment the pipe connects, with column types sniffed for free.
PostgreSQLPostgreSQL's COPY text format is tab-separated — a rendered sheet is already a valid COPY stream, and a COPY out is already a sheet. The two formats were made for each other; they just didn't know it.

Desktop & web spreadsheets

TSV is the lingua franca of spreadsheet clipboards and exports — tsvsheet speaks it natively, in both directions.

ExcelThe clipboard interchange format between spreadsheet apps is tab-separated values. Copy a range in Excel and TSV is what's on your clipboard — one paste away from being a .tsvt.
Google SheetsGoogle Sheets exports any tab as TSV over a plain URL, and tsvsheet's import functions drink it directly — while Sheets' IMPORTDATA pulls rendered tsvsheet output the other way. Two spreadsheets, one wire format, both directions live.

Charts

Computed output is plain TSV: chart it in the terminal, in the browser, or in the grid itself.

ChartsComputed output is plain TSV — the input format charting tools have eaten for decades. Plot a sheet in the terminal, render it to SVG, load it in the browser, or draw the chart inside the grid itself.

Markup & docs

A computed sheet freezes into a portable Markdown table — commit it to a README, a wiki, or a docs site and it renders anywhere, no engine attached.

MarkdownA computed sheet freezes into a GitHub-flavored Markdown table — one command, and results that render in any README, wiki, or docs site with no engine attached.

The language itself

What a sheet can say about itself — declared in the file, carried through git, honored by every viewport.

Hide, header and freezeA sheet can say what a viewport should do with it — which rows and columns to hide, which carry headers, which stay pinned while the rest scrolls — declared in the file itself, and never at the cost of the data.

Every command on these pages ran for real before it was published — against the sheets in tsvsheet.examples, which each carry a Try link into the playground. Looking for the language itself? Start with the function reference or the specification.