The most comprehensive authentication framework
Better Auth is a framework-agnostic authentication (and authorization) framework for TypeScript. It provides a comprehensive set of features out of the box and includes a plugin ecosystem that simplifies adding advanced functionalities with minimal code in a short amount of time. Whether you need 2FA, multi-tenant support, or other complex features, it lets you focus on building your actual application instead of reinventing the wheel.
Authentication in the TypeScript ecosystem is a half-solved problem. Other open-source libraries often require a lot of additional code for anything beyond basic authentication. Rather than just pushing third-party services as the solution, I believe we can do better as a community—hence, Better Auth.
Better Auth is a free and open source project licensed under the MIT License. You are free to do whatever you want with it.
You could help continuing its development by:
If you discover a security vulnerability within Better Auth, please report it via GitHub Security Advisories.
All reports will be promptly addressed, and you'll be credited accordingly.
`disableSignUp` on a social provider is ignored for ID-token sign-in (`/sign-in/social` with `idToken`)
D1 adapter: `D1SqliteAdapter` inherits `supportsMultipleConnections = false`, so kysely serializes every query behind a mutex shared across requests on a Workers isolate
listMembers throws "Incorrect syntax near ')'" on MSSQL when the filter matches zero members
Lazily-cached init promises hang forever on Cloudflare Workers when the initializing request is aborted
oauth-provider: auth.api.oauth2Consent() always fails "request not found" without a raw Request
Configurable email validation via a global validation option
Username signin endpoint not enforcing captchas
feat: add a Sign in with ChatGPT
feat(cookies): support the `__Host-` cookie prefix
SSO: rotate SAML IdP signing certificate without deleting the provider