Text to Bitcoin Address Converter
Encode any text into valid Bitcoin P2PKH addresses and decode them back. Uses real Base58Check encoding with SHA-256 checksums.
About
Bitcoin transactions can embed arbitrary data by encoding text into the 20-byte payload of P2PKH addresses. Each address carries up to 20 bytes of ASCII data, prefixed with version byte 0x00 and suffixed with a 4-byte checksum derived from double SHA-256 hashing. The resulting addresses are indistinguishable from real payment addresses at the protocol level. If you broadcast a transaction with these addresses as outputs, your message is stored permanently on the blockchain. This technique was notably used to embed the Len Sassaman tribute and Wikileaks cables. This tool performs real Base58Check encoding - not a simulation. It computes genuine SHA-256 checksums via the Web Crypto API and handles the full Base58 alphabet (excluding confusable characters 0, O, I, l). Limitation: payloads are not spendable. Funds sent to these addresses are permanently lost.
Formulas
The Base58Check encoding process for each 20-byte text chunk:
where ‖ denotes byte concatenation, SHA256 is the SHA-256 cryptographic hash, and Base58 converts a big-endian integer to the 58-character Bitcoin alphabet. Leading zero bytes in the input map to leading 1s in the output. Decoding reverses: strip leading 1s, convert Base58 โ integer โ 25 bytes, verify the checksum matches, then extract bytes 1 - 20 as the text payload.
Reference Data
| Parameter | Value | Description |
|---|---|---|
| Version Byte | 0x00 | Mainnet P2PKH (prefix โ1โ) |
| Payload Size | 20 bytes | RIPEMD-160 hash length (repurposed for data) |
| Checksum Size | 4 bytes | First 4 bytes of double SHA-256 |
| Total Raw Bytes | 25 bytes | 1 version + 20 payload + 4 checksum |
| Address Length | 25 - 34 chars | Base58 encoded output |
| Base58 Alphabet | 58 chars | 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz |
| Excluded Characters | 0, O, I, l | Removed to prevent visual ambiguity |
| Hash Algorithm | SHA-256 | Applied twice for checksum |
| Max Text per Address | 20 chars | ASCII characters (1 byte each) |
| Addresses for 140 chars | 7 | ceil(140 รท 20) |
| P2SH Version Byte | 0x05 | Prefix โ3โ (not used here) |
| Testnet Version Byte | 0x6F | Prefix โmโ or โnโ (not used here) |
| Bech32 Format | bc1... | SegWit native (not used here) |
| OP_RETURN Limit | 80 bytes | Alternative data embedding method |
| Dust Threshold | 546 satoshis | Minimum output to avoid relay rejection |