Configure Google, GitHub, Discord, Microsoft, Apple and more once. Expose one callback. Use one SDK. Receive one normalized user profile.

{ "id": "1a2b...", "provider": "google", "email": "jane@acme.co", "name": "Jane Cooper", "username": "jane", "verified": true }
Trusted by teams shipping production auth
Stop rewriting OAuth for every provider. MultiAuthy is the layer between your app and every identity provider you'll ever need.
Configure every provider through a single dashboard. One callback URL. One API surface.
Paste your Client ID and Secret. Copy your callback URL. You are done.
OAuth secrets are encrypted at rest with AES-256-GCM. Never exposed to the client.
Every provider returns the same shape. No provider-specific field mapping.
TypeScript-first. Works with Express, Next.js, Node.js and Bun out of the box.
Every login attempt is logged. Filter, search, export. Debug in production.
Add or remove providers from the dashboard. Your code never changes.
No `given_name` vs `first_name`. No `picture` vs `avatar_url`. Just one shape, forever.
{
"id": "1a2b3c4d...",
"provider": "google",
"email": "jane@acme.co",
"name": "Jane Cooper",
"username": "jane",
"avatar": "https://.../jane.jpg",
"verified": true
}Install once. Configure providers in the dashboard. Use anywhere.
import { MultiAuthy } from "@multiauthy/sdk"
const auth = new MultiAuthy({
apiKey: process.env.MULTIAUTHY_KEY,
projectId: process.env.MULTIAUTHY_PROJECT,
})
app.get("/login", (req, res) => {
res.redirect(auth.login("google"))
})
app.get("/callback", auth.callback(), (req, res) => {
console.log(req.user)
})$ npm install @multiauthy/sdk
added 1 package in 2s
$ curl https://your-app.onrender.com/api/callback \
-H "Authorization: Bearer ma_live_..."
{
"email": "jane@acme.co",
"provider":"google",
"verified":true
}Give it a name. Get an API key and a callback URL. Instant.
Paste each provider's Client ID and Secret. Credentials are encrypted server-side.
One package. Point it at your project and expose a single callback route.
Redirect users to log in. Receive one normalized user profile. Done.
Configure providers, rotate keys, inspect logs. Nothing more.
No magic. No lock-in. No convention that surprises you at 2am.
"We removed 1,400 lines of custom OAuth code. Two hours of migration, seven providers live."
"The normalized user object alone is worth it. No more branching on provider fields."
"Finally an auth product that doesn't try to own our user model. Just OAuth, done right."
Auth0 and Clerk own your user model. MultiAuthy is a thin OAuth gateway — it hands you a normalized user object and gets out of the way. Bring your own database, your own sessions, your own everything.
Client IDs and Secrets are encrypted with AES-256-GCM before hitting the database. They are only ever decrypted server-side during a live OAuth exchange.
No. You register one callback URL per project. Adding or removing providers never changes it.
Express, Next.js, Node.js, and Bun. The SDK is framework-agnostic at its core — anywhere with a request/response cycle works.
The backend is open source. Enterprise customers receive a container image and setup support.
Free forever for hobbyists. Five minutes to your first login.