Skip to content

How Better Auth’s scores are calculated

The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.

verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10

PA Score31/100

Agent-ready 56.9 × 0.30 = 17.07

API quality 0.0 × 0.20 = 0.00

Openness 62.8 × 0.20 = 12.56

Built-in AI 9.6 × 0.15 = 1.44

Automation 0.0 × 0.15 = 0.00

(17.07 + 0.00 + 12.56 + 1.44 + 0.00) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 31.07 ÷ 1.00 = 31.1

Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.

Agent-ready56.9/100×0.30 of the PA blend

Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.

Point an agent at llms.txt or agent-oriented docsweight 2

2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max

  • [probe] https://www.better-auth.com/llms.txtPROBE llms.txt: HTTP 200 at https://www.better-auth.com/llms.txt # Better Auth > The most comprehensive authentication framework for TypeScript Use the documentation version that matc
  • [claimed-docs] https://better-auth.com/docs/ai-resources/mcp.mdBetter Auth hosts a remote MCP server that exposes documentation search, examples, and setup help to any MCP-capable client (Cursor, Codex, Claude Code, Open Code, and others).
  • [claimed-docs] https://better-auth.com/docs/ai-resources/mcp.mdBetter Auth hosts a **remote MCP server** that exposes documentation search, examples, and setup help to any MCP-capable client (Cursor, Codex, Claude Code, Open Code, and others).
  • [probe] https://www.better-auth.com/docs/introduction.mdPROBE docs-md: HTTP 200 at https://www.better-auth.com/docs/introduction.md # Introduction (/docs/introduction) Introduction to Better Auth. Better Auth is a framework-agnostic, universal auth

Run the product headlessly / in CI for automationweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://www.better-auth.comNo dashboard clicks. Your auth lives in code version controlled, type-safe, and reviewable in PRs.
  • [claimed-docs] https://better-auth.com/docs/plugins/device-authorization.mdYou can test the device authorization flow right now using the Better Auth CLI
  • [claimed-docs] https://better-auth.com/docs/plugins/device-authorization.mdThe Device Authorization plugin implements the code issuance and approval flow from the OAuth 2.0 Device Authorization Grant (RFC 8628) for limited-input devices such as smart TVs, CLI applications, IoT devices
  • [community] https://hn.algolia.com/api/v1/items/48038827Does Better Auth still have the weird design to be everything 'request header based'? Running admin scripts and tests was very hacky due to this, since if you skipped that, plugins wouldn't run.
  • [probe] https://www.better-auth.com/docs/concepts/cliofficial CLI documented at https://www.better-auth.com/docs/concepts/cli

Plug MCP servers into this product so it can use their toolsweight 3

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Connect an agent via an official MCP serverweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://better-auth.com/docs/ai-resources/mcp.mdBetter Auth hosts a remote MCP server that exposes documentation search, examples, and setup help to any MCP-capable client (Cursor, Codex, Claude Code, Open Code, and others).
  • [claimed-docs] https://better-auth.com/docs/ai-resources/mcp.mdBetter Auth hosts a **remote MCP server** that exposes documentation search, examples, and setup help to any MCP-capable client (Cursor, Codex, Claude Code, Open Code, and others).
  • [claimed-docs] https://better-auth.com/docs/plugins/mcp.mdThe **MCP** plugin lets your app act as an OAuth authorization server and protected resource for [Model Context Protocol](https://modelcontextprotocol.io) clients.
  • [probe] https://www.better-auth.com/docs/plugins/mcpofficial MCP server documented at https://www.better-auth.com/docs/plugins/mcp

Use an official CLIweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [probe] https://www.better-auth.com/docs/concepts/cliofficial CLI documented at https://www.better-auth.com/docs/concepts/cli
  • [claimed-docs] https://better-auth.com/docs/plugins/device-authorization.mdYou can test the device authorization flow right now using the Better Auth CLI
  • [claimed-docs] https://better-auth.com/docs/plugins/device-authorization.mdThe Device Authorization plugin implements the code issuance and approval flow from the OAuth 2.0 Device Authorization Grant (RFC 8628) for limited-input devices such as smart TVs, CLI applications, IoT devices

Drive the product through a documented public APIweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://better-auth.com/docs/basic-usage.mdTo authenticate a user on the server, you can use the auth.api methods.
  • [claimed-docs] https://better-auth.com/docs/basic-usage.mdconst { data, error } = await authClient.signUp.email({ email, password, name, image, callbackURL: "/dashboard" }
  • [claimed-docs] https://www.better-auth.com`npx auth init`
  • [probe] https://www.better-auth.com/llms.txtPROBE llms.txt: HTTP 200 at https://www.better-auth.com/llms.txt # Better Auth > The most comprehensive authentication framework for TypeScript Use the documentation version that matc
  • [probe] https://www.better-auth.com/docs/introduction.mdPROBE docs-md: HTTP 200 at https://www.better-auth.com/docs/introduction.md # Introduction (/docs/introduction) Introduction to Better Auth. Better Auth is a framework-agnostic, universal auth
  • [probe] https://www.better-auth.com/docs/concepts/cliofficial CLI documented at https://www.better-auth.com/docs/concepts/cli
  • [probe] https://www.better-auth.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://www.better-auth.com/openapi.json, https://www.better-auth.com/swagger.json, https://www.better-auth.com/api/openapi.json, https://www.better-auth.com/.well-known/openapi.json)

Issue scoped/least-privilege API credentials for an agentweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://better-auth.com/docs/plugins/api-key.mdThe API Key plugin allows you to create and manage API keys for your application. It provides a way to authenticate and authorize API requests by verifying API keys.
  • [claimed-docs] https://better-auth.com/docs/plugins/api-key.mdThe API Key plugin allows you to create and manage API keys for your application.
  • [claimed-docs] https://better-auth.com/docs/plugins/api-key.mdCreate, manage, and verify API keys ... Built-in rate limiting ... Custom expiration times, remaining count, and refill systems
  • [claimed-docs] https://better-auth.com/docs/plugins/api-key.mdCreate, manage, and verify API keys
  • [claimed-docs] https://www.better-auth.comAuth for AI agents. MCP auth, token exchange, and agent delegation.
  • [claimed-docs] https://better-auth.com/docs/plugins/mcp.mdThe **MCP** plugin lets your app act as an OAuth authorization server and protected resource for [Model Context Protocol](https://modelcontextprotocol.io) clients.
  • [claimed-docs] https://better-auth.com/docs/plugins/mcp.mdThe MCP plugin lets your app act as an OAuth authorization server and protected resource for Model Context Protocol clients.
  • [probe] https://www.better-auth.com/docs/plugins/mcpofficial MCP server documented at https://www.better-auth.com/docs/plugins/mcp

Build against official SDKsweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://www.better-auth.comNext.js, Nuxt, SvelteKit, Astro, Hono, and 20+ more.
  • [claimed-docs] https://better-auth.com/docs/installation.mdimport { betterAuth } from "better-auth"; export const auth = betterAuth({ //... });
  • [claimed-docs] https://www.better-auth.comNo dashboard clicks. Your auth lives in code version controlled, type-safe, and reviewable in PRs.
  • [claimed-docs] https://better-auth.com/docs/ai-resources/mcp.mdBetter Auth hosts a **remote MCP server** that exposes documentation search, examples, and setup help to any MCP-capable client (Cursor, Codex, Claude Code, Open Code, and others).
  • [probe] https://www.better-auth.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://www.better-auth.com/openapi.json, https://www.better-auth.com/swagger.json, https://www.better-auth.com/api/openapi.json, https://www.better-auth.com/.well-known/openapi.json)
  • [community] https://hn.algolia.com/api/v1/items/45389293I'd love to use Better-Auth in an iOS app but the client library is all JS - there is virtually no documentation on how to write your own client library.

Subscribe to events via webhooksweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Agent-ready = 102.4 ÷ 180 × 100 = 56.9

API quality0.0/100×0.20 of the PA blend

The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.

Explore an interactive API reference with runnable examplesweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [probe] https://www.better-auth.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://www.better-auth.com/openapi.json, https://www.better-auth.com/swagger.json, https://www.better-auth.com/api/openapi.json, https://www.better-auth.com/.well-known/openapi.json)

Download a machine-readable API spec (OpenAPI or equivalent)weight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [probe] https://www.better-auth.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://www.better-auth.com/openapi.json, https://www.better-auth.com/swagger.json, https://www.better-auth.com/api/openapi.json, https://www.better-auth.com/.well-known/openapi.json)

Test against a sandbox environment without touching production dataweight 1

1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max

  • [claimed-docs] https://better-auth.com/docs/installation.mdBetter Auth requires a database to store user data. You can easily configure Better Auth to use SQLite, PostgreSQL, or MySQL, and more!
  • [claimed-docs] https://better-auth.com/docs/installation.mdYou can easily configure Better Auth to use SQLite, PostgreSQL, or MySQL, and more!

Rely on versioned APIs with a documented deprecation policyweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [probe] https://www.better-auth.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://www.better-auth.com/openapi.json, https://www.better-auth.com/swagger.json, https://www.better-auth.com/api/openapi.json, https://www.better-auth.com/.well-known/openapi.json)

API quality = 0.0 ÷ 70 × 100 = 0.0

Openness62.8/100×0.20 of the PA blend

Can you leave, inspect, or self-host — data export, open source, portability.

Do everything through the API that I can do in the UIweight 2

2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max

  • [claimed-docs] https://www.better-auth.comNo dashboard clicks. Your auth lives in code version controlled, type-safe, and reviewable in PRs.
  • [claimed-docs] https://better-auth.com/docs/basic-usage.mdTo authenticate a user on the server, you can use the auth.api methods.
  • [claimed-docs] https://better-auth.com/docs/plugins/admin.mdIt allows administrators to perform various operations such as creating users, managing user roles, banning/unbanning users, impersonating users, and more.
  • [claimed-docs] https://better-auth.com/docs/plugins/organization.mdThe organization plugin allows you to manage your organization's members and teams. Organizations simplifies user access and permissions management.
  • [claimed-docs] https://better-auth.com/docs/plugins/api-key.mdThe API Key plugin allows you to create and manage API keys for your application. It provides a way to authenticate and authorize API requests by verifying API keys.
  • [probe] https://www.better-auth.com/openapi.jsonPROBE openapi: all candidate paths 404 (https://www.better-auth.com/openapi.json, https://www.better-auth.com/swagger.json, https://www.better-auth.com/api/openapi.json, https://www.better-auth.com/.well-known/openapi.json)

Export all of my data in open formats and leaveweight 3

3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max

  • [claimed-docs] https://better-auth.com/docs/installation.mdBetter Auth requires a database to store user data. You can easily configure Better Auth to use SQLite, PostgreSQL, or MySQL, and more!
  • [community] https://hn.algolia.com/api/v1/items/48038827You get all of your auth data in your own db in 1 cli command. You are not tied to any db provider. Hundreds of auth features like OAuth providers (google, apple, github) and it's free - with Better Auth you pay exactly $0.
  • [community] https://hn.algolia.com/api/v1/items/48038827Setting up Auth with anonymous users upgraded to real accounts, organizations, multi-tenant capabilities, various sign-in options - haven't written special code, all handled by Better Auth's included plugins and defaults. It just works and I own all the data.
  • [community] https://hn.algolia.com/api/v1/items/44030492One reason I prefer Better Auth is I retain flexibility designing the rest of the system - adding an extra user column is just a Postgres column, versus using a rigid API to append data to a user in Cognito/Auth0/Okta.

Read the product's source under an open licenseweight 2

2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max

  • [community] https://hn.algolia.com/api/v1/items/48038827You get all of your auth data in your own db in 1 cli command. You are not tied to any db provider. Hundreds of auth features like OAuth providers (google, apple, github) and it's free - with Better Auth you pay exactly $0.
  • [community] https://hn.algolia.com/api/v1/items/48038827Setting up Auth with anonymous users upgraded to real accounts, organizations, multi-tenant capabilities, various sign-in options - haven't written special code, all handled by Better Auth's included plugins and defaults. It just works and I own all the data.
  • [community] https://hn.algolia.com/api/v1/items/44030492We have been using better-auth (open source) for a while, it was immediately a better experience compared to existing TypeScript auth libraries. Plus no Nextjs lock-in - we migrated off Nextjs to Hono and only had to change the router.
  • [community] https://hn.algolia.com/api/v1/items/44030492One reason I prefer Better Auth is I retain flexibility designing the rest of the system - adding an extra user column is just a Postgres column, versus using a rigid API to append data to a user in Cognito/Auth0/Okta.
  • [claimed-docs] https://www.better-auth.comNo dashboard clicks. Your auth lives in code version controlled, type-safe, and reviewable in PRs.

Self-host the core productweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://better-auth.com/docs/installation.mdnpm install better-auth
  • [claimed-docs] https://better-auth.com/docs/installation.mdYou can easily configure Better Auth to use SQLite, PostgreSQL, or MySQL, and more!
  • [claimed-docs] https://better-auth.com/docs/installation.mdBetter Auth requires a database to store user data. You can easily configure Better Auth to use SQLite, PostgreSQL, or MySQL, and more!
  • [claimed-docs] https://www.better-auth.comNo dashboard clicks. Your auth lives in code version controlled, type-safe, and reviewable in PRs.
  • [community] https://hn.algolia.com/api/v1/items/48038827You get all of your auth data in your own db in 1 cli command. You are not tied to any db provider. Hundreds of auth features like OAuth providers (google, apple, github) and it's free - with Better Auth you pay exactly $0.
  • [community] https://hn.algolia.com/api/v1/items/48038827Setting up Auth with anonymous users upgraded to real accounts, organizations, multi-tenant capabilities, various sign-in options - haven't written special code, all handled by Better Auth's included plugins and defaults. It just works and I own all the data.
  • [community] https://hn.algolia.com/api/v1/items/44030492One reason I prefer Better Auth is I retain flexibility designing the rest of the system - adding an extra user column is just a Postgres column, versus using a rigid API to append data to a user in Cognito/Auth0/Okta.

Openness = 62.8 ÷ 100 × 100 = 62.8

Built-in AI9.6/100×0.15 of the PA blend

Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.

Get AI-generated insights and suggestions from my data inside the productweight 2

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Set up automations that run autonomously in the backgroundweight 2

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Delegate tasks to a built-in AI assistant inside the productweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Operate the product with natural-language commandsweight 2

2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max

  • [claimed-docs] https://better-auth.com/docs/ai-resources/mcp.mdBetter Auth hosts a remote MCP server that exposes documentation search, examples, and setup help to any MCP-capable client (Cursor, Codex, Claude Code, Open Code, and others).
  • [claimed-docs] https://better-auth.com/docs/ai-resources/mcp.mdBetter Auth hosts a remote MCP server that exposes documentation search, examples, and setup help
  • [claimed-docs] https://better-auth.com/docs/ai-resources/mcp.mdBetter Auth hosts a remote MCP server that exposes documentation search, examples, and setup help to any MCP-capable client
  • [claimed-docs] https://better-auth.com/docs/ai-resources/mcp.mdBetter Auth hosts a **remote MCP server** that exposes documentation search, examples, and setup help to any MCP-capable client (Cursor, Codex, Claude Code, Open Code, and others).
  • [probe] https://www.better-auth.com/docs/plugins/mcpofficial MCP server documented at https://www.better-auth.com/docs/plugins/mcp

Built-in AI = 4.8 ÷ 50 × 100 = 9.6

Automation0.0/100×0.15 of the PA blend

Depth of automation primitives — rules, scheduling, bulk operations, webhooks.

Perform bulk operations across many items at onceweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [claimed-docs] https://better-auth.com/docs/plugins/admin.mdIt allows administrators to perform various operations such as creating users, managing user roles, banning/unbanning users, impersonating users, and more.
  • [claimed-docs] https://better-auth.com/docs/plugins/api-key.mdThe API Key plugin allows you to create and manage API keys for your application. It provides a way to authenticate and authorize API requests by verifying API keys.
  • [claimed-docs] https://better-auth.com/docs/plugins/api-key.mdThe API Key plugin allows you to create and manage API keys for your application.
  • [claimed-docs] https://better-auth.com/docs/plugins/admin.mdsuch as creating users, managing user roles, banning/unbanning users, impersonating users, and more.

Define rules that trigger actions automatically on eventsweight 3

3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Schedule recurring jobs or workflowsweight 2

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Version, review, and roll back my automationsweight 1

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Automation = 0.0 ÷ 50 × 100 = 0.0