Data Studio — the complete guide
Data Studio is a data analysis workspace that runs entirely in your browser. It opens CSV, Excel, JSON and Parquet files with millions of rows and lets you filter, clean, group, pivot, join, chart and query them with SQL. Underneath is DuckDB, an analytical SQL database, compiled to WebAssembly and loaded into the page — so nothing is uploaded. Your files are read from your own disk and your workspace autosaves in your own browser.
This page is the reference. To just start, open Data Studio and drop in a file, or press Try sample data.
The workspace at a glance
- Left — your data: every imported table, your saved queries, and tools that work across tables (compare, stack).
- Centre — tabs. A table tab shows the data as a grid, a chart or a column profile; a query tab has the SQL editor above its results.
- Right — the open table's applied steps, and statistics for whichever column you clicked.
Importing data
Drop files anywhere on the workspace or press Import (⌘O). Each file becomes a table named after it, which is also the name you use in SQL.
- CSV and TSV — the delimiter, header row, quoting and column types are detected. Malformed rows are skipped rather than stopping the import.
- Excel — .xlsx workbooks. With more than one sheet you choose which to import, and each becomes its own table. The older .xls format is not supported; re-save it as .xlsx.
- JSON — an array of objects, or newline-delimited JSON (.jsonl, .ndjson).
- Parquet — read directly from the file, column by column.
Files up to 250 MB are loaded into the in-page database, which makes every query fast. Larger files, and all Parquet files, are queried straight from disk instead: they open immediately and use little memory, but each query re-reads the file, so it is slower. The practical ceiling is the memory your browser gives one tab.
Reading a table
The grid only draws the rows on screen and fetches the rest as you scroll, so a table of two million rows scrolls the same as one of twenty, and dragging the scrollbar to the bottom lands on the last row. Each column heading shows its type — text, number, date or true/false. Drag a heading's edge to resize it.
Click a heading to see that column's statistics on the right: how many values are blank, roughly how many are distinct, the average, median, minimum and maximum, a histogram for numbers, and the ten most common values. Switch the view to Profile to see those figures for every column at once — the quickest way to find a column that imported as text when it should be numbers.
Steps: changing data without changing the file
Everything you do from the toolbar or a column's menu is added to the table as a step, listed on the right in the order it applies. Your file is never modified. Remove any step with its × and the table is recalculated from the file without it; ⌘Z removes the most recent one. If a step stops working — say an earlier change removed a column it needs — the table shows which step failed and why.
- Filter — keep rows matching one or more conditions (equals, contains, between, is blank and more), all of them or any of them.
- Sort — by one or more columns.
- Group — one row per group, with counts, sums, averages, medians, minimums, maximums, distinct counts or lists.
- Pivot — rows down the side, one column for each value of another column (up to 200), and a summary in each cell.
- Join — bring in columns from another table where values match, like a VLOOKUP across the whole table; left, inner, full or right.
- Clean — remove duplicate rows, tidy spaces, find and replace, change a column's type, split a column on a delimiter, fill blanks (with a value, the value above, zero, the average or the median), and change text case.
- Add column — a new column from a SQL expression, such as
units * unit_price. - Columns — choose which columns to keep and in what order.
Changing a column to a number strips currency signs, spaces and thousands separators first, so
$1,200.50 becomes 1200.5; values that still are not numbers become blank rather than failing the
step. Show the SQL under the steps opens the query your steps produce, which is a good way to learn SQL.
Charts
Switch any table or query result to Chart and choose bar, horizontal bar, line, area, scatter or histogram. Pick the column along the bottom and what to measure — a count of rows, or the sum, average, median, minimum or maximum of a column. Dates can be grouped by day, week, month, quarter or year. Split into series by a second column to compare groups: up to eight series are drawn, and the rest are combined into "Other" rather than drawn in colours nobody can tell apart. Charts always use a single axis. Hover for exact values, and save the chart as a PNG.
SQL
Press New query for a SQL tab. Every table is available by name; the editor autocompletes table and
column names, and ⌘Enter (Ctrl+Enter) runs the query. The dialect is DuckDB's, which is close
to PostgreSQL and adds conveniences like GROUP BY ALL, SELECT * EXCLUDE (…),
PIVOT and QUALIFY. Several statements separated by semicolons run in order, and the
last one's result is shown.
Queries are saved in the workspace. Save as table freezes a query's result into a new table that you can add steps to, chart and join like any other — it keeps those results even if you edit the query later.
Asking questions in plain English
Ask a question sends your question, with your tables' names, column names, types and a few sample rows, to a small language model — Qwen3 0.6B, about 550 MB, downloaded once — that runs on your device. It writes a read-only query, which is checked against the database before it runs; if the database rejects it, the error goes back to the model for one more attempt. The query then runs and stays in the editor for you to read and change.
Two honest caveats. A model this small misreads questions more often than a large hosted one, so read the SQL before trusting the answer. And it needs a graphics card with WebGPU to reply in seconds; without one it can run on the processor, but a reply takes a minute or more. Everything else in Data Studio works without it.
Comparing and stacking tables
Compare two tables finds what changed between two versions of a file. Choose an ID column to match rows on and every changed row shows its old and new values side by side, with the names of the columns that changed; rows in only one version are listed as added or removed. Without an ID, whole rows are compared.
Stack tables puts the rows of several tables into one — for monthly exports with the same columns. Columns are matched by name, and a column can record which table each row came from.
Exporting
Export any table or query as CSV, Excel, JSON, Parquet or TSV, or copy its first 500 rows as a Markdown table. Exports contain the table as your steps leave it. An Excel sheet holds at most 1,048,576 rows, so a larger result is refused as Excel rather than silently cut short — export CSV or Parquet instead.
Your workspace
Tables, steps, queries, charts and open tabs autosave to your browser's storage on this device, together with copies of the files you imported, so the workspace is still there when you come back. If the browser's storage is full, you are told, and a file may need importing again after a reload. Clearing this site's data in your browser removes the workspace.
The single-purpose tools
For one job, the same engine powers quicker tools with no workspace to set up: compare CSV files, merge CSV files, remove duplicates, split a CSV file, Excel to CSV, CSV to Excel and the Parquet viewer.
Privacy, precisely
Your files are read from disk by the page and processed by WebAssembly on your own processor. The database, its Excel, JSON and Parquet readers and the language model are all served from this site rather than a third-party CDN, so no other party learns what you opened. The workspace is stored in your browser on this device and nowhere else.
Ready? Open Data Studio.