DEV Community

Cover image for Why Reusing the Same Username Everywhere Is a Privacy Risk
SAAZone Studio
SAAZone Studio

Posted on

Why Reusing the Same Username Everywhere Is a Privacy Risk

Why Reusing the Same Username Everywhere Is a Privacy Risk

You've probably had the same username for years.

Your gaming account.
Your Reddit account.
Your Steam profile.
An old forum account you forgot existed.

Same username everywhere.

It's convenient. It's easy to remember.

But there's a privacy problem with that convenience:

A unique username can become a link between your different online identities.

Someone doesn't necessarily need to hack anything to discover that two accounts belong to the same person.

Sometimes, they just need to search for the same username.

The account-linking problem

Imagine you use silentfox everywhere.

Someone finds your old forum account.

They search silentfox.

They find a gaming profile.

Then a Reddit account.

Then a GitHub profile.

One account mentions a city.

Another contains an old photo.

Another lists a programming project.

None of those pieces of information had to be secret individually.

But once the accounts are linked together, they can reveal much more than each account revealed by itself.

Researchers have studied exactly this problem: whether the same username can be used to identify and link a person across different online communities. Studies have found that username similarity or reuse can make cross-platform profile linking possible.

That's the important distinction:

The username itself may not contain personal information, but its reuse can create a connection between pieces of personal information.

NIST makes a similar distinction in its digital identity guidance: a username can be personally identifiable information when it links back to a specific person, while an arbitrary or opaque identifier may not be.

It's not the same as getting hacked

This is worth clarifying.

If someone finds the same username on five websites, they haven't necessarily compromised any of your accounts.

They may simply have discovered that the accounts are probably connected.

That's a privacy and identity-correlation problem, not automatically an account takeover.

The distinction matters because there are actually two different risks people often mix together.

Username reuse

The same username can make it easier to correlate profiles across websites.

An attacker might use public information from multiple accounts to build a more complete picture of someone's online activity.

Credential reuse

This is more directly related to account compromise.

If you reuse the same username/email and password across websites, a breach at one service can provide credentials that attackers may try elsewhere.

This is known as credential stuffing.

OWASP specifically identifies reuse of usernames and passwords as a factor that can make credential-stuffing attacks effective.

So:

Username reuse can hurt privacy.

Password reuse can hurt account security.

Using both together can create both problems at once.

Why a username can reveal more than you think

Let's say someone discovers your username on an old forum.

The username itself might tell them almost nothing.

But they search for that same username on other services.

Now they find:

Forum
  ↓
Gaming profile
  ↓
Reddit account
  ↓
GitHub profile
  ↓
Personal website
Enter fullscreen mode Exit fullscreen mode

Each profile contributes another piece of information.

Maybe one has your interests.

Another has your approximate location.

Another has your programming projects.

Another has a photo.

Another contains an old post that mentions your school or workplace.

The individual pieces may seem harmless.

The connection between them is what creates the bigger privacy issue.

This is why pseudonyms work best when they actually separate identities.

A different username alone isn't a perfect privacy solution, of course. Writing style, profile photos, email addresses, links, usernames that are only slightly modified, and other clues can still connect accounts.

But removing an obvious common identifier is one useful step.

What I built

While working on EvoTechTool, I wanted to make a simple tool for exactly this use case.

So I built a username generator that creates new, memorable usernames without requiring a server.

The core idea is simple:

const adjectives = [
  'silent',
  'swift',
  'quiet',
  'brave'
];

const nouns = [
  'fox',
  'raven',
  'wolf',
  'cedar'
];

function generate(pattern) {
  const adj = adjectives[randomInt(adjectives.length)];
  const noun = nouns[randomInt(nouns.length)];
  const num = randomInt(9999);

  switch (pattern) {
    case 'adj-noun':
      return `${adj}${noun}`;

    case 'adj-noun-num':
      return `${adj}${noun}${num}`;

    default:
      return `${adj}-${noun}`;
  }
}
Enter fullscreen mode Exit fullscreen mode

The actual implementation uses larger word lists, but the basic concept is the same.

Instead of asking a server to generate a username, the browser selects words locally.

The generator supports multiple patterns

The tool currently supports patterns such as:

  1. Adjective + nounsilentfox
  2. Adjective + noun + numbersilentfox42
  3. Verb + nounchasefox
  4. Verb + adjective + nounchasequietfox
  5. Noun + nounfoxcedar
  6. Adjective + adjective + nounsilentbravefox

You can also customize things like separators and capitalization.

The goal isn't to generate completely random strings like:

x7Qp9L2mK8
Enter fullscreen mode Exit fullscreen mode

Those are great for passwords.

They're not particularly memorable as usernames.

Instead, the generator combines words so the result is easier to recognize and remember while still giving you many possible combinations.

Why generate usernames locally?

There's a privacy benefit to keeping the generation local.

The generator doesn't need to send your generated usernames to a server.

The browser can select the words, construct the username, and display the result entirely on the client.

That means there's no username-generation database collecting the usernames you've generated.

And you can verify the behavior yourself.

Open DevTools.

Go to the Network tab.

Generate a few usernames.

The generation itself doesn't require a request to a username-generation API.

That's the same design principle I used for the password generator: if a tool doesn't need a server to perform its core function, why add one?

But don't overdo anonymity

There's an important balance here.

I don't think everyone should have a completely different identity on every website.

If you're building a professional identity, consistency can be useful.

For example, you may deliberately want the same username on:

  • GitHub
  • Your portfolio
  • LinkedIn
  • Your developer blog

In that situation, being discoverable is part of the goal.

The problem is using that same identity everywhere, including places where you don't necessarily want your professional or personal profiles connected.

That's where separating identities becomes useful.

A simple system for usernames

You don't need 50 completely random identities.

You can divide your online accounts into a few categories.

Public / professional

Use a consistent username.

Examples:

  • GitHub
  • Portfolio
  • Developer communities
  • Professional social accounts

The goal here is discoverability.

Personal

Use a separate identity.

Examples:

  • Personal forums
  • Gaming
  • Hobby communities

The goal is to participate without automatically connecting everything to your professional identity.

Temporary / low-trust

Use another generated username.

Examples:

  • Forums you don't plan to use long-term
  • Sites where you don't want your normal username exposed
  • Temporary communities

The goal is simply to avoid unnecessarily connecting the account to your other identities.

Don't just change one character

This is a surprisingly common mistake.

If your normal username is:

silentfox
Enter fullscreen mode Exit fullscreen mode

changing it to:

silentfox2
Enter fullscreen mode Exit fullscreen mode

doesn't accomplish much.

Neither does:

silent_fox
Enter fullscreen mode Exit fullscreen mode

or:

silentfox123
Enter fullscreen mode Exit fullscreen mode

If someone is specifically looking for connections between your accounts, obvious variations can be easy to associate.

A genuinely different username creates a much stronger separation than changing a number at the end.

A username isn't a security credential

There's another important distinction.

A username generally isn't a secret.

Your password is.

So changing your username does not replace basic account security.

You should still:

  • Use a unique password for every account
  • Use a password manager
  • Enable MFA where available
  • Consider passkeys when supported
  • Avoid using personal information in usernames when privacy matters

NIST currently recommends measures such as MFA, passkeys, and password managers as important ways to protect online accounts.

Username separation is about privacy and correlation, not about replacing authentication security.

Try it

I built the username generator as part of EvoTechTool, a collection of browser-based tools focused on being free, private, and requiring no signup.

Username Generator:

https://evotechtool.pages.dev/username-generator.html

Everything needed to generate the username runs in your browser.

No account.

No username-generation server.

No database of the usernames you generate.

The idea behind the tool is pretty simple:

Sometimes the easiest way to protect the connection between two identities is not to create the connection in the first place.

If you're interested in online privacy, try searching one of your old usernames across the websites you used years ago.

You might be surprised by how many pieces of your online history are still connected by the same name.

Do you use the same username everywhere, or do you separate your online identities?

Top comments (0)