Format SQL queries across dialects, with consistent keyword casing and indentation.
Join with filtering
A typical reporting query on one line
select u.id, u.email, count(o.id) as orders from users u left join orders o on o.user_id = u.id where u.created_at > '2026-01-01' group by u.id, u.email having count(o.id) > 3 order by orders descSubquery
Nested select that benefits from indentation
select * from products where category_id in (select id from categories where active = true) and price between 10 and 100Insert statement
Multi-row insert
insert into logs (level, message, created_at) values ('error', 'timeout', now()), ('info', 'retry', now())Join with filtering
A typical reporting query on one line
select u.id, u.email, count(o.id) as orders from users u left join orders o on o.user_id = u.id where u.created_at > '2026-01-01' group by u.id, u.email having count(o.id) > 3 order by orders descSubquery
Nested select that benefits from indentation
select * from products where category_id in (select id from categories where active = true) and price between 10 and 100Insert statement
Multi-row insert
insert into logs (level, message, created_at) values ('error', 'timeout', now()), ('info', 'retry', now())Anything from a one-line SELECT to a multi-statement migration script. Formatting happens as you type.
Choosing the right dialect matters — it stops dialect-specific functions and operators from being reformatted incorrectly.
Take the formatted query straight into your editor, a pull request, or documentation where it needs to be readable.
Indented joins and subqueries reveal the structure of a query, which is usually where the bug or the performance problem is hiding.
PostgreSQL, MySQL, SQLite, MariaDB, BigQuery and Snowflake syntax are each handled on their own terms rather than forced into one grammar.
Uniform casing and layout means a query in a pull request reads the same as every other, so reviewers focus on the logic.
Long SQL statements arrive as a single unreadable line more often than not — pulled from a log, an ORM debug output, or a colleague’s message. This formatter breaks the query onto sensible lines, indents subqueries and joins, and applies consistent keyword casing so the shape of the logic becomes visible. It understands several dialects, including standard SQL, PostgreSQL, MySQL, SQLite, MariaDB, BigQuery and Snowflake, so dialect-specific syntax is not mangled in the process.
Keep going
Related pages in Developer Tools, plus what others are using right now.
More developer tools that pair well with this one.
Format, validate and minify JSON, with errors that point to the exact line.
Format JavaScript and TypeScript with the same rules your editor uses.
Tidy YAML indentation, validate structure and convert between YAML and JSON.
Test regular expressions live, with highlighted matches and capture groups.
Indent and validate XML, with clear messages when tags do not match.
Indent messy HTML into readable, consistently structured markup.
Create strong random passwords with full control over length and characters.
Work out any percentage — of a number, as a share, or as a change.
Count words, characters, sentences and paragraphs as you type.
Convert between length, weight, temperature, volume, speed, data and more.
Count characters with and without spaces, against the limits that matter.
Find the mean, median, mode and range of a list of numbers, with the working shown.
Sample and population standard deviation and variance, both shown, with the working.
Turn a logo into favicon.ico, the PNG sizes a site needs, and the HTML to declare them.
Check a downloaded file against its published checksum, without uploading anything.
Stamp text like DRAFT or CONFIDENTIAL across a PDF, in your browser.
See how savings grow with compounding, including regular contributions.
Shrink JPEG, PNG and WebP files with a quality slider and a live size comparison.