SQLParity — SQL tools that run in your browser
Built around one job: proving a migration copied every column correctly. Without handing your table definitions to anyone — everything runs in this tab.
SQL scratchpad
DuckDB in the tabDrop in a CSV or Parquet file and query it with real SQL. DuckDB runs inside the tab, so the file is never uploaded.
orders.csv — read off your disk, not uploaded
SELECT segment, count(*) AS rows, avg(total) AS avg_total
FROM orders
WHERE created_at >= DATE '2026-01-01'
GROUP BY segment
ORDER BY rows DESCBulk query generator
One template plus a pasted column list becomes one validation query per field, with the right null placeholder for each data type.
From one CREATE TABLE, 412 columns
-- 1 of 412, one per column in the CREATE TABLE
SELECT 'customer_segment' AS field, count(*) AS mismatches
FROM input_db a
JOIN output_db b ON a.customer_id = b.customer_id
WHERE coalesce(a.customer_segment, '~') <> coalesce(b.customer_segment, '~')Schema diff
Compare the old and new definition, then check only what actually changed.
old.sql against new.sql
IN list builder
A column of values becomes a correctly quoted clause — apostrophes, backslashes and leading zeros included.
O'Brien Holdings, 007, Müller GmbH
IN (
'O''Brien Holdings',
'007',
'Müller GmbH'
)SQL formatter
Sixteen dialects, leading or trailing commas, and a syntax check as you type.
select a.customer_id,a.customer_segment from sales a where a.dt=date '2026-01-01'
SELECT
a.customer_id
, a.customer_segment
FROM sales a
WHERE a.dt = DATE '2026-01-01'Query optimizer
Nine checks for the shapes that scan more than they need to, each with the reason it costs something.
WHERE date(created_at) = '2026-01-01'
Dialect converter
Move a query between engines, with an explicit list of what it refused to guess at.
SQL Server to PostgreSQL
SQL Server
SELECT TOP 10 [name], LEN([note])
FROM [sales]
WHERE [note] = 'O''Brien'PostgreSQL
SELECT "name", LENGTH(RTRIM("note"))
FROM "sales"
WHERE "note" = 'O''Brien'
LIMIT 10Your schema never leaves this tab.
No account. No upload. No server to trust. Type in the box and watch the counter below it stay at zero — the claim is measured, not asserted.
Sixteen dialects that disagree about quoting
The riskiest thing any of these tools does is quote a string. A wrong escape does not throw — it runs, and returns the wrong rows. So every dialect carries its own rules, and every rule is covered by tests.
- "id"
- How a name is quoted
- ''
- How an apostrophe is escaped
- \\
- Backslashes must be doubled
PostgreSQL
"name"''
MySQL
`name`''\\
SQLite
"name"''
SQL Server (T-SQL)
[name]''
Oracle
"name"''
MariaDB
`name`''\\
Snowflake
"name"''\\
Google BigQuery
`name`\'\\
Amazon Redshift
"name"''\\
Amazon Athena / Trino
"name"''
Apache Spark SQL
`name`\'\\
Apache Hive
`name`\'\\
ClickHouse
`name`''\\
DuckDB
"name"''
IBM Db2
"name"''
Standard SQL
"name"''