How GitHub Usernames Work
Your GitHub username is your profile address (github.com/yourname) and the owner name in every repository you create (github.com/yourname/project). It is on every issue you open and every pull request you review, and if you publish a GitHub Pages user site, it sits in that address too (yourname.github.io).
GitHub username rules at a glance
- Length
1-39 characters
- Characters
Letters, numbers, hyphens (-) - no leading, trailing, or consecutive hyphens
- Profile text
bio up to 160
- Cannot begin or end with a hyphen
- Cannot contain consecutive hyphens
- Users and organizations share one namespace
GitHub publishes no minimum length, so the table’s lower bound only means we don’t reject short names. The character rules come from GitHub’s enterprise documentation; GitHub doesn’t publish a separate rules page for personal accounts. A hyphen is the only separator GitHub allows, which matters if you want one name everywhere: of the other platforms we check, Instagram, Kick, Pinterest, Roblox, Telegram, Threads, TikTok, Twitch, and X (Twitter) don't accept a hyphen, so a name with no separator at all is the safest match.
What a Taken GitHub Username Can Mean
Taken means a user or an organization holds the name. Because both kinds of account share one namespace, either one blocks it. The account behind it may be:
- Active. Pick a variation or an organization name (below).
- Quiet or apparently abandoned. GitHub does not accept requests to release, transfer or reclaim a username on the basis that it appears inactive or unused. Valid trademark complaints are the only requests it reviews.
- Squatting. GitHub’s username policy prohibits name squatting, and accounts that break it “may be removed or renamed without notice.” That is GitHub’s decision, not a request you can file.
Names come back when an owner renames or deletes an account, or when GitHub acts on a squatting or trademark case. A renamed-away username becomes available for anyone to claim, and a deleted personal account’s username after 90 days. A watch checks the name for you and alerts you when it is available; start one from the result above.
Renaming Your GitHub Account
- Your old username becomes claimable. GitHub says it “becomes available for anyone else to claim” and doesn’t say how soon.
- Repositories redirect, your profile doesn’t. Links to your repositories redirect to the new name, but links to your old profile page return a 404.
- Popular repository addresses are retired. For popular namespaces, GitHub permanently retires the old owner and repository name combination (
OLD-OWNER/REPOSITORY-NAME), so those exact addresses can’t be reused.
Twitch makes an abandoned name wait (it returns after 180+ days) and YouTube holds an old handle before releasing it (after 14 days). GitHub publishes no hold: its docs say only that your old username "becomes available for anyone else to claim." X (Twitter) goes a step further and says outright that a changed-away handle is free immediately. Before a rename, claim your new name on your other platforms and update your links, because someone could register the old name and anyone following an old profile link would land on their account.
Personal Accounts vs. Organizations on GitHub
GitHub keeps a single namespace shared by personal accounts and organizations. If @freshbakes exists as a personal account, nobody can create an organization named freshbakes, and vice versa. The two account types compete for the same pool of names, and a deleted organization’s name stays unavailable to either kind of account for 90 days.
For brands and teams, the implication is simple: if you want repositories and packages to live under your brand name on GitHub, claim that name (as a personal account or an organization) while it is still open. Many teams keep both: a personal account (github.com/yourbrand-dev) and an organization (github.com/yourbrand) that separates individual work from official project repositories.
GitHub Username Conventions That Age Well
Most engineers treat their GitHub username as a long-term identity decision. Here is what works:
- Match your other developer-facing handles. If you’re
@freshbakeson Twitter (now X), npm and your blog, beinggithub.com/freshbakesreinforces one identity. Check them together with the username availability checker. - Skip the underscore reflex. Many developers type
fresh_bakesout of habit, but GitHub doesn’t allow underscores. Use a hyphen, or no separator if you also want the name on platforms that reject hyphens. - Avoid names you’ll outgrow. Names tied to a current project (
react-fresh,nextjs-bakes) age poorly when your interests shift. Generic personal handles age better than role-specific ones. - Reserve a matching org name. When you’re ready, create an organization with a related name, like
freshbakes-labsorfreshbakes-team, so a project that outgrows your personal namespace has somewhere to go.