SQL Server Execution Plan Analyzer

Paste a real Showplan XML (.sqlplan) execution plan from SQL Server and get a plain-English breakdown of what's slow and why, with an interactive node-graph visualization — free, no signup, nothing sent to a server.

Analyze your plan free

What PlanReader analyzes

PlanReader parses your Showplan XML into a normalized plan tree entirely in your browser, runs it through a rule engine that checks for known SQL Server performance problems, and renders the result as an interactive node graph you can click through node by node.

Supported input formats

  • Showplan XML (.sqlplan) — the Actual Execution Plan, including runtime counters
  • Showplan XML — estimated plans — an Estimated Execution Plan works too, with the honest gap disclosed for any statistic that only exists on an actual plan
  • Multi-statement batches — a single Showplan XML containing more than one statement is broken out per-statement, with its own summary

What it detects

  • Key Lookup / RID Lookup explosions (a per-row lookup running far more times than it should)
  • Row-estimate (cardinality) mismatches between an index seek and its residual predicate
  • Sort spills to tempdb
  • Hash Match spills to tempdb
  • Excessive memory grants
  • Memory grant pressure
  • Implicit conversions that block index use
  • Parallel exchange data-movement cost

Example finding

A Key Lookup ran 1,200 times feeding a single Index Seek — each lookup individually cheap, but the total cost dominated the query. PlanReader flags this as a Key Lookup explosion, shows the seek-plus-lookup pair together in the graph, and explains in plain English that a covering index (one that includes the looked-up columns) would remove the lookup entirely, instead of just showing you a raw execution count.

Privacy

  • Nothing you paste is ever sent to a server — parsing and analysis run entirely in your browser
  • No account, no signup, no tracking of plan content
  • Share links encode your plan into the URL itself, in a fragment your browser never sends in any request — not stored anywhere
  • Local history, if you use it, stays in your own browser's storage

How to generate a Showplan XML

In SQL Server Management Studio:

  1. Enable "Include Actual Execution Plan" (Ctrl+M) before running the query, for an actual plan with real row counts and timings
  2. Run the query, then right-click the resulting plan tab and choose "Save Execution Plan As..." to get a .sqlplan file, or copy its raw XML

Or via T-SQL, for a text/XML capture:

SET STATISTICS XML ON;

Try a sample plan

No plan handy? Load a real SQL Server sample and see PlanReader work immediately — no paste required.

Try a sample SQL Server plan

Deep learning resources

For deep technical coverage of SQL Server execution plans beyond what PlanReader's own detections cover: mssqlserver.dev