monero.loveA little love for the network.
← All guides

Monero / Privacy / Tor

How to Create Vanity Tor and Monero Addresses

Make a vanity Tor onion address with mkp224o and a custom Monero address offline. Learn prefix limits, key backups and how to verify the results.

Paper illustration of a printing press producing Tor and Monero address strips with custom prefixes.

A vanity address starts with characters you choose. A short word can make an onion hostname recognizable, or mark the beginning of a Monero receiving address.

You cannot rename an existing address. Both methods generate candidate keys, calculate their addresses and keep a matching result. The keys belonging to that result are what let you operate the onion service or spend the Monero. These examples use Linux for Tor and an offline browser for Monero.

Choose a short prefix

A v3 onion hostname has 56 characters before .onion. Its encoding uses lowercase letters and digits 2 through 7. Start with a short pattern such as cat.

For an unconstrained onion prefix, each extra character increases expected search work by about 32 times. That follows from the 32-character alphabet. Treat this as an average across many searches. Hardware speed and luck determine an individual wait.

A standard Monero mainnet address has 95 characters and begins with 4. Its Base58 alphabet excludes 0, O, I and lowercase l. The opening characters also have encoding constraints, so adding any word after 4 will not necessarily work. Keep capitalization exact.

Generate a vanity Tor address

Tor's vanity-address documentation points to mkp224o. On Debian or Ubuntu, install the build tools, then get the source from its upstream repository:

Shell
sudo apt update
sudo apt install git gcc libc6-dev libsodium-dev make autoconf
git clone https://github.com/cathugger/mkp224o.git
cd mkp224o
./autogen.sh
./configure
make

Review the project's release information before building. These commands compile the generator as your normal user. They do not install Tor or start a public service.

Generate one matching address, using two worker threads:

Shell
umask 077
./mkp224o -d vanity-onions -n 1 -t 2 cat

The result goes into a directory under vanity-onions. It contains hostname, hs_ed25519_public_key and hs_ed25519_secret_key. The -n 1 option limits output to one result. Use Ctrl+C if you want to stop a long search.

Back up the whole result directory privately. Losing its secret key means losing the ability to operate that address. Copying only the hostname is insufficient.

Give the generated keys to Tor

First install Tor and prepare a local web server using the onion-service setup guide. The example below assumes the website already answers on 127.0.0.1:8080.

On Debian or Ubuntu, copy the result into a new service directory. Replace GENERATED_ADDRESS.onion with the actual directory name. Do not overwrite another onion service's keys.

Shell
sudo cp -r vanity-onions/GENERATED_ADDRESS.onion /var/lib/tor/vanity-site
sudo chown -R debian-tor:debian-tor /var/lib/tor/vanity-site
sudo chmod -R u+rwX,og-rwx /var/lib/tor/vanity-site

The debian-tor account is distribution-specific. Other installations may use a different service user. Add these lines to /etc/tor/torrc:

Plain text
HiddenServiceDir /var/lib/tor/vanity-site/
HiddenServicePort 80 127.0.0.1:8080

Restart Tor with sudo systemctl restart tor, then check its logs for configuration or permission errors. Open the complete generated hostname in Tor Browser and confirm that your website loads. The forwarding rule connects onion port 80 to your local server. Configure your web server to avoid exposing private files or identifying details.

If Tor presents a different hostname, check that HiddenServiceDir points to the copied folder rather than a newly created directory. The generated public and secret keys must stay together. Editing the hostname file cannot create the identity you wanted. If the address is correct but the page fails, check the local web server before generating another key.

Paper diagram of a search through candidate addresses, with the public result separate from a locked key backup.

Share the address. Keep the matching keys and recovery information private.

Create a vanity Monero address offline

The wallet generator hosted by Getmonero includes a Generate wallet with prefix option. Its downloadable version performs the calculations locally. This is a new wallet, so it will not change your existing wallet's address or balance.

Download the ZIP through Getmonero, extract it and follow the generator's signature-verification instructions before using it. Verify the signing-key fingerprint through a trusted source. Our PGP verification guide explains why importing a key alone does not establish trust.

Follow Monero's offline-wallet guidance: move the verified files to a clean, disconnected computer. Open wallet-generator.html in a browser with JavaScript enabled.

  1. Select Monero and your seed language.
  2. Enter the complete desired prefix, including its initial 4. Try 44a first. A longer pattern such as 44cat takes more work.
  3. Click Generate wallet with prefix. Leave custom entropy empty unless you understand how to supply enough randomness. A memorable phrase is unsuitable.
  4. Wait for a match, or use STOP and shorten the prefix.
  5. Check that the displayed address starts with your requested prefix. The page can also display an ordinary wallet generated when it opens.
  6. Record the complete public address and the generated 25-word recovery seed. Store the seed offline, away from cameras, shared folders and cloud backups. Make a second protected copy and keep it somewhere separate from the computer.

The generator also displays private spend and view keys. Its full wallet printout contains secrets. Do not publish that page as a donation card. Share only the receiving address or its public-address QR code.

Restore and check the Monero wallet

Use the official Monero GUI restoration procedure. Select Restore wallet from keys or mnemonic seed, restore from the recorded seed and choose a wallet password. Record the creation date for the restore-height setting. Start scanning before the first payment.

Compare the restored primary address with the generator's full address. Do not check only the vanity prefix. Before relying on the wallet, confirm your backup restores correctly and test receiving a small payment after synchronization. Restoring the seed on an internet-connected machine makes the wallet a hot wallet.

If your real aim is an easy payment name, OpenAlias may be more useful. It maps a domain-style name to a Monero address without searching for new keys.

A recognizable prefix is not proof of identity

Other people can generate the same opening letters with different keys. Tor explicitly warns about vanity-prefix impersonation. Bookmark onion addresses obtained through a trusted channel and verify complete payment destinations. A custom prefix helps recognition, but it cannot replace checking the rest of the address.

Support Monero Love

Help keep the public nodes and packages running. Send any amount of XMR.

Scan with a Monero wallet to donate to Monero Love.89hGTKxRVA3AUeKAbCRBt5TMSzq3MQZooNNsezCpNFjp2oeJPRx8AJeGKA8ziHZNqab78f4Vr1ntxhPDxX5298nnGZjHkhm