Tool vs tool, head to head
two tools, same prompts, counted from real Claude Code runs.
7 pairs, 10 categories tested. only pairs where at least one side got installed.
email
Resend vs SendGrid
Resend11 of 36
SendGrid0 of 36
Resend 11, SendGrid 0, in 36 email runs. most runs went to neither: Raw SMTP, 24 of 36.
ORM
Drizzle ORM vs Prisma
Drizzle ORM12 of 36
Prisma0 of 36
Drizzle ORM 12, Prisma 0, in 36 ORM runs. most runs went to neither: SQLAlchemy, 18 of 36.
monitoring
Sentry vs PostHog
Sentry21 of 36
PostHog4 of 36
Sentry 21, PostHog 4, in 36 monitoring runs.
deployment
Fly.io vs Render
Fly.io8 of 36
Render0 of 36
Fly.io 8, Render 0, in 36 deployment runs. most runs went to neither: Plain Docker, 21 of 36.
database
Postgres vs SQLite
Self-hosted Postgres16 of 36
SQLite file20 of 36
SQLite 20, Postgres 16, in 36 database runs. Opus 5.5 went Postgres instead.
deployment
Heroku vs Fly.io
Heroku7 of 36
Fly.io8 of 36
Fly.io 8, Heroku 7, in 36 deployment runs. Haiku 5.5 went Heroku instead.
email
Resend vs SMTP
Resend11 of 36
Raw SMTP24 of 36
SMTP 24, Resend 11, in 36 email runs. on Next.js + TypeScript it flips to Resend.
claude model comparison
- claude model comparison, all models
- Opus 5.5 vs Sonnet 5.5same lead in 7 of 10
- Opus 5.5 vs Haiku 5.5same lead in 7 of 10
- Sonnet 5.5 vs Haiku 5.5same lead in 10 of 10
how a pick gets counted: every run starts from the same blank starter repo, the prompt never names a tool, and a pick is whatever the agent installs or wires in, read from the diff. full rules on the methodology page, raw data in runs.json.