Skip to content
HackIndex logo

HackIndex

Username Variation Generation

3 min read Jul 10, 2026

Overview

A subject rarely uses the same username on every platform. Accounts created at different times, on different platforms, or with different privacy intentions will often use variations of a core handle or derive from a real name. Generating a structured candidate list before running enumeration with Sherlock significantly increases the number of accounts found.

This page covers how to build that candidate list from a known username or a real name, and which patterns to prioritise.

Common Username Patterns

Most people follow predictable patterns when creating usernames. Starting from a real name of John Michael Smith, common derivations include:

  • First name only: john

  • First and last: johnsmith, john_smith, john.smith

  • First initial and last: jsmith, j_smith

  • First and last initial: johns

  • Reversed: smithjohn

  • With birth year or age: johnsmith1990, jsmith92

  • With numbers appended: johnsmith1, johnsmith99

  • With location or interest appended: johnsmith_london, johnsmithdev

When starting from a known username rather than a real name, common variations include appending or prepending numbers, underscores, dots, or the letter x, as well as substituting characters with visually similar ones.

Generating Variations with Username Anarchy

Username Anarchy generates a comprehensive list of username candidates from a first and last name. It covers the most common naming conventions used across English and some non-English platforms:

┌──(kali㉿kali)-[~]
└─$ git clone https://github.com/urbanadventurer/username-anarchy.git && cd username-anarchy
┌──(kali㉿kali)-[~]
└─$ ./username-anarchy --input-file names.txt > candidates.txt

The input file takes one full name per line. The output is a flat list of username candidates ready to pipe into Sherlock or any other enumeration tool.

For a single name directly:

┌──(kali㉿kali)-[~]
└─$ ./username-anarchy John Smith > candidates.txt
johnsmith
john.smith
john_smith
jsmith
smithjohn
smith.john
johns
j.smith
john
smith

Generating Variations from a Known Handle

When you have a confirmed username and want to find related accounts that use variations of it, build the list manually or use a script. Common patterns to generate from a base handle basehandle:

base="basehandle"
variants=(
  "${base}"
  "${base}_"
  "_${base}"
  "${base}1" "${base}2" "${base}99" "${base}123"
  "x${base}" "${base}x"
  "${base}." ".${base}"
  "real${base}" "the${base}" "its${base}"
  "${base}official" "${base}real"
)
for v in "${variants[@@]}"; do echo "$v"; done > handle_variants.txt

Feeding Candidates into Sherlock

Pass the generated candidate list directly into Sherlock for enumeration:

┌──(kali㉿kali)-[~]
└─$ cat candidates.txt | xargs sherlock --csv --output results.csv

Prioritising Candidates

A name like John Smith will produce hundreds of candidates, most of which will not belong to your subject. Before running the full list, prioritise candidates based on what you already know:

  • If the subject has a known birth year, prioritise variants with that year appended

  • If the subject is technical, prioritise variants without numbers since technical users often secure their preferred username early

  • If the subject is from a non-English speaking country, check whether their name has a common local transliteration pattern

  • If you have a confirmed username on one platform, that exact handle is the highest-priority candidate for all other platforms

Run the highest-priority candidates first and review results before running the full list. Early hits often narrow down which patterns the subject actually uses, making the remaining search more targeted.

Non-Latin Name Handling

For subjects whose names use non-Latin scripts, generate both the native script form and common romanisation schemes. Subjects from Arabic, Russian, Chinese, Korean, Japanese, and other non-Latin script regions often create usernames using romanised versions of their name, and the romanisation varies between individuals. Tools like Username Anarchy do not handle this automatically. Build romanisation variants manually based on the subject's language background and common romanisation conventions for that language.

References