GenerateRandomSearch

Crypto Wallet Address Generator

Anything that accepts a wallet address has to validate one, and validation is the whole point of the format: an address carries a checksum so that a mistyped one is rejected rather than quietly sending money to nobody. Test data therefore has to be genuinely well-formed, or it proves nothing. These addresses are — the Base58Check and Bech32 arithmetic is computed properly and verified before display — and they are testnet by default, because a testnet address cannot receive real funds at all.

What this generator does

Draws twenty random bytes in place of a public key hash and encodes them the way each address format does: version byte plus double-SHA-256 checksum for Base58Check, or the Bech32 polymod for a segwit address. Every address is verified before display, including a check that changing one character breaks it.

How to use this tool

  1. Choose an address type; testnet is the default and the safe one.
  2. Choose how many you need.
  3. Generate, and read the note about what you have been given.
  4. Paste them into your fixtures — never into a payment field.

Understanding the controls

Address type
Testnet or mainnet, legacy or segwit. Testnet is first because a testnet address cannot receive real funds; mainnet is offered because a parser has to handle the mainnet prefixes too.
How many
One to fifty. Each draws its own twenty random bytes, so repeats do not happen in practice.

Common use cases

  • Testing that address validation accepts well-formed addresses
  • Checking that validation rejects an address with one character changed
  • Seeding a database or a mock-up with plausible-looking addresses
  • Showing the difference between a legacy and a segwit address
  • Teaching what a checksum in an identifier is actually for

How this generator works

A legacy address is a version byte, twenty bytes and the first four bytes of the double SHA-256 of both, encoded in base 58 — which is why one starts with a 1 on mainnet and an m or n on testnet. A segwit address uses Bech32 instead, where the last six characters are a checksum computed with a polynomial that needs no hashing at all. Both are implemented from the specifications and tested against the published test vectors, which is the strongest independent check available: the vectors were computed by other people from the specification rather than from this code.

Randomness and fairness

The twenty bytes come from your browser's cryptographic random source. There is no seed and no key: these bytes stand in for a public key hash and were never derived from a private key, so no address here can be spent from.

For how randomness is produced across the whole site, see how Generate Random works.

Limitations and good to know

  • Bitcoin-style addresses only. Ethereum's checksum needs Keccak-256 rather than SHA-256 and is not implemented here.
  • There is no private key, so nothing sent to one of these addresses can ever be recovered. On testnet that is harmless; on mainnet it is permanent, and the page says so where it hands you one.
  • A mainnet address here is well-formed but has no history and no balance, so it will not behave like a real address in a block explorer.
  • Taproot and P2SH addresses are not offered; the two formats here cover what most validators are tested against.
  • This is test data, not a wallet. It generates no keys and cannot be used to receive, hold or send anything.

Privacy and your data

Addresses are generated in your browser and never leave it. You enter nothing, nothing is uploaded or stored, and analytics records only that the tool ran and how many addresses were made.