Vanity Address
A custom Bitcoin address starting with specific characters (e.g., 1Pizza...), generated by repeatedly searching for a matching prefix.
A vanity address is a Bitcoin address whose prefix has been chosen for vanity reasons rather than left to chance. The generation method is brute force: derive keypair after keypair and check if the resulting address starts with the desired pattern. The search cost grows exponentially with the prefix length.
Not every pattern is possible: the bech32 alphabet has no 1, b, i or o, so bc1qlearnbtc can never exist. Legacy 1... prefixes are case-sensitive, and the way Base58 packs the bytes makes 1R... through 1z... about 58 times rarer than 12... through 1Q....
Rough orders of magnitude for bech32 (bc1q...) addresses:
- 4 custom characters: ~1 million tries (seconds on a laptop)
- 6 custom characters: ~1 billion tries (minutes to an hour on a laptop)
- 8 custom characters: ~1 trillion tries (multiple GPU-hours)
- 10+ custom characters: realistically requires GPU clusters and days of compute
Taproot (bc1p...) prefixes need the same number of tries, but with standard BIP 86 keys each candidate needs a fresh Taproot tweak instead of one point addition, so the same search runs slower.
A genuine example is the 3BMEX... deposit addresses BitMEX used to issue. The famous 1BitcoinEater... address is the opposite construction: hand-written text with only the last six characters worked out so the checksum passes. No key search produced it and nobody holds a key for it, which is exactly what makes it a burn address.
The security trap is letting someone else do the work. If a vanity service generates the key and hands you the private key, they have it too (and so does anyone who breaks into their database). Best practice is one of:
- Local generation with an open-source tool on hardware you control. VanitySearch (CPU or GPU) does
1...,3...andbc1q...prefixes and vanitygen++ addsbc1p...; the original vanitygen is Base58-only, so it cannot produce the bech32 addresses in the table above. The private key never leaves your machine. - Split-key vanity generation. You pick a secret
aand publish only the pointA = aG. The searcher brute-forces offsetsbuntil the address ofA + bGmatches and sends youb. The private key isa + b (mod n); only you can compute it, because the searcher never learnsa. Check that(a + b)Greally produces the advertised address before you fund it. Useful when you want to outsource the compute without trusting the compute provider.
Vanity addresses are a privacy mistake by default. Reusing one address for vanity-branding purposes destroys the wallet's transactional privacy by aggregating activity onto one identifier. If you really want a vanity address, generate one and use it as a vanity receive address that you then sweep into normal HD-wallet addresses for actual custody.
What two real searches took
The table gives averages. In October 2026 we ran two searches ourselves with VanitySearch 1.19 on twelve CPU threads of a laptop (an Apple M3 Max, no GPU, about 74 million keys a second once the machine was free). Both patterns choose eight characters. The legacy search asked for 1LearnBTC in any letter case and found 1LeArNBtcECPZj7Bd5oeNcUJnhpVddy81U after 46 minutes and 237.6 tries (about 203 billion), half the average for that pattern. The bech32 search asked for bc1qlearn8tc exactly (the 8 stands in for the b the alphabet lacks) and found bc1qlearn8tcerg966qrqtwaelyt06fq2ze7zrsg9t after 6 hours 1 minute and 240.2 tries (about 1.24 trillion), 12 percent past its average. Folding case gives most letters two chances out of 58, which is why the bech32 job averaged 2.7 times the work; luck stretched that into six times the tries and eight times the wait. Both keys are demo material with no custody behind them, so never send anything to either address.
Key takeaways
- Uses brute force to find addresses with a chosen prefix
- Longer prefixes become computationally expensive
- Generate the key yourself, or use split-key so the searcher never learns it
Corrected
-
Was: The entry said that in split-key vanity generation 'neither party ever sees the full private key', listed the 1BitcoinEater burn address among 'famous' vanity addresses, recommended a tool called bitcoin-vanity-search that does not exist, put Taproot bc1p prefixes in the bech32 cost table as if a try cost the same, and said a vanity service 'emails you the seed'.
Now: The requester publishes a public point, the searcher returns an offset, and the requester adds the two to get the full private key, which only the searcher never learns; the entry says so and tells the reader to check the address before funding it. 1BitcoinEater is described as the opposite construction (hand-written text with a computed checksum, no key search, no key) and linked to the burn-address entry, with BitMEX's 3BMEX deposit addresses as the genuine example. The tools are VanitySearch and vanitygen++, with a note that the original vanitygen is Base58-only. Taproot prefixes take the same number of tries but cost more per try, and a service hands over a private key, not a seed. Details
Sources (7)
- BIP 173 - Bech32: the data part uses only alphanumeric characters excluding 1, b, i and o, and encoders must output all lowercase
- BIP 86 - Key derivation for single-key P2TR outputs: the output key is the internal key tweaked by a tagged hash of itself, so every candidate costs a tweak
- JeanLucPons - VanitySearch README: supports P2PKH, P2SH and bech32 (bc1q) prefixes on CPU and CUDA GPUs; split-key flow where the final key is the partial key plus the secret mod n
- 10gic - vanitygen++ README: -F p2wpkh and -F p2tr add bc1q and bc1p searches; split-key generation supported
- samr7 - vanitygen README: generates regular Bitcoin, Namecoin and testnet addresses; bech32 is not mentioned
- Bitcoin Wiki - Vanitygen: the difficulty table puts a key search for 1BitcoinEaterAddressDontSend at about 3.3e33 years
- BitMEX - Update on customer Bitcoin deposit addresses (Wayback Machine): new bc1 addresses were issued 'without our historical vanity address prefix (3BMEX, bc1qmex)'
Related terms (6)
Published . Revised . One correction logged for this page.
Edit this page on GitHub