What this checks
This looks for mechanically detectable mistakes in SQL: unbalanced parentheses, an unterminated string or quoted identifier, an unclosed block comment, a trailing or leading comma, an unmatched CASE/END pair, and statements that look like they're missing a semicolon between them. These are exactly the kind of typos that are easy to miss by eye in a long query but immediately break it.
What this isn't
This is not a full SQL parser and it doesn't know your database schema. It won't catch a misspelled column name, an ambiguous join, a type mismatch, or anything that requires understanding what your tables actually look like — those errors only surface when the query actually runs against a real database. It also doesn't validate against any specific dialect's full grammar (MySQL, PostgreSQL, SQL Server, etc. each have their own extensions), so passing here means "no obvious structural mistakes," not "guaranteed to run."
Errors vs. warnings
- Errors — things that are definitely broken: unbalanced parentheses, an unterminated string, a trailing comma before a clause. These will fail to parse basically anywhere.
- Warnings — things that are unusual and worth a second look, but not necessarily wrong: a query that doesn't start with a recognized statement keyword, or what looks like two statements running together without a semicolon between them.
How this is computed
Checking happens entirely in your browser via a small hand-written tokenizer — the same approach behind SQL Formatter and SQL Minifier. Your SQL is never sent anywhere.