One login. Every BitLogin site.

One password.
Every door it opens.

Create a BitLogin account on any site that supports it, and the same login name and password sign you into every other one. No new account to make, no extension to install, no separate signer app to keep paired and running.

What actually happens at sign-in

No account database to breach, no password-reset email to intercept — just math, run locally, every time.

Everyday login
Login name + password
Locally derived
Password-locked locator key
Public network
Encrypted capsule lookup
Result
Your portable identity, unlocked

Two independent ways in, one identity

Forgetting a password and losing a device are different emergencies. BitLogin keeps them cryptographically separate.

Password path

Login name + password deterministically derive a private "locator" key and an encryption key. That key finds and decrypts a small credential capsule — no lookup table, no server, no email.

Recovery phrase

A 12-word phrase derives a completely independent recovery identity. A cracked password can never sign, replace, or delete the recovery capsule — it has no authority over that path at all.

One everyday identity

Both paths unlock the exact same everyday keypair — your real, canonical, portable identity. Change your password as often as you like; the identity underneath never moves.

Not a browser extension. Not a remote signer.

Both of those are good tools for the people already running them. BitLogin exists for everyone else.

A browser extension (NIP-07)

Lives in one browser

Sign in on your phone, at work, or in a private window, and you're locked out — the keys never left that one browser profile.

A remote signer (NIP-46)

Needs another device online

Every sign-in bounces through a separate signing app or "bunker" that you have to keep running, paired, and reachable.

BitLogin

Just a login name and password

The two things you already remember. Nothing to install, nothing else to keep online, works the same on any device or browser.

Why this is different

Every design choice traces back to one constraint: it has to work with nothing but static files and a public network.

Static-first

The whole client — crypto, UI, worker — ships as files. Host it anywhere: Pages, IPFS, a folder on a CDN. No backend to run or pay for.

No single point of failure

Encrypted capsules are published to multiple independent relays with quorum reads and readback verification, so losing any one of them doesn't lock anyone out.

Generated by default, never weak

A downloadable encrypted capsule can be attacked offline forever, so BitLogin generates a high-entropy passphrase for you by default. Prefer your own? It's allowed, but it has to clear a real entropy floor and a common-password check — no "password123", ever.

Argon2id + AES-256-GCM

Memory-hard key derivation, authenticated encryption, canonical serialization, and fixed padding buckets so ciphertext size doesn't leak contents.

Rollback-resistant

A local generation high-water mark and monotonic timestamps mean a stale or malicious relay can't quietly roll a logged-in device back to an older capsule.

Works with existing Nostr apps

Once unlocked, BitLogin quietly plugs into the same window.nostr interface browser extensions use — apps built for those work with zero code changes.

Drop it into any static page

One script tag, one custom element. No build step, no framework required.

<script type="module" src="/vendor/bitlogin/bitlogin.js"></script>
<bitlogin-auth vault-relays="wss://relay.example,wss://relay2.example"></bitlogin-auth>

Read the full integration guide →