Solved.tools โ€” Free Online Calculators & Tools

We use cookies for analytics and advertising. Learn more about our cookie policy

Username Generator

Last updated: 16 August 2026

Reviewed by Gavin ยท Research and drafting assisted by AI

e.g. swift-tiger-4521
Target โ‰ฅ 12 chars
Pattern A ยท separator - ยท min 12 chars
witty-lemming-67(16c)
snowy-serpent-0263(18c)
jade-lynx-49(12c)
sunny-ocean-065(15c)
dusty-sail-29(13c)

Math.random() is fine for usernames (aesthetic, not security-sensitive). For password material, use the Password Generator or the JWT Secret Generator, which both usecrypto.getRandomValues().

Was this helpful?


Username Generator

A username generator builds memorable, typeable identifiers from selected word banks and a few random rolls. It is the everyday alternative to a password generator: the output is meant to be spoken aloud, typed on a phone, recognised in a friends list, and remembered over months, not to be cryptographically unguessable. This page explains how the four patterns in this tool work, when each is the right choice, and how to avoid the common pitfalls of using a generator output as a password or as a personal-data seed.

How to Use This Tool

  1. Pick a pattern from the dropdown, the hint under the field shows what the output looks like (swift-tiger-4521, BoldPhoenixRiver-Q7K2, dragon-viking-rune, cyber_ghost_42).
  2. Pick a minimum length with the slider (4 to 20 characters). The generator pads short picks with extra digits until the minimum is reached.
  3. Pick a separator, dash, underscore, dot, or none. The separator matters for readability; some platforms also reject certain characters.
  4. Pick a count from 1 to 25. Larger batches give the per-batch uniqueness check more work to do, but the algorithm re-rolls duplicates automatically.
  5. Click Generate to roll a fresh batch. Every handle in the batch is unique within the batch.
  6. Click Copy next to any handle to grab that single one, or Copy all to grab the whole batch as newline-separated text.

The whole pipeline runs in the browser. No network calls, no analytics, no upload, verifiable in DevTools. The Math.random() guarantee is documented in the source.

Pattern Types

The four patterns cover the most common jobs for a username:

Pattern A, Word + digits. swift-tiger-4521. Two words from the adjective and noun banks joined by your chosen separator, followed by 2 to 4 random digits. The everyday default: short, readable, easy to type on a phone keyboard, and almost universally accepted by every platform that allows ASCII identifiers.

Pattern B, Phrase + dice. BoldPhoenixRiver-Q7K2. Three or four capitalised words concatenated into a phrase, then a 3-4 character dice-style suffix mixing digits and letters. The most memorable of the four because the phrase can be read aloud. The example sums to 17 characters, has 1 capital letter (the B), 1 dash separator, and 1 digits-run of length 2 (the 72 inside Q7K2).

Pattern C, Fantasy. dragon-viking-rune. Three themed words from a medieval-fantasy bank (viking, dragon, ninja, wizard, druid, ranger, paladin, samurai, and so on). Built for gamer tags, RPG characters, and Discord servers that lean fantasy. The dedup rule prevents the same word from appearing twice in one handle.

Pattern D, Tech handle. cyber_ghost_42. Two words from a tech-flavoured bank (cyber, ghost, proxy, kernel, daemon, cipher, lambda, sigma) joined by an underscore, dot, or dash, ending in a small numeric or alphanum suffix. Built for developer accounts, GitHub-style profiles, and IRC handles where a tech-flavoured identifier is in keeping with the community.

You can mix patterns in a single workflow: generate a batch of Pattern A for everyday accounts, then switch to Pattern B for a Discord handle, then Pattern D for a GitHub profile. Each pattern is a deterministic recipe, the only randomness is the word picks and the digit or alphanum rolls.

Tips for Picking a Unique Username

A generated handle is unique by construction within a batch, but uniqueness on the open internet depends on whether the name has already been claimed. The following practices close the gap between "unique in this batch" and "unique on the platform you care about".

Search the platform first. Even a low-collision pattern produces a name someone else might already hold. Run a search on Twitter, Reddit, GitHub, and the specific game or service you intend to use before committing. A two-minute search beats a regretted year-long rebrand.

Lean on the separator. Switching from a dash to an underscore or a dot often turns a taken name into an available one without losing any readability. The same trick works with the "none" separator for platforms that only allow letters and digits.

Vary the length. Many platforms have a 3-character minimum and a 15-20 character maximum. The minimum-length slider lets you target the maximum so the generator fills the slot. A platform that accepts 15 characters will not reject a 14-character handle, but a 16-character handle on a 15-character-max platform will fail at signup.

Avoid pure numbers. A handle like 4521 is harder to remember than swift-tiger-4521. The word prefix gives the brain a hook, so the memory load falls on the words rather than the digits.

Test pronunciation. Say the handle out loud. If you stumble, your friends will stumble too. Pattern B phrases are the most speakable because the capitalised boundary marks each word; Pattern A is the most typeable because every word is lowercase and short.

Keep a shortlist. Generate a batch of 10, copy the ones you like into a notes file, then commit to one. The copy-all button writes the whole batch to the clipboard with one newline per name, so the shortlist can be built in seconds.

Think about future-account-migration. Some platforms let you change your handle once. After that lock, you are stuck. Generate a long batch and stress-test the handles against the platform's rules before committing.

Check trademark and impersonation. A handle that contains a brand name or a celebrity's name can be reported and reclaimed. Stick to the selected word banks, every word in this tool is generic English or a fantasy archetype, so trademark collisions are rare.

Worked Examples

Example 1, A gamer tag for Steam. Use Pattern C with a dash separator and a count of 10. Generate. Each output is something like dragon-viking-rune, samurai-paladin-cloak, wizard-ninja-mace. Pick the one that feels right, then check Steam's available-name search. If the first pick is taken, switch to a dot or underscore separator and re-roll.

Example 2, A Discord handle. Use Pattern B (phrase + dice) with a dash separator, a count of 10, and a minimum length of 14. The dice suffix makes the handle unique enough to clear Discord's collision check on the first roll.

Example 3, A GitHub profile for a developer. Use Pattern D (tech handle) with an underscore separator, a count of 5, and a minimum length of 12. The two-word tech prefix plus a 2-digit suffix lands in the sweet spot for GitHub: short enough to read in commit logs, distinct enough to be unique.

Example 4, A throwaway newsletter account. Use Pattern A with a dot separator and a count of 1. The dot fits email-alias conventions. Don't use the output for anything that holds personal data, a throwaway account should be disposable.

Example 5, A batch for a small team. Use Pattern A or Pattern D with a count of 10 to 15. The generator's per-batch dedup guarantees every handle is unique within the batch, so a team of 10 can pick 10 handles without overlap.

Where It Shows Up

The four patterns are deliberately broad. Pattern A is the default everyday choice for most social-media accounts, email aliases, and casual registrations. Pattern B is the most memorable for a name you want to say aloud in a meeting or in a Discord voice channel. Pattern C suits fantasy and RPG communities (Discord servers, Pathfinder, D&D, World of Warcraft guilds, custom MMO guilds). Pattern D suits developer and tech communities (GitHub, GitLab, Stack Overflow, IRC, Matrix rooms, custom home labs).

You can also use the same generator for non-username needs: project code names (Pattern C or D), blog post slugs (Pattern A with a dot separator), short-lived asset tags (Pattern D with a numeric suffix), and personal-domain candidates (any pattern, then verify availability with a registrar).

Common Mistakes

Using a generator output as a password. This is the most common mistake. Math.random() is fine for aesthetic uniqueness but is not cryptographically secure. Anyone who can predict your generator's internal state could reproduce your output. For password material, use the Password Generator or the JWT Secret Generator, which both call crypto.getRandomValues().

Including personal data. Never seed a username with your birth year, your real name, or your phone number. Pattern A's 2-4 digit suffix is decorative; it should not encode anything real. A birthday in a handle is a free clue for an attacker.

Locking in a pattern you can never re-roll. Some platforms let you change your handle once. After that lock, you are stuck. Generate a long batch and stress-test the handles against the platform's rules before committing.

Forgetting character-class restrictions. Some services only allow letters and digits (no separators). Some disallow leading digits. The "none" separator option plus a max-length cap is usually the safest combination for restrictive platforms.

Trusting first-pass uniqueness. This generator deduplicates within a batch of 25, but it cannot check whether a name is already taken on a remote platform. Always verify on the platform itself, ideally in a private or incognito window so the search is not biased by your personal history.

Ignoring case folding. Some platforms fold SwiftTiger and swifttiger to the same handle. Pattern B output uses capitals by design; if a platform case-folds, the capital letters become decorative rather than discriminative.

Going too long. A 30-character handle is harder to type and harder to recognise. The 15-20 character range covers the sweet spot for almost every platform.

Sharing the seed. If you copy a generator output into a chat, the handle is no longer private. Treat chosen handles the same way you treat passwords once committed: do not share them in screenshots, emails, or screenshots of chats.

Frequently Asked Questions

What is a username generator? A username generator assembles memorable, typeable identifiers from a selected word bank and a small random roll. The output is for everyday identity, gamer tags, social handles, developer profiles, not for security-sensitive material like passwords or API keys. This tool runs four patterns (word + digits, phrase + dice, fantasy, tech handle) and lets you pick a separator, a minimum length, and a batch size from 1 to 25.

Are the usernames generated here truly unique? Within a batch, yes. The generator rolls each candidate through a Set and re-rolls any duplicate, so 25 outputs are always 25 distinct strings. Across batches, the probability of collision is the classic birthday-paradox: with a 6,400-word bank and a 25-item batch, the expected collision probability is roughly 5%. Across the open internet, "unique" depends on whether the name is already taken on a remote platform, always verify before committing.

Can I use these outputs as passwords? No. The tool uses Math.random(), which is not cryptographically secure. For password material, use the Password Generator or the JWT Secret Generator, which both call crypto.getRandomValues() and produce 128+ bits of entropy as a baseline.

Which pattern should I pick? Pattern A (word + digits) is the everyday default for most social-media accounts. Pattern B (phrase + dice) is the most memorable for gamer tags and Discord handles. Pattern C (fantasy) is built for RPG communities. Pattern D (tech handle) is built for developer profiles. The right choice depends on the platform's culture and the platform's character-class rules.

Does the tool support non-English words? The current word banks are English-only. The customisation hooks (pattern, separator, length, count) are language-agnostic, but the word dictionaries would need to be expanded for non-English output. The EFF wordlists also publish a small number of multilingual variants, see https://www.eff.org/dice for the original.

How long should my username be? The sweet spot for most platforms is 12 to 18 characters. Below 8, the name becomes hard to read; above 20, it becomes hard to type. The minimum-length slider on this tool covers 4 to 20 characters, which brackets the practical range.

Where do the word lists come from? The adjective, noun, fantasy, and tech banks are selected lists inspired by the EFF "long" wordlist (a 7,776-word Diceware-style list maintained by the Electronic Frontier Foundation at https://www.eff.org/dice) and the original Diceware method by Arnold Reinhold. The banks are trimmed for tone and memorability, not for security.

Does the generator track or store what I generate? No. Everything runs in the browser. There are no network calls to https://solved.tools or any third party during generation. You can verify this by opening DevTools โ†’ Network before clicking Generate. The output never leaves the page.

Can I save a generator configuration for later? Not in this version. The pattern, separator, length, and count are session-only state. If you want a reproducible batch, use the browser's print-to-PDF or copy the generated batch into a notes file.

Why is Pattern B's output so long? Pattern B concatenates 3 or 4 words capitalised, then appends a 3-4 character dice suffix. The minimum length is around 12 characters and the maximum around 30. The longer length is the price of memorability, the phrase can be read aloud, which is exactly what makes it stick.

Is the generation repeatable? Not with Math.random(). For a reproducible batch, you would need a seeded PRNG (like srand(42)), which this tool does not expose. If reproducibility matters, copy the generated batch into a notes file as soon as it appears.

Does the tool work offline? Yes. Once the page has loaded, the generator runs entirely in JavaScript in the browser. There is no required network call during generation. The cached HTML, CSS, and JS are sufficient to produce a complete batch.

References

  • EFF wordlists, the "long" Diceware-style list of 7,776 memorable English words, maintained by the Electronic Frontier Foundation. Source: https://www.eff.org/dice.
  • Diceware, Arnold Reinhold's passphrase-generation method, the original inspiration for the EFF wordlists. Source: Diceware (Wikipedia).
  • RFC 8265, Preparation, Enforcement, and Comparison of Internationalized Strings Representing Usernames and Passwords, the IETF document covering username comparison and case folding.
  • NIST SP 800-63B, Digital Identity Guidelines: Authentication and Lifecycle Management, covers memorised secrets, useful background for any username or password policy.
  • OWASP Authentication Cheat Sheet, operational guidance on username and password handling, including case-folding rules and rate-limit recommendations.

The formula: word-bank assembly recipe

Each pattern is a fixed recipe with a few random rolls. Pattern A picks one adjective and one noun from the banks and appends 2 to 4 random digits. Pattern B picks three or four words, capitalises each, concatenates them, and appends a 3 or 4 character dice-style suffix. Pattern C picks three words from the fantasy bank without repeating, and Pattern D picks two words from the tech bank plus a short numeric or alphanumeric suffix. The generator rolls from the selected banks using the platform's random source, pads short results to the minimum length you set, and deduplicates within the batch. The full word lists and the Diceware method behind them are in the References section.