Logo

MonoCalc

/

Username Format Validator

Social Media
Type the username you are thinking of using. A leading @ is removed for you.

Platforms to check

Results

Format only — not availability
This checks the shape of the username against each platform's published format rules. It cannot tell you whether the username is already taken — that requires signing in to the platform and searching.

Enter a username above and each platform's verdict will appear here. The rules themselves are listed further down.

The rules, and where they come from

Each rule below was read from that platform's own documentation domain on the date shown, rather than from third-party articles. Direct access to the help pages was blocked from the environment this tool was built in, so the rules were read from search extracts of those same pages — follow the source link to confirm anything you are about to act on.

X (Twitter)

5–15 characters

Letters (A–Z), numbers (0–9) and underscores. No spaces.

Documented as restricted: admin. No platform publishes a complete list.

The source gives the minimum as “more than 4 characters”, so 5 is the shortest a new username can be — handles registered under older rules can be shorter and are still perfectly valid. The same page says usernames containing “X” or “Admin” cannot be claimed, to avoid brand confusion. Only “admin” is matched here: testing for the single letter “x” would flag almost every username, and the page does not say whether it means the standalone word or any occurrence.

Platform source — read 2026-09-17

Instagram

No documented length limit

Letters (A–Z), numbers, periods and underscores.

Instagram's page names the punctuation you may add — periods and underscores — alongside letters and numbers, but it does not enumerate the full character set and does not say whether letters outside A–Z are accepted, so this check applies the Latin letters-and-digits shape and an accented letter is reported as disallowed. Instagram also publishes no minimum or maximum length, so no length is checked: the 30-character figure repeated across third-party articles is not in Instagram's own documentation and is deliberately not applied.

Platform source — read 2026-09-17

TikTok

2–24 characters

Letters (A–Z), numbers, underscores and periods.

A TikTok username cannot end with a period.

Platform source — read 2026-09-17

GitHub

1–39 characters

Letters (A–Z), numbers and hyphens.

A GitHub username cannot start with a hyphen.

A GitHub username cannot end with a hyphen.

A GitHub username cannot contain two consecutive hyphens.

GitHub sets out these format rules on its page about username normalisation for external authentication, which is where the 39-character limit and the hyphen rules are stated. GitHub publishes no minimum length, so none is checked. That page also notes the limit drops to 30 characters on Enterprise Cloud with data residency, which this check does not model.

Platform source — read 2026-09-17

YouTube handle

3–30 characters

Letters, numbers, underscores, hyphens, periods and Latin middle dots — but not at the start or end.

A YouTube handle cannot start with an underscore, hyphen, period or middle dot.

A YouTube handle cannot end with an underscore, hyphen, period or middle dot.

The 3–30 range is the general rule. YouTube documents different limits for some scripts — Han and Hangul handles are 1–10 characters, Ethiopic, Hiragana and Katakana handles are 2–20, and mixed-script handles can differ again — so the length verdict here applies to Latin-script handles.

Platform source — read 2026-09-17

Discord

2–32 characters

Latin letters, numbers, underscores and periods. Capitals are accepted and folded to lowercase.

A Discord username cannot contain two consecutive periods.

Discord usernames are case-insensitive and stored in lowercase, so capitals you type are folded down rather than rejected. This is the current username system, not the older name-plus-discriminator one.

Platform source — read 2026-09-17

Telegram

5 characters minimum, no documented maximum

Letters (a–z, case-insensitive), numbers (0–9) and underscores.

Telegram's own apps state the character set and the five-character minimum. No maximum is published, so none is checked — the 32-character figure quoted elsewhere could not be confirmed. The rule that a username must begin with a letter is widely repeated but likewise absent from Telegram's documentation, so it is not enforced here either.

Platform source — read 2026-09-17

Platforms this tool does not check

A rule that could not be read from the platform's own documentation was left out rather than guessed, because a wrong rule is worse than a missing one.

Reddit: Reddit's help centre does not publish a username length or character rule that could be read, so no Reddit rule ships at all rather than a guessed one.

Twitch: Twitch documents a 4–25 character length but not which characters are allowed. Without the character rule, a “valid format” verdict would be misleading, so Twitch is left out.

Bluesky: Bluesky handles are domain names rather than a character-class username, so they need a DNS-label rule of their own instead of being forced into this table.

About This Tool

Username Format Validator – check a handle against platform rules

Every platform publishes its own idea of what a username may look like, and none of them agree. One allows hyphens, another rejects them. One stops at 15 characters, another at 39. One quietly folds your capitals to lowercase, another treats a trailing period as a hard error. This username format validator takes a single candidate handle and reads it through each platform's published rules at once, so you can see where the same string passes and where it does not — and, more usefully, exactly which character caused the failure.

Format is not availability
This tool checks the shape of a username. It cannot tell you whether somebody already has it. Availability lives on each platform's servers and the only way to find out is to sign in and search.

What the checker actually does

Your input is tidied before anything is measured. Surrounding spaces go, a leading @ is dropped, and the result is normalised to Unicode NFC. That last step matters more than it sounds: an accented letter such as é can be stored either as one character or as a plain e followed by a combining acute accent. The two look identical on screen but are different strings to a regular expression and different lengths to a naive counter. Normalising first means a name you typed and the same name you pasted give the same verdict, and the tool tells you when normalisation changed something.

Each platform rule is then applied in three parts: a length range, a character pattern, and any structural rules a pattern cannot express. That third category is where most surprises live — GitHub rejecting two consecutive hyphens, TikTok rejecting a trailing period, YouTube rejecting punctuation at either end. A failure is always reported with the offending character and its position rather than a bare “invalid”.

Counting characters the way a reader does

Lengths here are grapheme clusters, measured with Intl.Segmenter under a pinned locale. A family emoji is one character to a reader, seven code points, and eleven to JavaScript's String.length. Using the wrong one is how a field that looked fine overflows on submission. Case folding is pinned too: under a Turkish locale an ordinary lowercase operation turns I into a dotless ı, which would fail an ASCII-only username that is perfectly valid everywhere else in the world.

The character map

Under the input, the candidate is drawn one cell per character, with the character above and its U+XXXX code point below. Cells are coloured against whichever platform you have focused: allowed, disallowed, allowed but illegal in that position, or flagged as a look-alike. Switching the focused platform recolours the same string without changing it, which is the whole point — one name, re-read through a different rule set. Clicking a flagged cell jumps to the message explaining it.

Look-alike characters

A Cyrillic а and a Latin a are different code points that render identically in most fonts. If your candidate mixes scripts, the tool names the character and its code point as a warning. It is never a pass or fail on its own and never an accusation: plenty of people legitimately write their name in their own script. It simply means you may not be able to retype what you just pasted. The check covers mixed scripts and fullwidth forms, not every possible look-alike pair.

Where the rules come from

Username rules are widely misreported. Each rule here was read from that platform's own documentation domain and carries a source link and the date it was read, so any verdict can be checked in one click. Platforms that do not publish a complete rule were left out rather than filled in from third-party articles — Reddit publishes no username length or character rule at all, and Twitch publishes a length but not a character set.

Missing limits are shown as missing
Instagram and Telegram ship with no maximum length. The figures repeated everywhere else are not in either platform's own documentation, and a guessed limit would reject usernames that are perfectly fine.

Privacy and export

Everything runs in your browser. The username is never transmitted, and the page makes no network request of any kind. The only thing stored is which platform toggles you switched on, kept in local storage so the page remembers them. You can copy a plain-text report or export a CSV; cells that begin with a character a spreadsheet would treat as a formula are escaped first, so a name like =cmd stays text when the file is opened.

Frequently Asked Questions

Is the Username Format Validator free?

Yes, Username Format Validator is totally free :)

Can I use the Username Format Validator offline?

Yes, you can install the webapp as PWA.

Is it safe to use Username Format Validator?

Yes, any data related to Username Format Validator only stored in your browser (if storage required). You can simply clear browser cache to clear all the stored data. We do not store any data on server.

Does this tell me whether a username is available?

No, and it cannot. Availability lives on each platform's servers, and finding out needs a request to them — this page is a static file that makes no network request of any kind, so there is nothing it could ask. What it does instead is compare the string you typed against each platform's published format rules and tell you whether it is even a shape that platform would accept. A username can pass every check here and still be registered by somebody else; the only way to know is to sign in to the platform and search.

How does the validator work?

Your input is trimmed, a leading @ is dropped, and the result is normalised to Unicode NFC so that an accented letter typed one way and pasted another give the same verdict. That string is then run against each platform's rule: a length range, a character pattern, and any structural rules a pattern cannot express, such as GitHub rejecting two consecutive hyphens or TikTok rejecting a trailing period. Every failure is reported with the character and position that caused it rather than a bare invalid, and the character map under the input colours each character against whichever platform you have focused.

Where do the platform rules come from?

Each rule was read from that platform's own documentation domain and ships with a source link and the date it was read, so you can check any verdict in one click. Platforms that do not publish a complete rule were left out rather than filled in from third-party articles: Reddit publishes no username length or character rule, and Twitch publishes a length but not a character set, so neither appears. For the same reason Instagram and Telegram ship with no maximum length — the figures widely repeated elsewhere are not in either platform's own documentation, and a guessed limit would fail usernames that are perfectly fine.

Why does it count emoji and accents differently from my editor?

Because it counts what a reader sees. Lengths here are grapheme clusters measured with Intl.Segmenter under a pinned locale, so a family emoji is one character rather than the eleven that JavaScript's String.length reports, and a letter with a combining accent is one character rather than two. Case folding is pinned to en-US for the same reason: under a Turkish locale the ordinary lowercase operation turns I into a dotless i, which would fail an ASCII-only username that is actually valid everywhere.

What does the mixed-script warning mean?

It means your username contains letters from more than one writing system — most often a Cyrillic or Greek character sitting among Latin ones, which can look identical on screen but is a different code point entirely. That is worth knowing before you register something you may not be able to retype, so the tool names the character and its code point. It is only ever a warning: mixed scripts are not invalid, plenty of people legitimately write their name in their own script, and the warning never changes a platform verdict. The check covers mixed scripts and fullwidth forms, not every possible look-alike pair.

Is anything I type sent anywhere or saved?

The username is never sent anywhere — all checking happens in your browser, and the page has no server to talk to. The only thing stored is which platform toggles you switched on, kept in this browser's local storage so the page remembers your selection next time; that is wrapped so a browser blocking site data simply starts with all platforms on. The copy and CSV exports are generated locally, and CSV cells that begin with a character a spreadsheet would treat as a formula are escaped before export.