EXPLAIN visualizer
Paste EXPLAIN (ANALYZE, BUFFERS) output, text or JSON, and see the plan as a tree: slow nodes, misestimates, buffers and spills.
OpenPostgreSQL tools for query tuning and internals. Everything runs in your browser
Paste EXPLAIN (ANALYZE, BUFFERS) output, text or JSON, and see the plan as a tree: slow nodes, misestimates, buffers and spills.
OpenCompare two EXPLAIN plans (text or JSON): matched nodes, time, rows and buffer deltas, and what changed.
OpenPaste a pg_stat_statements export and rank queries by time, calls, I/O and temp spill, with N+1 and cache-miss flags.
OpenPaste a query (and optionally its EXPLAIN plan) to get heuristic CREATE INDEX CONCURRENTLY suggestions with reasons.
OpenFormat or minify PostgreSQL SQL: keyword case, indent, dense operators, with live highlighting and copy.
OpenNormalise queries the way pg_stat_statements does ($1, $2, squashed IN lists) and group a pasted log by fingerprint.
OpenPaste pageinspect output (heap_page_items, page_header, bt_page_items) to see the page layout, decoded infomask flags and HOT chains.
OpenIs this tuple visible to my snapshot? Step through HeapTupleSatisfiesMVCC with xmin/xmax, hint bits, command ids and a pg_current_snapshot().
OpenWhich statements block each other (table and row locks), and a wait-for graph from pg_locks or pg_blocking_pids().
OpenDiff and add to LSNs, map LSNs to WAL segment files and back, and read replication lag per standby.
OpenPaste datfrozenxid / relfrozenxid ages to see how close each is to forced vacuum, failsafe and wraparound. MultiXacts too.
OpenSee when vacuum, insert-vacuum and analyze trigger for a table (or many from pg_stat_user_tables) and generate per-table ALTER TABLE settings.
OpenEstimate tuple size, alignment padding, rows per page, heap, TOAST and btree index size, and get a column order that wastes less space.
OpenStarting-point memory, WAL, planner and parallelism settings for your RAM, CPUs, storage and workload. Copy as postgresql.conf or ALTER SYSTEM.
OpenCompare SHOW ALL or pg_settings from two servers, with units normalised (128MB = 16384 × 8kB). Copy as Markdown.
OpenExplain a pg_cron schedule in plain English, list the next runs in any time zone, and generate cron.schedule() SQL.
OpenAlso see: Utils