DB in Browser

Upload CSVs as SQLite tables, run SQL joins and filters, and copy the result as CSV, TSV, or JSON. Everything runs in your browser - nothing is uploaded, and reloading the page starts a fresh session.

Loading SQLite engine…

Add a table from CSV

Drop a CSV file or click to browse

or paste data below

SQL query

Results

No data to display

How DB in Browser works

A real SQLite database, running locally

This tool runs SQLite, the same database engine used in phones and browsers, compiled to WebAssembly with sql.js. It runs inside the page. Each CSV you add becomes a table, and you query it with standard SQLite SQL: JOIN, GROUP BY, subqueries, CASE, common table expressions, and window functions such as ROW_NUMBER().

The database lives in memory for the current tab. Nothing is sent anywhere, and everything is gone when you close or reload the page. Export query results you want to keep. For background on when this approach beats a spreadsheet, see running SQL on CSV in the browser.

How a CSV becomes a table

The table name defaults to the file name, cleaned to lowercase letters, digits, and underscores, so Orders 2026.csv becomes orders_2026; you can type another name. Column names are cleaned the same way, and duplicates get _2, _3 suffixes.

Each column gets a type from its values. Whole numbers make it INTEGER and decimals or scientific notation make it REAL, so SUM, AVG, and numeric sorting work as expected. Anything else is TEXT. Empty cells are stored as NULL, which matters for COUNT(column) and WHERE column IS NULL. Comma- and tab-separated files are both accepted.

Writing and exporting queries

Once two tables are loaded, the tool suggests a starter join based on matching column names. Click a table to preview its first rows. Load sample tables adds a small orders and customers pair to practice on. Your recent queries are kept in a history list for the session, with their row counts and timings.

Result grids show the first 500 rows, but copy and download always include every row, as CSV, TSV, or JSON. You can drop and replace tables at any time, for example to reload a corrected file.

Example

amount is typed REAL, so SUM adds the values numerically instead of joining text.

Two tables: orders and customers
-- orders.csv
order_id,customer_id,amount
1001,7,120.00
1002,9,35.50
1003,7,64.25

-- customers.csv
customer_id,name,region
7,Ana,West
9,Raj,South
Query and result
SELECT c.name, COUNT(*) AS orders, SUM(o.amount) AS total
FROM orders AS o
JOIN customers AS c ON o.customer_id = c.customer_id
GROUP BY c.name
ORDER BY total DESC;

name | orders | total
Ana  | 2      | 184.25
Raj  | 1      | 35.5

How to use DB in Browser

  1. 1

    Drop a CSV or TSV file, or paste data, and confirm the table name.

  2. 2

    Add more files to create more tables.

  3. 3

    Write a SQL query, or start from a suggested preview, count, or join.

  4. 4

    Run it, then copy or download the full result as CSV, TSV, or JSON.

When to use it

Joining exports from two systems

Match orders from a shop export with customers from a CRM export by a shared ID.

Quick aggregates

Answer counts, sums, and top-N questions on a file too awkward for spreadsheet pivot tables.

DB in Browser questions

Which SQL dialect does it use?

SQLite. Most standard SQL works; functions differ from MySQL or PostgreSQL in places (for example, string concatenation uses ||).

Can I save the database?

No. Tables exist only in the open tab. Export results, or keep the source CSV files and reload them.

Why does my numeric column sort like text?

If any non-empty value is not a number, such as '1,200' or 'n/a', the column is typed TEXT. Clean the values first with Find & Replace or Column Tools, or use CAST(column AS REAL) in the query.

Can I run UPDATE or DELETE?

Yes. Any SQLite statement runs against the in-memory tables, so you can clean data with SQL and then export it with a SELECT.

Questions about privacy, file size, or accounts are answered on the FAQ page.

Other tools in the same category

Search all tools