Generating an eepsite vanity address

I2P base32 addresses aren't particularly memorable, http://gdncgijky3xvocpkq6xqk5uda4vsnvzuk7ke7jrvxnvyjwkq35iq.b32.i2p/ doesn't exactly roll off the tongue.

Although you can register a shortname, the availability of your site via that name will depend on whether the shortname appears in the user's addressbook.

Some I2P operators, therefore prefer to generate a vanity address.

This documentation details how to generate a vanity I2P address for use with an eepsite.


You will need i2pd-tools or my dockerised version of it.

Generating the vanity name

The process works by generating lots and lots of keys and seeing whether they match the pattern you've provided - the longer the string you're trying to include, the more computationally expensive this is (you can see approximate times to generate in the i2pd-tools readme.

The following tells the tooling to use 4 threads to try and find btas

docker run --rm \
-v $PWD:/op \
bentasker12/id2pd-tools vain btask -t 4

It gave the following output

Initializing vanity generator (4 threads)

Starting attempt #1:
[+] thread 3 bound
[+] thread 2 bound
[+] thread 0 bound
[+] thread 1 bound

Found address: btaskxu6k3mdxcq73zky6ocinv7xbcj5owqzgmagg56fr2wryckq
Hashes calculated: 4003375

The key is written into a file called private.dat in the local directory

docker run --rm \
-v $PWD:/op \
bentasker12/id2pd-tools keyinfo private.dat

Pattern based generation

The tool will accept a regex to search for, so I might perhaps want to run

docker run --rm \
-v $PWD:/op \
bentasker12/id2pd-tools vain '(btask|ben)' -r -t 4

To find names which match either of those.

Using the name

In order to use the name, you need to copy the .dat file to wherever your eepsite is hosted and reference it in tunnels.conf

  type = http
  host =
  port = 80
  keys = keys/private.dat
  inbound.length = 1
  outbound.length = 1

Restart I2P and you should be good to go