SQL formatter
Paste a query and get it laid out one clause per line. Only whitespace and keyword casing change — nothing inside a quoted string is touched, so the query does exactly what it did before.
A query is a description of your schema and often of your business logic. This one is formatted in your tab and goes nowhere.
SELECT u.id, u.name, 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.name
HAVING COUNT(o.id) > 3
ORDER BY orders DESC
LIMIT 2 0;Nothing is uploaded. Formatted by this page. No request carries it.
A query is more revealing than it looks
People paste SQL into formatters without much thought, and a query carries a surprising amount: every table and column name it touches, the relationships between them, and frequently a literal value in a WHERE clause — an email address, an account number, a customer id.
Taken together that is a readable sketch of your schema and a sample of your data. It is not the sort of thing to hand to a server you know nothing about, and there is no reason to, since formatting SQL needs no server at all.
The literal problem, which is the only hard part
Formatting SQL looks like a matter of breaking lines at keywords, and it is — right up until a keyword appears
inside a string. Consider SELECT 'shipped from warehouse' AS note FROM orders. A formatter that
searches for the word from finds two, and breaking at the first one changes the query.
So the text is tokenised before anything is laid out: strings, comments, words and punctuation are separated first, with doubled quotes handled as the escapes they are. Only real keywords, outside any literal, are ever treated as clause boundaries. It is the part of the job that has to be right, because getting it wrong does not produce ugly SQL — it produces different SQL.
Why keywords get capitalised and identifiers do not
Capitalised keywords are a long-standing convention and they earn it: when SELECT, FROM and WHERE are visually distinct from everything else, you can find the shape of a query without reading it.
Identifiers are left exactly as written, and that is not laziness. Quoted identifiers in PostgreSQL are case-sensitive, and column names on some systems are too. A formatter that helpfully upper-cased your table names could break the query outright, which is a poor trade for a tidier look.
Formatter, not validator
This lays SQL out; it does not check that it is correct. A query with a syntax error will still be formatted, because there is no database here to ask and dialects disagree about what is legal anyway.
That is deliberate rather than a shortfall. Making it a validator would mean choosing a dialect and being wrong for everyone using a different one, when the thing people actually want is to be able to read the query in front of them.
Questions
How do I format a SQL query?
Paste it in. Each major clause moves onto its own line, joins are separated out, and keywords are capitalised — which turns a query written as one long line into something you can read and review.
Is my query sent anywhere?
No. This matters more than it sounds: a query pasted into a formatter routinely contains table names, column names, business logic and sometimes literal customer data in a WHERE clause. It is a description of your schema. Here it is formatted in the tab and nothing is transmitted.
Will it change what my query does?
No. Only whitespace and the capitalisation of reserved words change. Nothing inside a quoted string is touched — the formatter tokenises first specifically so that a word like from appearing inside a literal is never mistaken for a clause.
Which SQL dialects does it handle?
The common shape of all of them — PostgreSQL, MySQL, SQL Server, SQLite and Oracle share the clause structure this lays out. It is a formatter rather than a parser, so it does not validate your query or understand dialect-specific syntax; it makes it readable without needing to know which database it is for.
Why capitalise keywords?
Convention, and a genuinely useful one: capitalised keywords let your eye find the clause boundaries without reading the words. Identifiers stay exactly as you wrote them, since table and column names are frequently case-sensitive and rewriting them would break the query.
What BriskFile will not do to you
-
Your files never leave your device
Every conversion runs in your browser. Open DevTools, watch the Network tab, and you will see no upload — because there is not one.
-
No account, no email, no watermark
Nothing to sign up for and nothing stamped on your images. There is no step between choosing a file and getting it back.
-
No limits at the download button
No daily cap, no file counter, no "upgrade to download". If the tool starts a job, it finishes it.
-
Checkable, not just claimed
Open the Network tab and convert something — nothing goes out. Or load the page, disconnect, and watch it keep working: the tool is already on your machine, and your file never leaves it.