Test SQL without a database

No install, no connection string, no Docker. Paste DDL and a query — an in-memory database is created in your browser, the query actually executes, and the sandbox is destroyed when you leave.

press RUN (or Ctrl+Enter) — everything executes in your browser, nothing is uploaded

How it works

This page ships SQLite (and optionally DuckDB) compiled to WebAssembly. When you press RUN, your schema's CREATE TABLE statements are applied to a brand-new in-memory database, optional seed rows are inserted, and your query executes for real. You get real rows, real error messages with positions and suggestions, and notes about constructs that behave differently on other engines. Nothing is uploaded — the entire round trip happens on your machine.

When this beats a real database

Spinning up Postgres to sanity-check a query is overkill. The common cases — does this JOIN reference the right columns, does this GROUP BY parse, what does this window function return on sample data — need an engine, not your engine. Seed a few representative rows in JSON and you can test logic, not just syntax. The empty-tables case is still useful: a query that runs against empty tables has verified syntax, table/column references, and types.

What it can't do

This validates against SQLite or DuckDB semantics. It does not run Postgres, MySQL, or SQL Server. Engine-specific behavior differences (integer division, NULL ordering, LIKE case sensitivity, quoted identifiers) are flagged automatically under "dialect notes" so you know which results to double-check on your production engine.

FAQ

Is my SQL uploaded to a server?

No. The database engine runs as WebAssembly in your browser. Schema, data, and queries never leave your machine on this page.

Can I test INSERT, UPDATE, and DELETE?

Yes. Any single statement works, and writes are verified against constraints (UNIQUE, NOT NULL, FOREIGN KEY, CHECK). Each run starts from a fresh database.

How much data can I load?

Seed data is capped at 10 MB of JSON and queries return up to 500 rows (truncation is flagged, with the true row count reported).

Which SQL engines are supported?

SQLite (default, instant) and DuckDB (loads ~8 MB of WASM on first use, then cached). Dialect notes flag portability issues for Postgres and MySQL.

Related: Run SQL online (SQLite) · Validate a SQL query against your schema · Do these two queries return the same thing?