Custom IPv6 Vanity Address Generator Print

  • 1

Hey there!
I'm going to talk about creating vanity IPv6 addresses today, do you know what that stands for?
I hope you understand the basics of the Internet Protocol (IP)?
Internet Protocol version 6 (IPv6) is the most recent version of the communications protocol that provides an identification and location system for computers on networks and routes traffic across the Internet.
To dumb it down a lot - If you imagine your telephone number is your IPv4 address and every time we visit a website we type your number into the browser ( and it sends us the information we need.
You probably don't see this much, as you visit the domain name instead ( - yet that domain name points to the IPv4 address and resolves the numbers for you!
If you're not familiar with all of this then the article probably is not for you yet it's definitely a great read if you want to know more.
Previously under IPv4 registration, they were limited to only numbers (
However, with the creation of IPv6 you can get creative with the use of CHARACTERS!
Although you can only use characters [A-F/0-9], it only takes a little creativity to find ways around this.
  • Facebook’s IPv6 address is: 2620:0:1c08:4000:face:b00c::
  • BBC (British Broadcasting Company): 2001:4b10:bbc::1
Also, your host must offer this service, as does
I've created some awesome examples on our shared hosting server.
Instead of visiting as an IPv4 address we now have personalized IPv6 addresses:
2607:5300:60:69b1::fab:dad - [ fab dad ]

2607:5300:60:69b1:420:b1a:57ed:420 - [ 420 blazed 420 ]

2607:5300:60:69b1::bad:bee - [ bad bee ]

2607:5300:60:69b1::def:aced - [ defaced ]

2607:5300:60:69b1::ba5e:ba11 - [ baseball ]

2607:5300:60:69b1::bad:c0de - [ bad code ]

2607:5300:60:69b1::badc:ab1e - [ bad cable ]

2607:5300:60:69b1::c01d:ca5e - [ cold case ]

2607:5300:60:69b1::b055 - [ boss ]

2607:5300:60:69b1::b1a5:70ff - [ blast off ]

2607:5300:60:69b1::ba5e:51 - [ base 51 ]

2607:5300:60:69b1::420:dab - [ 420 dab ]

2607:5300:60:69b1::c0ca:c01a - [ coca cola ]

2607:5300:60:69b1::ba5e:c0de - [ base code ]

2607:5300:60:69b1::e:b01a - [ ebola ]

2607:5300:60:69b1::da7a:ba5e - [ database ]

2607:5300:60:69b1::5ea:f00d - [ sea food ]
You can even create names like 1ee or  da1e, the possibilities of combinations are endless, another example could be full sentences together such as 2607:5300:60:69b1:da1e:def:aced:ba5e
Now that you have realized there are many different words that you can spell within an IPv6 address, let’s take a look at all the different IPv6 words we can spell!
First, we need to define what numbers are equal to what letters, and then we can walk through how I created a list of IPv6 words.
Since IPv6 addresses are comprised of hexadecimal numbers, we already have the letters A, B, C, D, E, and F to work with in our sentences. Next are the numbers that can represent letters…
So, combining all of this, we have the letters A, B, C, D, E, F, G, I, L, O, S, T, and Z.
Now, we need a dictionary that we can pull our words from. I decided to use the SCOWL Word List, because it will easily generate a list from the command line which we can then use in our scripts to create a list of words.
Connect to your SSH Terminal:


mkdir vanity
cd vanity/
tar -xvzf scowl-2018.04.16.tar.gz

After download and extracting the word list from above, we are going to make a British word list. Now, there are many different options for the SCOWL software, depending on how many words you want included in your list, language, etc. See the SCOWL read me for more details and options…

./mk-list british 95 > ipv6.txt

This command will create the file ipv6.txt containing the word list, we're now going to use a python script I've modified to convert the list into hex format, removing non standard characters, apostrophes etc. You can use your favorite editor such as vi or nano:


Insert the following code and save/exit:

import sys
sys.stdout = open('output.txt','wt')
import re, string

minlen = 3

subs = [
    #('for', '4'),
    ('z', '2'),
    ('g', '9'),
    ('l', '1'),
    ('o', '0'),
    ('s', '5'),
    ('t', '7')

reHexWord = re.compile("[a-f0-9]*")
fWords = open('ipv6.txt', 'r')
for w in fWords.xreadlines():
    w = w.strip()
    for old, new in subs:
        w = string.replace(w, old, new)
    if len(w) >= minlen:
        match =
        if match and == w:
        print w

The substitutions [ subs = ] can be adjusted to alter the list, ( S ) is replaced with ( 5 ) , ( T ) with ( 7) , ( L ) with ( 1 ) and so forth...
You're now going to run the python script and allow it to clean the world list.

# python

Hopefully, without error you can now view the text file 'output.txt' containing a list of hexadecimal words.
The contents of output.txt should look like the following:
This list should easily contain over 800 combinations of words, try different dictionary files such as American and English instead of British to create different combinations.
OPTIONAL: Now, we will remove any words that are longer than 4 characters. You could optionally skip this step, as it will substantially lower your available word list.
If you choose not to continue you will end up creating words in your IPv6 addresses that will have colons in them. I've created some examples above such as "::da7a:ba5e".
You are now going to pull out only the words that are 4 characters in length or less.
We can use grep to complete this step:

# sed -i s/\'//g output.txt

# grep -E '^[[:alpha:]]{4}$' output.txt > truncated.txt
# grep -E '^[[:alpha:]]{3}$' output.txt >> truncated.txt
# grep -E '^[[:alpha:]]{2}$' output.txt >> truncated.txt
# grep -E '^[[:alpha:]]{1}$' output.txt >> truncated.txt

You now have a generated list of possible words to use on our servers, contact our support department and request your vanity host!

Was this answer helpful?

« Back

Powered by WHMCompleteSolution