LearnBitcoin

Glossary

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... and bc1q... prefixes and vanitygen++ adds bc1p...; 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 a and publish only the point A = aG. The searcher brute-forces offsets b until the address of A + bG matches and sends you b. The private key is a + b (mod n); only you can compute it, because the searcher never learns a. Check that (a + b)G really 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.

Two cards comparing vanity address searches run with VanitySearch 1.19 on 12 CPU threads of an Apple M3 Max with no GPU. Card 1, a legacy address with letter case ignored: the pattern 1LearnBTC found 1LeArNBtcECPZj7Bd5oeNcUJnhpVddy81U after 46 minutes and 2 to the power 37.6 tries, about 203 billion keys, half the average for that pattern. Card 2, a native SegWit address matched exactly: the pattern bc1qlearn8tc found bc1qlearn8tcerg966qrqtwaelyt06fq2ze7zrsg9t after 6 hours 1 minute and 2 to the power 40.2 tries, about 1.24 trillion keys, 12 percent past the average. Orange bars show the tries on one shared scale, with a dashed tick at each pattern's average. Takeaway: same eight chosen characters, but bech32 has no letter case to fold, so its average job was 2.7 times bigger, and luck turned that into 6 times the tries and 8 times the wait.
Same eight chosen characters, very different waits. The bars show tries on one shared scale; the dashed ticks mark each pattern's average.

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)

Related terms (6)

Published . Revised . One correction logged for this page.

Edit this page on GitHub