T-SQL Formatter — Beautify SQL Server Queries in Your Browser
Table of Contents
SQL Server Management Studio has no built-in format command. The official answer from Microsoft is "install Redgate SQL Prompt" — which costs around 269 dollars per year. The free alternative is Poor Man's T-SQL Formatter, which still works but has not been updated since 2019 and chokes on newer T-SQL syntax like JSON functions and graph queries.
Our formatter handles T-SQL in your browser without an install. Pick the Transact-SQL dialect, paste your query, and you get clean output that respects T-SQL conventions — square bracket identifiers stay intact, MERGE statements format cleanly, and stored procedure bodies get nested indentation. No SSMS extension, no upload, no signup.
Why SSMS Still Has No Built-In Format Command
This is one of the longest-running gripes in the SQL Server world. Microsoft has shipped SSMS for over 20 years. Visual Studio has a format-on-save feature for every other language. SSMS still does not have one for T-SQL. The official position is that you should install an extension.
The extensions split into two camps:
- Paid: Redgate SQL Prompt (around 269 dollars per year), ApexSQL Refactor (around 199 dollars per year), Devart dbForge SQL Complete (around 250 dollars). All three are excellent. None are cheap.
- Free: Poor Man's T-SQL Formatter is the only credible free option, and it has not been updated since 2019. It does not understand newer T-SQL features like JSON functions, graph queries, or temporal table syntax.
Our formatter is a third option: a browser tab. Paste a query, get formatted output, paste it back. No install, no license key, no extension. It is not a full SSMS replacement, but it covers the formatting case completely.
T-SQL Syntax Our Formatter Handles Cleanly
Pick "Transact-SQL" as the dialect to enable T-SQL specific handling:
Square bracket identifiers — [Order Date] and [User-Name] (the SQL Server way of escaping reserved words and special characters) stay intact through formatting.
MERGE statements — MERGE INTO target USING source ON ... WHEN MATCHED THEN UPDATE SET ... WHEN NOT MATCHED THEN INSERT (...) VALUES (...) gets proper indentation for each WHEN branch.
OUTPUT clauses — INSERT, UPDATE, DELETE with OUTPUT inserted.col, deleted.col INTO @table_var get the OUTPUT clause on its own line.
Common table expressions — WITH cte_name AS (SELECT ...) blocks format with consistent spacing.
PIVOT and UNPIVOT — the PIVOT (SUM(col) FOR grouping IN ([a], [b], [c])) syntax gets readable line breaks.
Stored procedure bodies — CREATE PROCEDURE with BEGIN/END, IF/ELSE, WHILE, TRY/CATCH blocks gets nested indentation.
Window functions and ROWS BETWEEN — ROW_NUMBER() OVER (PARTITION BY x ORDER BY y ROWS BETWEEN 7 PRECEDING AND CURRENT ROW) formats with one clause per line.
JSON functions — OPENJSON, JSON_VALUE, JSON_QUERY, JSON_MODIFY all stay intact with their path arguments.
System variables — @@ROWCOUNT, @@IDENTITY, @@SERVERNAME and other global variables format correctly.
How to Format a T-SQL Query in Your Browser
- Copy your query from SSMS, Azure Data Studio, or wherever you write T-SQL — even from a Slack message.
- Paste it into the formatter input — handles up to 500KB of SQL.
- Set dialect to Transact-SQL — this is the option that handles square bracket identifiers and MERGE syntax.
- Pick indent — 4 spaces is the SQL Server convention — Microsoft's own samples use 4 spaces. Use it for consistency with their docs.
- Toggle uppercase keywords — uppercase is standard in T-SQL style guides. Leave it on.
- Click Format — output appears with syntax highlighting. Copy or download as a .sql file.
For stored procedures and triggers, save the formatted version to your source control directory.
Sell Custom Apparel — We Handle Printing & Free ShippingT-SQL Formatter Comparison — Browser Tool vs SSMS Extensions
| Tool | Cost | T-SQL Support | Install Required |
|---|---|---|---|
| Hawk SQL Formatter (this tool) | Free | Native Transact-SQL dialect | None — runs in browser |
| SSMS native | Included | None | — |
| Redgate SQL Prompt | ~$269/year | Excellent, IntelliSense + format | SSMS extension |
| ApexSQL Refactor | ~$199/year | Excellent | SSMS extension |
| Devart dbForge SQL Complete | ~$250 | Excellent | SSMS extension |
| Poor Man's T-SQL Formatter | Free | Good but no JSON/graph support | SSMS extension or CLI |
| Azure Data Studio + extension | Free | Good | ADS install |
If you write T-SQL daily and have admin rights to install SSMS extensions, Redgate SQL Prompt is the gold standard. If you cannot install extensions (corporate-locked machine, contractor working on multiple environments), the browser tool is the cleanest free option.
Real T-SQL Formatting Wins You Get From This Tool
The MERGE statement that nobody can read. MERGE statements are notoriously hard to read because the WHEN MATCHED, WHEN NOT MATCHED, and WHEN NOT MATCHED BY SOURCE branches all have their own actions. Our formatter puts each branch on its own line with the action indented.
The 200-line stored procedure. Legacy procs with deep nesting (TRY/CATCH inside WHILE inside IF inside BEGIN) become navigable when each block gets proper indentation.
The dynamic SQL string. When you build dynamic SQL with N'SELECT ...' + @col + N' FROM ...', the inner SELECT becomes hard to format. Paste just the SELECT (without the dynamic concatenation) into our formatter, format it, then drop it back into your dynamic SQL.
The CTE chain. Reporting queries often have 5-10 chained CTEs. Without spacing between them, they read as one wall. Our formatter inserts blank lines between CTEs.
The pivot query. PIVOT statements have a specific shape that gets crammed onto one line by most formatters. Ours puts the FOR clause on its own line and aligns the IN list.
Other Browser Tools SQL Server Developers Use
SQL Server devs spend a lot of time outside SSMS too. These browser tools handle the most common adjacent tasks:
JSON formatter — when you query JSON columns or use OPENJSON in SQL Server, the result is JSON. Use the JSON formatter to read the structure.
XML formatter / converter — SQL Server still uses XML in many older apps. Convert XML to JSON or format it with our JSON tools.
SQL diff checker — compare two T-SQL queries side by side using the SQL query diff tool.
Code diff checker — for comparing stored procedure versions across environments, our code diff tool highlights every change.
Try It Free — No Signup Required
Runs 100% in your browser. No data is collected, stored, or sent anywhere.
Open Free SQL FormatterFrequently Asked Questions
Why does SSMS still not have a built-in format command?
Microsoft has historically positioned SSMS as a tool for DBAs and developers who would install third-party formatters. The official recommendation has been Redgate SQL Prompt for over a decade. There is no public roadmap for adding a native format command, which is why third-party tools (paid and free) fill the gap.
Will this formatter execute my T-SQL query?
No. This is text-only formatting in your browser. It does not connect to any SQL Server instance and your query never leaves your device. Safe for production queries with sensitive table names.
Does it handle square bracket identifiers correctly?
Yes. Identifiers in square brackets like [Order Date], [User-Name], or [dbo].[Employees] stay intact during formatting. The brackets are not stripped or escaped.
Can I format a MERGE statement with multiple WHEN branches?
Yes. MERGE statements get proper indentation: the USING clause on one line, the ON clause on the next, and each WHEN MATCHED / WHEN NOT MATCHED / WHEN NOT MATCHED BY SOURCE branch on its own block with the action indented.
Does this work for Azure SQL Database queries?
Yes. Azure SQL Database uses the same Transact-SQL dialect as SQL Server. Pick "Transact-SQL" in the dialect dropdown and the formatter handles all the same syntax.

