Paste the output of EXPLAIN (ANALYZE, BUFFERS) — text or JSON — and get the time spent in each node, the filters that throw away most rows, bad row estimates, sorts and hashes spilling to disk and nested loops over sequential scans, each with a suggested fix.
Nothing is uploaded. The text box is analysed in this browser and never leaves your device. It reads one plan and never touches your database: suggestions are hypotheses to test on your own data.
1. Paste a plan
2. What it found
Plan, with self time per node
Where the time went
Node
Self time
Share
Findings
Rule
Level
Node
Detail and suggested fix
Prefer a CLI, or want a query-time gate in CI?
Same logic, zero dependencies, one command — reads a file or stdin:
No. It reads the plan text you paste. It never connects to a database, so it cannot see your schema, your data volume, your existing indexes or your Postgres settings. Treat every suggestion as a hypothesis to test, not a diagnosis.
Is it safe to run EXPLAIN ANALYZE?
EXPLAIN ANALYZE actually executes the statement. For SELECT that is usually fine on a replica or off-peak; for INSERT, UPDATE or DELETE wrap it in BEGIN ... ROLLBACK, or run it on a copy. Add BUFFERS to get the I/O lines.
How is time attributed to each node?
Self time is the node's actual total time multiplied by its loops, minus the same figure for its children. Under parallel nodes workers overlap, so those figures are approximate.
Is my plan uploaded anywhere?
No. The page analyses the text in your own browser and never sends it anywhere. The CLI reads a local file or stdin and makes no network call.