---
# System prepended metadata

title: codex32 and SSKR

---

# codex32 and SSKR

[codex32](https://github.com/apoelstra/bips/blob/2023-02--volvelles/bip-0000.mediawiki#user-content-Rationale) is a method for using Shamir's Secret Sharing to split a seed into shares for purposes of backup. [Sharded Secret Key Reconstruction (SSKR)](https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-011-sskr.md) by [Blockchain Commons](https://www.blockchaincommons.com/) is another such method. This document is a comparison of the two formats, as they are designed with the same general goal in mind but different assumptions and requirements.

| codex32 | SSKR |
|---------|------|
| [Supports hand-encoding.](https://secretcodex32.com/docs/2022-09-26--color.pdf) | Requires electronic computation. |
| A single share of a ~128 bits is 48 characters and fits on most metal word plates| a single share of ~128 bits is 52 characters and requires tricks to fit on metal word plates |
| Only supports single-level encoding. | Supports two-level encoding, (e.g. 9 shares: 2-of-3 shares within 2-of-3 share groups)
| Supports 31 shares per split. | Supports 16 shares per split, but also up to 16 groups (thus maximum 256 shares in 16 groups, where there is a minimum group threshold and within each group a specific share threshold).
| Encoded share values use Bech32. | Encoded share values are binary.
| Does not specify separate layers. | Careful separation of code layers for basic SSS, two-level sharding, and optional ASCII armoring via [ByteWords](https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-012-bytewords.md) or other encoding formats (e.g., Base64). Bytewords and [URs](https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-006-urtypes.md) are optimized for transport on physical media or QR codes, including large message transmitted as a sequence of non-repeating QR codes generated via rateless fountain codes. (e.g., animated PSBTs.)
| ?? Splitting a seed is deterministic: the same seed will always generate the same shares. | Each session uses different entropy, which means shares from separate sessions are not correlatable and incompatible. Tooling allows the use of determinism for testing (not recommended for production.)
| Code not yet security audited. | Code has undergone [external review](https://github.com/BlockchainCommons/bc-sskr/blob/master/SECURITY-REVIEW.md).
| Recording Bech32 on physical media is highly compact, but prone to human-caused recording errors (letter ambiguity, etc.) | ByteWords are less compact (4 bits per character) but less error-prone to [human-caused recording errors](https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-012-bytewords.md#word-selection-criteria). 
| Offers advanced error correction. | Encoding as ByteWords adds simple error detection via CRC-32.
| No support for splitting data larger than 32 bytes (64 bytes with an extension.) | In combination with [Gordian Envelope](https://github.com/BlockchainCommons/Gordian/blob/master/Envelope/README.md), secrets of arbitary size may be sharded, including BIP-38 passphrases, key derivation hints (BIP38+passphrase/BIP39/BIP32/HKDF/path…), descriptors, other critical metadata like lightning channels, or private data like transaction details).