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.
No account database to breach, no password-reset email to intercept — just math, run locally, every time.
Forgetting a password and losing a device are different emergencies. BitLogin keeps them cryptographically separate.
Login name + password deterministically derive a private "locator" key and an encryption key. That key finds and decrypts a small credential capsule on open relays — no lookup table, no account server, no email.
A 12-word phrase derives a completely independent recovery identity. A cracked password cannot sign, replace, or delete the recovery capsule. Recovery availability still depends on relays retaining your capsule and on your own recovery export — quorum and retention are best-effort, not guarantees.
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.
Both of those are good tools for the people already running them. BitLogin exists for everyone else.
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.
Every sign-in bounces through a separate signing app or "bunker" that you have to keep running, paired, and reachable.
The two things you already remember. Nothing to install, nothing else to keep online, works the same on any device or browser.
Every design choice traces back to one constraint: it has to work with nothing but static files and a public network.
The whole client — crypto, UI, worker — ships as static files. Serve the complete reviewed bundle from your app's own origin. No backend to run or pay for.
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. An account still lives only as long as some relay retains its capsule — keep the recovery export.
A downloadable encrypted capsule can be attacked offline forever, so BitLogin always generates a high-entropy passphrase. Human-chosen passwords are disabled because composition rules cannot make them safe against unrestricted offline guessing.
Memory-hard key derivation, authenticated encryption, canonical serialization, and fixed padding buckets so ciphertext size doesn't leak contents.
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.
Once unlocked, BitLogin quietly plugs into the same window.nostr interface browser extensions use — apps built for those work with zero code changes.
The Connection Vault stores wallet connections (NWC) as independently encrypted records on your account. Connect a wallet to an app once; on a new device it's one tap, not another paste. Apps ask with requestNwcConnection(), you approve, and you remove the stored copy any time (revoking spending authority happens at your wallet) — and the budget your wallet enforces stays the real limit.
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>