Your PostgreSQL query is slow. Find out why.
Paste an EXPLAIN ANALYZE plan. PlanCheck finds expensive scans, bad row estimates, disk spills, inefficient joins, trigger overhead and more — using deterministic rules, not AI guesses.
High impact
High-Effort Zero-Result Scan
Rows examined
1,399,944
Rows returned
0
Work discarded
100%
What happened
The scan examined almost 1.4M rows and the filter rejected every one. The work is measurable directly from the plan.
What to check next
Verify index availability, predicate selectivity, and planner estimates before changing the query or schema.
Why PlanCheck
It tells you what the plan proves — and what it doesn’t.
Generic AI advice can sound confident even when an EXPLAIN plan cannot support the claim. PlanCheck separates observation, interpretation, and next checks so you can optimize without pretending.
Observed
Facts PostgreSQL actually reported in the execution plan.
Interpreted
Why those facts commonly matter for performance.
Next checks
What to verify before you change indexes, SQL, or configuration.
Bounded
Limitations are explicit when the plan cannot prove something.
Already built in
16+ deterministic performance checks
CLI now available
PlanCheck in your terminal.
Run the same deterministic detector engine locally with npm. No account, no upload, and a non-zero exit code option for scripts and CI.
View pg-plancheck on npm$ npx pg-plancheck analyze plan.json
✓ Analysis complete
3 high-impact findings
1 medium-impact finding
$ npx pg-plancheck analyze plan.json --fail-on high
exit code 1 — high-impact finding detected
PostgreSQL EXPLAIN library
Understand the numbers behind your plan.
Start here
How to read PostgreSQL EXPLAIN ANALYZE
A practical walkthrough of rows, loops, estimates, scans, joins, sorts and the signals that matter.
Stop guessing at query plans.
Paste the plan. See the evidence. Know what to investigate next.
Analyze a PostgreSQL plan