Free, open-source guides and device emulators for securing your own Bitcoin. Step by step, device in hand.
A complete, beginner-friendly tutorial site for Bitcoin self-custody. Covers seed generation, signing devices, wallet software, steel backups, and multisig - with browser-based device emulators so you can practice before buying hardware.
No tracking. No paywalls. No affiliate links. No sales CTAs.
Maintained by Bitcoin Butlers
bitcoin-butlers.github.io/bitcoin-self-custody
Or run locally: python3 -m http.server 9000
Practice with real device firmware in your browser. No hardware needed.
| Device | Approach | Status | Reference |
|---|---|---|---|
| SeedSigner | Pyodide (Python in browser via WASM) | Working - webcam QR, mobile touch, tutorials | SeedSigner/seedsigner |
| ColdCard Mk4/Q | Docker + noVNC (SDL simulator wrapped) | Planned - Dockerfile + scripts ready | Coldcard/firmware unix/simulator.py |
| Jade | Docker + QEMU web display | Planned - official Dockerfile.qemu with --webdisplay |
Blockstream/Jade |
| Passport | Docker + noVNC (SDL simulator wrapped) | Planned - Dockerfile + scripts ready | Foundation-Devices/passport2 simulator/ |
SeedSigner works fully client-side (no server) because its firmware is pure Python. ColdCard, Jade, and Passport are C firmware requiring QEMU/Docker and a host server to run.
| Guide | Method |
|---|---|
| Hardware Wallet | Let your device generate the seed |
| Seed Picker Cards | Shuffle physical BIP-39 word cards |
| Dice Rolls | 99 rolls for 256-bit entropy |
| Camera Entropy | SeedSigner hashes a photo |
| Entropia Pills | 3D-printed capsules with BIP-39 words |
| Codex32 | Pen-and-paper generation with hand-verifiable checksums |
| Seed Generation Overview | All 6 methods compared |
Each guide includes device-specific steps via dropdown selectors (SeedSigner, ColdCard Q, ColdCard Mk4, Jade, Passport) with direct links to each device's open-source code.
| Guide | Device |
|---|---|
| SeedSigner | SeedSigner / SeedSigner+ |
| ColdCard Q | Coinkite ColdCard Q |
| ColdCard Mk4 | Coinkite ColdCard Mk4 |
| Passport | Foundation Passport |
| Jade | Blockstream Jade / Jade Plus |
| Compare Devices | All 5 side by side |
| Guide | Software |
|---|---|
| Sparrow Wallet | Desktop coordinator for single-sig and multisig |
| Bull Bitcoin | Non-custodial hot wallet |
| Multisig with Sparrow | 2-of-3 multi-vendor multisig |
| Guide | Topic |
|---|---|
| Steel Backup | Single-sig and multisig steel plate backups |
| Checklist | For |
|---|---|
| First Setup | Just got a device? Start here. |
| Backup Verification | Prove your backup works before you need it. |
| Inheritance Planning | Make sure your Bitcoin outlives you. |
- 17 guides: 6 seed generation methods, 5 signing devices, 3 wallet/multisig, steel backup, device comparison, seed overview
- 3 checklists: first setup, backup verification, inheritance planning
- Codex32 (BIP-93) guide with Shamir splitting and hand-verifiable checksums
- SeedSigner web emulator (Pyodide/WASM - real firmware in browser, webcam QR, mobile touch, guided tutorials)
- Device-specific dropdown selectors with GitHub source code links (seed.py, seed.py, random.c, SECURITY.md)
- FOSS vs source-available licensing distinction in device comparison
- Tutorial site: hash routing, glossary tooltips, browser history navigation, internal link routing
- GitHub Pages CI deployment
- ColdCard web emulator - Docker + noVNC wrapping MicroPython/SDL simulator (Dockerfile + scripts ready, blocked by upstream submodule TLS issue)
- Jade web emulator - Docker + QEMU with
--webdisplay(official Dockerfile.qemu, needs linux/amd64 host for build) - Passport web emulator - Docker + noVNC wrapping SDL simulator (Dockerfile + scripts ready, build not started)
- Emulator VPS hosting (C firmware emulators require a server, unlike SeedSigner's client-side WASM)
- Shamir backup guide (beyond Codex32)
- Passphrase guide (25th word)
- Video walkthroughs
- Translations (Spanish, Portuguese, Japanese priority)
All tutorial content is original. The following external sources are referenced throughout the guides:
- BIP-39 - Mnemonic code for deterministic keys (word list)
- BIP-93 - Codex32: Shamir secret sharing for seed backup
- BIP-85 - Deterministic entropy from BIP-32 keychains (child seeds)
- SeedSigner/seedsigner -
src/seedsigner/models/seed.py(FOSS, MIT) - Coldcard/firmware -
shared/seed.py(source-available) - Blockstream/Jade -
components/random/random.c(FOSS, MIT) - Foundation-Devices/passport2 -
SECURITY.md(source-available)
- Sparrow Wallet - Desktop coordinator (Apache 2.0)
- Bull Bitcoin - Non-custodial mobile wallet (GitHub)
- secretcodex32.com - Codex32 worksheets and volvelles
- Ian Coleman BIP-39 Tool - Offline checksum calculator
- coldcard.com/docs - ColdCard firmware and upgrade docs
- Blockstream Green - Jade companion app (iOS/Android)
- Envoy - Passport companion app (iOS/Android)
See CONTRIBUTING.md for guidelines.
Ways to help:
- Fix errors or outdated info in guides
- Test emulators on different platforms
- Add screenshots or diagrams
- Translate guides
- Build new emulator integrations
- Documentation (guides, checklists): CC BY-SA 4.0
- Code (emulators, scripts): MIT