See the queries your ORM is actually running.
IndeX-Ray shows how Postgres will run each query on today's data and at 1000× the rows. Point it at a Postgres URL and it flags the queries that get slow as you grow, and the indexes that fix them.
See what Postgres actually does with your queries.
The three things a backend team usually can't see at once: the SQL your ORM really emits, how its plan changes as the data grows, and a CI check that catches the bad ones before they merge.
See the real queries your ORM emits.
Pull from a Postgres URL, or run the analyzer next to a database
that isn't reachable from the internet. We surface every active
query through pg_stat_statements and
de-parameterize the ones your framework hid. With SQLCommenter, each
query links back to the file, line, route, and controller that ran it.
Predict performance at 10× and 1000× your data.
Most tools only tell you what's slow today. IndeX-Ray simulates how the planner's choices shift as your tables grow, so a query that's fine at 10k rows doesn't surprise you at 10M.
Catch regressions in CI, before they reach prod.
Add the GitHub Action. Every PR gets a comment with the queries it touched, the indexes they need, and a red X when a regression threshold is crossed.
orders.user_id
Built for what EXPLAIN can't tell you
on its own.
There are a few other ways to look at Postgres performance. None of them cover all four of these at once.
EXPLAIN ANALYZE | LLM "SQL copilots" | Query Doctor | |
|---|---|---|---|
| Sees the queries your ORM emits | Manual, one query at a time | Whatever you paste |
Yes, via pg_stat_statements |
| Predicts performance at 10×/1000× scale | No, only today's data | Unverified guesses | Yes, simulated planner choices |
| Runs in CI on every PR | No | No | Yes, via GitHub Action |
| Deterministic · no model calls | Yes | No | Yes, AST-based |
Three steps to your first query report.
No agents to install on prod. No new schema. You're inspecting queries
60 seconds*
after docker run.
*Requires
pg_stat_statements installed on your
Postgres. First-time setup may take longer.
Run the analyzer
Pull the Docker image, point it at your Postgres. Read-only role, and we never write to your DB.
Point it at Postgres
Paste a connection string. We read
pg_stat_statements, schemas,
and statistics. We don't write.
Block regressions in CI
Add the GitHub Action. Every PR gets a query report with red ✗ on missing-index regressions.
What's on our radar.
Not promises, just the gaps we know about and the things we're thinking about building. The list shifts as people tell us what matters. If something here speaks to you, or you have an idea that isn't here, come talk to us.
- Team plan Shared dashboards, RBAC, SSO, seat billing.
- Alerts Slack or email when a plan regresses.
- MCP Analyzer in Cursor, Claude Code, and friends.
- Query rewrites Semantically-equivalent SQL, generated from the AST.
- Local-only mode The analyzer runs end-to-end on your machine. Nothing leaves your network.
- PostGIS Plan reading for spatial indexes.
- More extensions pgvector, pg_trgm, and the long tail.
- Need something else? Tell us. We're small enough to actually build it. Talk to us
Simple, honest pricing.
Free covers the playground, live queries, CI, and statistics for modeling your data at 10× or 1000× scale. Pro is for when two projects isn't enough.
Free
For learning and most day-to-day work. No card needed.
- IndeX-Ray playground against your own schema
- Inspect live queries via
pg_stat_statements - Sync & modify statistics to model at 10M rows
- Pre-deployment CI insights
- Up to 2 projects
Pro
For when two projects isn't enough: unlimited projects, with query rewrites on the way.
- Unlimited projects, one per service, environment, or client
- Query Doctor MCP server for analysis in your editor (soon)
- Query rewrite suggestions (soon)
- Unlisted shares (soon)
- Everything in Free
How the analyzer works, and what it won't touch.
The analyzer never writes to your database.
It connects with a read-only role and reads
pg_stat_statements, schemas, and
statistics. It never writes back.
No LLM in the loop.
Real code parses your queries and schemas into an AST and reasons about the plan. The same input gives the same answer every time, and you can read the rules it follows.
The analyzer is open source.
We make money on the hosted IndeX-Ray product, not by gatekeeping the core. The analyzer is open source, so you can read the code, audit the output, and run it on your own machine.
See how your queries hold up at scale.
One docker run and a
Postgres URL, and you're inspecting queries in about a minute.
We love databases.
Need a hand with a gnarly plan, or just want to talk Postgres? The Discord is small, friendly, and the maintainers hang out there daily.