About this username generator
A small, dependency-free tool for one job: turning a style, an optional keyword, and a couple of toggles into a batch of handle ideas — built entirely on your device, with no lookup against any platform.
Why it exists
Picking a username is a small decision that a surprising number of people get stuck on — the field sits empty while you try to think of something that isn't already taken, isn't embarrassing, and still feels like "you". A generator can't answer the identity question, but it can give you ten concrete starting points to react to in one click, which is usually enough to unblock the actual choice.
How a handle is assembled
Nothing here is pulled from a pre-written list of finished usernames. Each handle is built fresh from smaller pieces:
- A style is resolved — either the one you picked, or (for Random) one rolled fresh for this specific handle from the five concrete styles.
- Your keyword, if you typed one, is stripped of anything but letters and digits, capped at 16 characters, and screened against a short banned-word list. If it passes, it is guaranteed to appear in the output as one of the two parts — it is never silently swapped out for a word-bank term instead.
- The other part comes from that style's own adjective or noun bank, so a Funny handle can't accidentally borrow a Professional-sounding word.
- Casing is applied per style: Aesthetic stays lowercase throughout, Professional lowercases everything for an email-style feel, and the rest capitalise each word.
- If numbers are switched on and the style is Gamer or Cool, one word (never the one carrying your keyword) may get a light letter-to-digit substitution, and a short numeric suffix may be appended. If numbers are switched off, every digit is stripped from the final string — including any digit you typed into the keyword field.
- The parts are joined with your chosen separator and the result is cut to your max-length setting if it runs long.
- The finished string is screened once more against the banned-word list as a defence-in-depth check, even though the word banks themselves are hand-picked to be clean.
The banned-word screen, honestly described
The screen is a short, hand-maintained list of substrings checked case-insensitively against your keyword and against the finished handle. It is deliberately described as "quick" rather than "comprehensive": it catches the common, obvious cases, but a determined user typing an unusual spelling or a combination the list doesn't anticipate could still get past it. This is a safety net for accidental output, not a moderation system, and it is not a substitute for a platform's own username policy enforcement.
What was verified before shipping
The word-combination logic runs under Node via the module's own test hatch, independent of any browser. The checks that matter most:
- Max length is respected across every style, separator, and numbers setting, at length settings from 8 to 32.
- "No numbers" produces zero digits — checked over hundreds of generations per style, including cases where the keyword itself contained a digit.
- The underscore separator actually joins with "_", and "none" never introduces a separator character.
- A supplied keyword always appears in the output in some form, across every style and every numbers/separator combination — including confirming that the leetspeak flavour pass never mutates the part carrying the keyword.
- Output is always non-empty and passes the banned-word screen, fuzz-tested across thousands of random combinations of style, keyword, numbers, separator, and max length.
How the site is built
- Static HTML, one small stylesheet, two small scripts. No framework, no build step, no bundler.
- Nothing is fetched from the network to build a handle. No CDN framework, no web font, no remote image; the favicon is an inline SVG data URI. Once the page has loaded, generation keeps working offline.
- System font stack, so nothing has to download and nothing shifts as the page loads.
- What you type never leaves your device. There is no server call behind the Generate button — everything happens in your browser's own JavaScript.
- Dark mode follows your system setting via
prefers-color-scheme.
Scope and honesty about limits
This is a generator, not a directory or a registry lookup. It has no connection to Discord, Steam, any game platform, or any social network, and it makes no attempt to determine whether a given handle is free anywhere. The word banks are finite, so given enough repeated clicks the same pairing can recur, especially at short max-length settings. The banned-word screen is quick by design, not exhaustive. None of this is a substitute for checking a handle directly on the platform you intend to use it on.