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.

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:
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:
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.
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:
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.

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.
- Select Monero and your seed language.
- Enter the complete desired prefix, including its initial
4. Try44afirst. A longer pattern such as44cattakes more work. - Click Generate wallet with prefix. Leave custom entropy empty unless you understand how to supply enough randomness. A memorable phrase is unsuitable.
- Wait for a match, or use STOP and shorten the prefix.
- Check that the displayed address starts with your requested prefix. The page can also display an ordinary wallet generated when it opens.
- 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.