PlanReader

Understand Your Database Execution Plan

Analyze PostgreSQL EXPLAIN plans, SQL Server Showplan XML and Snowflake operator profiles. Find expensive scans, bad estimates, spills, inefficient joins and other performance problems directly in your browser.

Nothing you paste ever leaves your browser. Parsing, analysis, and rendering all run locally — no signup, no server, no limit.

Supported Databases

PostgreSQL — EXPLAIN (ANALYZE, BUFFERS) output — JSON or plain text

SQL Server — Showplan XML (.sqlplan) — the Actual Execution Plan

Snowflake — GET_QUERY_OPERATOR_STATS() output or exported Query Profile JSON

What PlanReader Detects

  • Expensive sequential or full table scans on large tables
  • Row estimate mismatches, where the planner misjudges how many rows a step will touch
  • Disk spills — sorts and hashes that overflow available memory
  • Inefficient joins — nested loop blowups, exploding joins, and cartesian joins
  • Missing index opportunities, where derivable from the plan itself
  • Engine-specific issues — SQL Server key lookup explosions and memory grant problems, Snowflake partition pruning and spill

Why PlanReader

  • Free, no signup, no account
  • 100% client-side — nothing you paste ever leaves your browser
  • Plain-English explanations, not just raw operator names
  • Interactive node-graph visualization of the whole plan
  • One tool for PostgreSQL, SQL Server, and Snowflake

How It Works

  1. Paste your plan. EXPLAIN output, Showplan XML, or Snowflake operator stats.
  2. Parsed and analyzed locally. The rule engine flags scans, spills, bad estimates, and inefficient joins — entirely in your browser.
  3. Explore the graph. Click any node for a plain-English breakdown, or copy a share link — nothing is stored on a server.

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

Try an Example

No plan handy? Load a real sample for each engine above and see PlanReader work immediately.

Learn More

Every node in the graph includes a plain-English glossary entry — click a node, then "Learn more" for what the operator does, when it's fine, and when it's worth a second look. That's the fastest way to go deeper on any specific operator without leaving the tool.

FAQ

Is PlanReader free?
Yes — free, no signup, no account required.
Is my execution plan sent to a server?
No. Parsing and analysis run 100% client-side in your browser; nothing you paste is ever transmitted.
Which databases are supported?
PostgreSQL, SQL Server, and Snowflake.
Can I share a plan with a teammate?
Yes — the share link encodes your plan directly in the URL. It's never stored on a server.
Can PlanReader tell me why a query is sometimes fast and sometimes slow?
Not definitively. A single pasted plan is one snapshot of one execution — if a query's performance varies, a different plan may be used for different input values, which one pasted plan can't show you.