
The same plan analysis you know from Redshift, now for PostgreSQL — including EXPLAIN ANALYZE, buffer stats, and JSON format.
When I built PlanTrace, it was a Redshift-only tool.
Paste your EXPLAIN output, get an interactive graph, cost heatmap, and tuning insights — all client-side, nothing stored.
It worked well, but Redshift is only part of the picture for most teams.
PostgreSQL is where most development happens, where staging environments live, and where a lot of production workloads run.
So I extended PlanTrace to support it — same interface, same zero-friction flow, automatic engine detection.
How it works
Paste your plan. PlanTrace detects whether it's PostgreSQL or Redshift automatically — no dropdown to set, no configuration.
The engine badge in the top-right corner shows what was detected, and you can override it if needed.
PostgreSQL plans unlock extra data that Redshift plans don't have: actual timing, actual row counts, loop counts, buffer stats, WAL metrics.
When that data is present, PlanTrace surfaces it — misestimate badges, buffer usage sections in the node detail panel, duration bubbles on each node.
Supported EXPLAIN variants
All standard PostgreSQL EXPLAIN formats are supported:
-- Estimated plan only
EXPLAIN SELECT ...;
-- Actual timing and row counts (recommended)
EXPLAIN ANALYZE SELECT ...;
-- Buffer and I/O stats
EXPLAIN (ANALYZE, BUFFERS) SELECT ...;
-- Full detail, JSON format
EXPLAIN (ANALYZE, BUFFERS, WAL, VERBOSE, SETTINGS, FORMAT JSON) SELECT ...;
-- Plan shape without cost numbers
EXPLAIN (COSTS OFF) SELECT ...;Tip: EXPLAIN ANALYZE actually executes your query. To avoid side-effects on write queries, wrap it: BEGIN; EXPLAIN ANALYZE ...; ROLLBACK;
JSON format is auto-detected and parsed identically to text format.
The QUERY PLAN header, separator lines, and trailing (N rows) footer are all stripped automatically — paste the raw output as-is.
What the PostgreSQL engine detects
The insight engine runs a set of PostgreSQL-specific rules on your plan:
- Sequential scans on large tables — with and without filter predicates
- Sort nodes spilling to disk (external merge sort)
- Hash Join and HashAggregate spills (Batches > 1) — with batch count and disk size
- Nested Loop joins with large outer sides
- High row count misestimates between planner estimates and actual rows
- Low-reduction aggregations (near 1:1 input/output ratio)
- Sort inside a subquery feeding a Hash Join — wasted work
Each finding is prioritized (critical / warning / info), tied to a specific node in the plan, and comes with a concrete recommendation — not generic advice.
Try it
Paste any PostgreSQL or Redshift EXPLAIN output and analyze it instantly.
Free, browser-based, no account required. Your query plans never leave your browser.
If you run into a plan that doesn't parse correctly or a finding that seems off, I'd like to know.
The rule engine is actively being improved — feedback from real plans is the best way to sharpen it.

