18 dialects, and what works for each
Not every database supports every operation, and the honest version of that is a table rather than a logo wall. Formatting needs a printer for the dialect; validating and explaining need a parser that can build an AST. Where one is missing, it says so.
This table is generated from the same registry the engine reads, so it cannot claim support the tool does not actually have.
SQL · 14
DuckDB
1.1 · 1.0
- Translate
- Format
- Validate
- Explain
Spark SQL
3.5 · 3.4 · 3.3
- Translate
- Format
- Validate
- Explain
Hive
4.0 · 3.1
- Translate
- Format
- Validate
- Explain
Trino
latest
- Translate
- Format
- Validate
- Explain
Presto
0.288
- Translate
- Format
- Validate
- Explain
NoSQL & other query languages · 4
These are handled by dedicated deterministic engines rather than the SQL parser, so what each one supports is narrower and more specific. No AI is involved in any of them.
MongoDB Aggregation
translate target
Elasticsearch DSL
format · validate
OpenSearch
format · validate
GraphQL
format · validate
A note on DuckDB
DuckDB appears twice here, in two different roles. It is a translation target like any other dialect — and it is also the engine behind the Workbench, where it actually runs your queries against real files. So a query you translate into DuckDB syntax can be executed on this site rather than only copied out.
Open the WorkbenchQuestions about SQL dialects
What is a SQL dialect?
A dialect is one database's particular version of SQL. The core — SELECT, JOIN, GROUP BY — is standardised and portable, but every engine adds its own syntax for limiting rows, quoting identifiers, declaring auto-incrementing keys, handling dates and naming types. Two databases can both claim SQL support and still refuse each other's queries.
Which dialect should I pick if I do not know the source?
Leave the source on auto-detect. The parser reads the query and infers the dialect from what it finds — backticks imply MySQL, square brackets imply SQL Server, SELECT TOP is a strong signal, and so on. Set it explicitly only when a query is ambiguous enough to be valid in several.
Why can some dialects do more than others?
Because support is per-capability, not per-engine, and the table above is generated from the registry rather than written by hand — so it cannot claim something the engine does not do. Formatting and validation work anywhere the grammar is known. Translation needs a mapping in both directions. Diagramming needs DDL. A dialect with a partially implemented grammar shows fewer capabilities rather than silently producing wrong output.
Is MongoDB really a SQL dialect?
No, and it is not treated as one. It is listed because converting SQL to a MongoDB query or aggregation pipeline is a common need, and the conversion is a genuine translation rather than a syntax swap — JOIN becomes $lookup, GROUP BY becomes $group, and a WHERE clause becomes either a filter document or a $match stage.
Does adding a dialect mean the query is sent somewhere?
No. Every dialect's grammar ships in the page as JavaScript, so parsing and printing happen in your browser. Nothing is uploaded, there is no account, and it works with the network disconnected once the page has loaded.