en

Generating Vanity Onion v3 Addresses with mkp224o

A vanity .onion address that begins with recognizable characters makes your hidden service more memorable and harder to spoof with a fake address that looks similar at a glance. Generating a vanity address for onion v3 requires brute-forcing ed25519 key pairs until one produces an onion address starting with your desired prefix. mkp224o is the most efficient open-source tool for this, with GPU acceleration support that dramatically reduces generation time compared to CPU-only tools. This guide covers installation, configuration, and realistic expectations for generation time based on prefix length.

Need this done for your project?

We implement, you ship. Async, documented, done in days.

Start a Brief

Understanding Onion v3 Address Space

Onion v3 addresses are 56 Base32 characters (excluding the .onion suffix). They are derived from an ed25519 public key through a specific derivation process. To generate a vanity address, mkp224o generates millions of ed25519 key pairs per second and checks each resulting onion address against your desired prefix.

The time to generate a given prefix length grows exponentially. Each additional character multiplies generation time by 32 (the Base32 alphabet size). Realistic time estimates on a modern 8-core CPU running mkp224o:

4-char prefix: seconds to minutes
5-char prefix: minutes
6-char prefix: hours
7-char prefix: days
8-char prefix: weeks to months
9+ char prefix: months to years (GPU needed)

The Base32 alphabet used in onion v3 addresses consists of a-z and 2-7. Characters like 0, 1, 8, and 9 do not appear in valid onion addresses. Plan your desired prefix accordingly using only valid Base32 characters.

Installing and Building mkp224o

Build mkp224o from source for best performance. The build process requires gcc, libsodium, and standard build tools:

apt update && apt install -y gcc make libsodium-dev pkg-config
git clone https://github.com/cathugger/mkp224o.git
cd mkp224o
./autogen.sh
./configure --enable-donna --enable-donna-sse2 --enable-batching
make -j$(nproc)

The --enable-donna and --enable-donna-sse2 flags enable optimized ed25519 implementations that are significantly faster than the default libsodium implementation for key generation purposes. The --enable-batching flag enables batch key generation that improves throughput on multi-core systems. These flags collectively can double generation speed compared to default build options.

After building, test with a single-character prefix to verify the tool works: ./mkp224o a. You should see addresses starting with "a" appear within seconds. Watch the generation rate reported in the statistics output.

Running Generation and Saving Keys

Start generation for your desired prefix. Use nohup to keep it running after SSH disconnection:

nohup ./mkp224o -d /var/onion_keys -n 5 -s YOUR_PREFIX > mkp224o.log 2>&1 &

The -d flag specifies the output directory. -n 5 stops after finding 5 matching addresses. Without -n, generation continues indefinitely. -s sorts output and shows statistics. Each matching address is saved as a separate subdirectory containing hostname, hs_ed25519_public_key, and hs_ed25519_secret_key files.

After generation completes, evaluate the generated addresses for the most memorable or appropriate one. Copy the chosen key directory to the HiddenServiceDir location on your server with correct ownership:

cp -r /var/onion_keys/CHOSEN_ADDRESS/ /var/lib/tor/hidden_service/
chown -R debian-tor:debian-tor /var/lib/tor/hidden_service/
chmod 700 /var/lib/tor/hidden_service/

Restart tor and verify the expected vanity address appears in /var/lib/tor/hidden_service/hostname.

GPU Acceleration for Long Prefixes

For prefixes of 8 characters or longer, CPU generation time becomes impractical. GPU acceleration using CUDA (NVIDIA) or OpenCL can achieve 10 to 100x higher key generation rates, bringing longer prefix generation within practical timeframes.

mkp224o supports OpenCL GPU acceleration through a separate build configuration. Install the OpenCL development libraries and rebuild with GPU support enabled. On an NVIDIA GPU with 3000+ CUDA cores, 8-character prefix generation typically completes in days rather than weeks.

GPU generation is most cost-effective on a rented GPU server for the generation period rather than a permanently maintained GPU instance. Cloud GPU instances (or ask AnubizHost about dedicated GPU options) for 24 to 48 hours of intensive generation, then migrate the resulting keys to your permanent hidden service VPS. Total cost for 8-character prefix generation on a GPU instance is typically under $20.

Why Anubiz Host

100% async — no calls, no meetings
Delivered in days, not weeks
Full documentation included
Production-grade from day one
Security-first approach
Post-delivery support included

Ready to get started?

Skip the research. Tell us what you need, and we'll scope it, implement it, and hand it back — fully documented and production-ready.

Anubiz Chat AI

Online