See the query run.
Joins pulse along foreign keys. Filtered rows fade. Groups collapse into results. Live tables in your browser, nothing to install.

Wires connect the key columns. Matched rows light up together.
Six stages. Every row accounted for.
A query is not one step. QueryTrace splits it into the stages the database actually runs, and shows what each one keeps, drops, or builds.
- FROM
Every table the query names lights up. Their rows are the starting set; everything else dims.
- JOIN
Wires connect the key columns and matched rows light together. Outer joins keep the unmatched rows, dashed in gold.
- WHERE
The columns the condition reads turn gold. Rows that fail drop out, so you can count exactly what survived.
- GROUP BY
Rows take the color of their bucket, then each bucket collapses into a single row. HAVING filters the buckets.
- SELECT
The kept columns turn mint and everything else falls away. Aliases and expressions are evaluated here.
- ORDER BY
The result settles into its final order. Scrub back to any earlier stage and the rows are still there.
Click a result. See where it came from.
Pin any row in the result and every source row that produced it lights up in mint, across all the tables and at every stage. Hover to preview, click to keep it.
It works in reverse too: pin a row in a table and watch whether it survives the WHERE, which group it lands in, and which result it ends up inside.
Nineteen lessons, from SELECT to subqueries.
Each lesson loads a small database, runs one query, and suggests a change to try. Pick one and the tracer opens with it already running.
Foundations
Combining data
Yours to run, anywhere.
Nothing leaves this tab.
SQLite compiled to WebAssembly runs inside the page. No account, no server, no tracking. The code is open source under the MIT license.
Bring your own schema.
Paste CREATE TABLE and INSERT statements, or a Workbench export, and trace against your own data.


Fits a phone.
The canvas fills the screen and the query and results live in a sheet beneath it.
Write it in your dialect.
MySQL, PostgreSQL, SQL Server and Oracle queries are translated to SQLite before they run, and the rewrite is shown under the editor so you learn both spellings.
- MySQL / MariaDB
- PostgreSQL
- SQL Server
- Oracle
- SQLite



