SQL Everything 100% local Google Sheets, CSV & More

Chrome extension for Google Sheets and CSV files

Query your Google Sheets, CSV files, TXT files or HTML tables like your favorite database.

Real SQL on Google Sheets, CSV and TXT files, in one panel. Built by a data scientist, for my fellow data people who love SQL.

100% local. Your data never leaves your browser.

Free. No account. Needs Chrome 116 or newer.

See it in action

From sheet to answer in one panel.

Load the tabs of a sheet, write a query, read the table. This is a real recording, with sample data.

Why I made it

I built it to fix my own pain.

I am a data scientist. Like my colleagues, I work with data all day, and a lot of that data lives in Google Sheets and CSV files. Every time I needed to join two tabs, group rows, or filter with several conditions, I spent more time on formulas than on the question. The formulas got long, and they were hard to read and hard to fix. SQL is made for exactly this work. So I put a SQL editor next to the sheet, and I use it myself.

If you love SQL, work with data every day, and also struggle with data work in Sheets, this is for you. It is for my fellow data people.

How it works

Three steps.

You do not need to set up anything outside Chrome.

1

Open a sheet

Open any Google Sheet you can access, then click the extension icon. The panel opens on the side.

2

Load a tab or a file

Press "Load this tab", or "Load all tabs". For a CSV, TSV or TXT file, press "Upload CSV file" or drag files onto the panel. You can also press "Paste table" and paste cells you copied from a web page or a spreadsheet. Each tab, file or pasted table becomes a table. The first row is used as the header.

3

Run a query

Write SQL and press Ctrl + Enter (Cmd + Enter on Mac). Download the result as CSV, or copy it and paste it into a sheet.

Names are simple: the spreadsheet is the schema and the tab is the table. A tab called "Q1 Sales" in the sheet "My Budget" becomes My_Budget.Q1_Sales. A file called "My Customers.csv" becomes files.My_Customers.

Features

What is in version 0.1.

A small set of tools. Each one is there because I used it while testing.

Real SQL engine

It uses DuckDB, compiled to run in the browser. Joins, window functions, GROUP BY and more.

Sheets and CSV files together

Load tabs from several spreadsheets, CSV, TSV or TXT files from your computer, and tables you paste. Join them all in one query.

Refresh when data changes

Press the refresh icon next to a table. It fetches the tab again and keeps the table name.

Open in a window

Need more room? Open the workspace in its own window, with the data list on the left and results on the right.

Saved queries

Save a query for a spreadsheet and run it again next week. Your tables and last query also come back when you reopen the panel. Everything stays in your browser.

Take results with you

Download a CSV file, or use "Copy for Sheets" and paste the result straight into a sheet.

Privacy

100% local. Your data stays in your browser.

There is no server behind this extension. I cannot see your sheets, your queries, or your results. Read the privacy policy.

What happens
  • Sheet data comes from Google. The extension downloads it with your own Google login, the same way your browser opens the sheet.
  • Files stay on your computer. Your browser reads CSV, TSV and TXT files, and the tables you paste. They are never uploaded.
  • Queries run on your device. DuckDB works in memory inside the panel. Nothing is sent to another server.
  • Your work stays in this browser. Loaded tables and your last query are kept here, so they are back when you reopen the panel. Saved queries, theme and "rows shown" choice are stored here too. Turn off "Keep my tables and query after closing" to delete the saved copy. "Clear" deletes it as well.
Good to know

Limits of this version.

This is an early version. It is better to know the limits before you start.

  • Read only. The extension cannot change your sheet or your files. To use a result in a sheet, copy it and paste it.
  • One statement per run. Write one query, run it, then write the next.
  • First row is the header. Column names come from it, for each tab and each file. Spaces and symbols become _.
  • You need access to the sheet. If you are signed out, or your account cannot open the sheet, the panel tells you. Files need no login.
  • Files and pasted tables have no refresh button. To update one, upload the file or paste the table again.
  • Kept tables are a copy. A table that comes back when you reopen the panel is the data from the time you loaded it. Use the refresh icon to get the latest sheet data.
  • Large sheets and files use memory and disk space. All tables live in the browser, and a saved copy is kept in its storage. Very large tabs can be slow.
  • Early version. Some cases are not tested yet. If something breaks, please tell me.