Username Variation Generation
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:
johnFirst and last:
johnsmith,john_smith,john.smithFirst initial and last:
jsmith,j_smithFirst and last initial:
johnsReversed:
smithjohnWith birth year or age:
johnsmith1990,jsmith92With numbers appended:
johnsmith1,johnsmith99With 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:
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:
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:
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
-
Username Anarchy — GitHubgithub.com/urbanadventurer/username-anarchy (opens in new tab)
Username generation tool supporting multiple naming convention plugins
Was this helpful?
Your feedback helps improve this page.