So, you want to change your username to something new. Should an application allow you to do this?

Let's say that you have a unique URL that points to your profile. Let's assume it is human readable like /site.com/joesoap/. This makes the SEO gods smile. If you change it to josephsoap all the old links won't work any more (e.g. twitter). That makes the UX gods cry. We could keep a redirect on the old URL and forward to the new one. We then sit with the problem of people clogging up all the nice names with redirects. That makes all the future customers cry.

There are three options here:

  1. One is to make the URL something like /site.com/73622/joesoap/ where 73622 is your userID which never changes (e.g. like ux.stackexchange.com does). Not as pretty but then it's simple to let you change your username as often as you like.

  2. The other is to simply not let you change your username (e.g. facebook).

  3. The one that I haven't thought of yet but which you will suggest thereby stunning us with your deep insight.

How would you do it and why?

  • 4
    On h2g2, people do care about their IDs. I'm U612575. The people with five-figure user numbers are proud of them. They're the ones who've been on the site for nine years or more.
    – TRiG
    Oct 4, 2011 at 15:33
  • 3
    I answered this question on StackOverflow in 2009: stackoverflow.com/questions/663520/… - might have some valuable feedback
    – Rahul
    Oct 4, 2011 at 15:36
  • 2
    #1 just makes sense, and IMO, it takes out the hassle of problems down the road, or even having to ask this question. I want my users to be able to change their username/display name/email without me having to worry about how rigid the system I built is and can't handle something that simple.
    – b01
    Oct 4, 2011 at 17:31
  • Look: people caring about their User IDs, right here on SE: chat.stackexchange.com/transcript/message/2089361#2089361
    – TRiG
    Oct 4, 2011 at 19:56
  • 1
    @TRiG on Slashdot someone paid thousands of dollars for a 2-or 3-digit UID (it was for a charity auction, but still shows it is considered valuable).
    – RoundTower
    Oct 4, 2011 at 20:00

11 Answers 11


Let them change their name. A woman getting married takes the last name of her husband (sometimes), and not allowing her to change her name at a website could translate into a poor experience for her.

I'm a big fan of option #1. I had to go look up my ID# here at the UX website to find I'm #5737. Out of sight, out of mind, in a good way. I don't know how "pretty" a url needs to be. It certainly can get ugly with long GUIDs, but a simple ID number squished after the site address seems very acceptable to me.

I don't think the SEO gods mind version #1 either.

  • Could you explain how you would do it.
    – JohnGB
    Oct 4, 2011 at 13:16
  • 9
    Normalize the users. On the backend, you have UserID 8765, UserName "Jane Doe". 8765 is the same user no matter if the UserName is "Jane Doe" or "Jane Smith". Same goes for Address, Credit Cards, Favorite Color... all tie to 8765. Not 'jdoe'.
    – WernerCD
    Oct 4, 2011 at 13:53
  • 4
    @WernerCD that's of course the only way to design a (working) database =p
    – Ben Brocka
    Oct 4, 2011 at 15:29
  • 1
    @WernerCD: Isn't that exactly what I suggested in option 1?
    – JohnGB
    Oct 4, 2011 at 20:28
  • 2
    @zzzzBov: I care. Also, the link may then point to a new user who has the old ones name. Not good.
    – JohnGB
    Oct 5, 2011 at 8:26

A solution to this some services have used is to have a separate username and display name. Your user name is your portal to the site; what you login as, what your URL is based on (usually), and sometimes how people find you.

Twitter is probably the most relevant solution, as they have good SEO but they do have a display name you can change. You can't change the name most users know you by, but if the user's real name changes the system works fine, and people can search for you by your real name (though your user name is much easier to find, especially in search).

Update: Apparently twitter does let you change your username and your URL, however your followers continue to follow you after the name change. Thanks to JohnGB and Daniel Newman for correcting me. I'm not sure I like Twitter's solution as much any more, but it allows the user the freedom.

Steam implements this such that your username is a secret you use to log in, and friends always find you by your display name--which can change at litterally any time. Personally I've found this extremely annoying as half of my friendslist changes names once a week. Steam lets you see all the names you've seen a friend use before, but still note that this can make it very difficult to know who is who if your users change their only display name often.

Skype has user names which you use to find people, and then display names within the application only. Skype calls this your "real name" but as you can change it at any time many people change it to their favorite movie character, 4chan meme, ect. This is an interesting set up as you can always find someone by their user name, but like with Steam I've often found it difficult to determine who the heck half the people in my friends list are without viewing their profile.

Steam and Skype may be less relevant to your site (I assume) than Twitter, but remember that URLs aren't the only things that change. It's important that Google can find Joe Soap, but it's arguably more important that Joe Soap's connections on your site can find the person they met as Joe Soap. Facebook has fairly nicely avoided this issue with their environment of "real names only" and rather aggressive application of that policy, but I wouldn't count on that to work on another site.

  • 4
    Not only does Twitter let you change your user name, but the corresponding URL changes as well. Ergo, if you're ABC on Twitter and you change your username to @DEF, your personal profile URL changes to twitter.com/DEF, and no redirect is put in place for twitter.com/ABC -- it just stops working. Oct 4, 2011 at 14:22
  • Oh and many people on facebook use a fake last name that just sounds similar in order to avoid being found by future employers and such. Oct 4, 2011 at 14:54
  • @JeroenEikhof true but Facebook still retains a fairly stable naming environment, accurate or not. Their fake-name hunting is harsh but not particularly accurate (see the case of Justin Bieber, the non celebrity they banned)
    – Ben Brocka
    Oct 4, 2011 at 20:05
  • @DanielNewman Thanks for letting me know, I thought I looked through all their options but I guess not.
    – Ben Brocka
    Oct 4, 2011 at 20:05
  • 1
    Obviously by requiring a full name and surname, you're going to lose users such as myself who are not okay with sharing these details to the world at large.
    – badp
    Oct 5, 2011 at 8:10

I just thought of an option 3, which comes in a few parts. I'm probably being excessively verbose, but I want to make sure I've covered every case :)

  1. Only allow name changes every so often (three months should be fine to accommodate real name changes like the Jane Smith/Jane Doe examples above).

  2. Maintain a columns in the database of the past, say... four name changes -- this would equate to a one year history of name changes -- as well as the date of the name change, so they can be cleaned up after their "expiration".

  3. When a user changes their name, their URL changes immediately. If no other user takes the old name, then the site visitor gets a "user not found" page, with a banner (as outlined in part 4) indicating the new location; if another user takes the old name at some point, then the site visitor gets that new user's page -- and here's where the all-important part 4 comes in:

  4. If a visitor accesses a URL that is referred to in a user's "past" names (via part 2), display an unobtrusive but noticeable banner across the top of the page that says "[user1's new display name] previously went by the name [user1's old display name] - were you trying to access their page instead?" with the new display name being a hyperlink of course to their new page. Since it would be possible for a username to go through a few hands before it expires from the original user's list, make sure to include functionality to display multiple people in this banner (i.e. [user1's new display name] and [user3's new display name] previously went by the name [user1/user3's old display name]").

  5. (optional) If the "previously used" name now belongs to someone else (user2), put a cookie on the visitor's computer when they visit that page -- if they leave the page without clicking through to user1's new name, increment a counter in the cookie (most likely done on the next visit to the page). If the counter reaches a certain number (3, for example) and the visitor never went to user1's page, then assume they really did want to view user2's page, and stop displaying the banner. If the visitor did click through, then reset the counter to zero. Of course, if the previously used name isn't currently in use there's no need for the cookie.

The overall idea is that people who were using the old link are given an opportunity to find and update their links to the new links, without clogging up the system with a redirect for every name ever used.

I might also suggest putting some sort of small "what's this?" link on the banner, which might create a small in-page popup via DHTML/CSS/JS, explaining your name usage policy, so if someone visits user2's page, they understand why they're getting a reference to user1's page and (if part 5 is implemented) are advised that the banner will eventually go away.

It would probably also be a good idea to implement something in your registration and name change systems that detects whether a requested username is currently on another user's "previously used" list, and give them a notice that they can take the name, but that visitors to their page will see the redirect banner for the next year (or however much longer the name will remain in the other user's previously used list). You should also advise users when they go to change their name that attempts to visit the old URL will no longer take a visitor to their page, but will offer the visitor a link to their page to help visitors find them.

  • I had the same idea, except that you'd probably want to add when the username changed in the banner, something like "As of 8th of August this year, this page now belongs to Gregory House instead of James Wilson. Please change your bookmark if you wish to visit James' page in the future." and have the banner expire after a few months. I'd be annoyed if my page on whatever site always would have a banner pointing to somebody else's page.
    – kba
    Oct 5, 2011 at 0:12
  • @KristianAntonsen: That's why I suggested having a "counter cookie" that tracks whether the visitor actually went to the old user's page -- if they don't do so within a few visits, assume they're intending to visit the new user's page and hide the banner. Also, I mentioned expiration of the "name history" in part 2 (so a page isn't forevermore cluttered with "previously used by" banners) ;)
    – Doktor J
    Oct 7, 2011 at 16:26
  • In case 3, instead of "page not found", I would show a link to the new page (just like in case 4), or simply a redirect (301). Oct 8, 2011 at 16:42
  • @PaŭloEbermann Sorry I wasn't clear; I meant a "page not found" error would come up, but would include a link to the user's new page. Personally I'd recommend against a 301 redirect, as it doesn't give visitors a chance to update their bookmarks (and they may not realize they need to do so). Edited as such :)
    – Doktor J
    Oct 9, 2011 at 5:25
  • I think the cookie idea could lead to scaling issues. What if your user visits many userpages in short succession? You could easily end up with a large amount of cookies per user. Each cookie you use gets sent along with every request to the server, which costs bandwidth to both you and your users, and can slow down the system considerably.
    – Nzall
    Aug 7, 2014 at 14:11

I have a Point 3 that is similar to the Point 1, but does not expose the ID of the user (which might give away some information).

Instead, I would simply assume that a given username is, at any point in time, held by a single person. Therefore, the url can simply embed the time (or rather, date):


Then it is just a matter of keeping a mapping <period of time> + <user name> <--> <user id> in the database somewhere, and it can be backed up by a policy to forbid frequent changes so the database does not get clogged.

Of course, I'd still encourage you to allow the displayed name to change as often as the user wishes. It's current to use short user names, but it does not mean I don't want my full name to be displayed.

And on a related note I would also encourage you NOT to use the user name as the login name (the secretly kept e-mail address does wonder as login name).


In short: It depends. Option One if it's a less formal/professional site, Option Two if more formal/professional oriented.

I like option one. The various user groups I've worked with pay little or no attention to the URL, so unless you know url construction is an issue to your specific user group, I'd go with this.

BUT, I have never worked on a site that permits changes to usernames. This is purely context-dependent. Changing usernames can impact how a site is perceived - especially trust and professionalism. It is something to evaluate before offering the ability to change.

  • This, except professional sites should have a method to change usernames that is available to system admins. Sometimes there are edge cases that require it... and a professional site should have some sort of support.
    – user606723
    Oct 4, 2011 at 20:22
  • You're right, user6. Admins should always have a method to get in there and make the change.
    – gef05
    Oct 4, 2011 at 22:48

Allow users to change their name, but only once every few months. When they do, the old username should be blocked for a few months as well, so nobody else could use it. When somebody visits a blocked page, a screen should inform the visitor that the user has changed her name, and people should update their bookmarks if they still wish to be able to visit the person's page in the future.

  • Quite reasonnable, however it still does not solve the issues of dead-links. Suppose for example that a blog article references this page, it's unlikely that the article will be updated, and so after a period of time the link will be dead. Oct 5, 2011 at 8:00

Allow name changes. Keep a redirect on the old URL and forward to the new one, until somebody else takes the name.

  • 2
    The problem with this is, people may still use the old URL (say janesmith) to reach user1's page for some time (even after the name change to janedoe), and then suddenly when user2 signs up and tries to select "janesmith", she gets it, and now suddenly people who'd been using user1's old link are seeing user2's content with no explanation as to why. I just thought of a possible idea for this though... see my answer...
    – Doktor J
    Oct 4, 2011 at 16:13

I don't see the harm in allowing username changes, but I am a firm believer that a user shouldn't be able to change their username more than once. A user can choose their initial username and then be given the chance to change it again, giving the user the option to change between their original or new name is an option I allow on all self-created projects that use public facing usernames.

The advantage of this approach is that if a user changes their username for whatever reason (bad reputation amongst the community, trolling) displaying undernearth their username when visible to the community a line that says "Formerly known as [old username here]" that way their identifiable by their new and old name still.

If they switch back to their old name, the line beneath would still show.

  • This is fine where everyone uses pseudonyms, but on a site where pseudonyms and real names are mixed, one might want to change from pseudonym to real name, and later change when the real name changes (for whatever reason - marriage might be the most popular one). Oct 8, 2011 at 16:48

If using username as part of url, don't allow the users to change their name. Otherwise you will have the dead link problem no matter how smart you do it (some of the answers here are quite good, but at one point, the old url will eventually be dead or wrong, and as one commented; links from blog posts will in most cases never be updated).

  • You can let the old usernames redirect to the current username, to avoid dead links.
    – KajMagnus
    Aug 16, 2014 at 11:35

Dead or misleading links are far too common.
I would say letting the user change something that makes up an URL that can be linked permanently is not a good practice.
You could implement a permalink as do some sites, but people will still just copy the browsers URL anyway.
I'd suggest option 1, or something like it.

The proposed options here that let you change your username ultimately can lead to dead links or wrong destinations at one point in time.


I would suggest a middle approach that keeps users happy and SEO working fine.

Enable users to change their username, but only once in 90 days. Their old username is redirecting to their new username for 90 days with a 301 redirect.


  • 90 days is enough to let search engines find the new user
  • User can possibly roll back if their new username has unintended consequences
  • User names are not reserved forever as they are release after 90 days of non-usage
  • No ugly meaningless ids in the urls
  • 1
    But then there is still the issue of broken links. If I've learn't anything on the internet it is that information never dies. Links live for decades.
    – JohnGB
    Oct 5, 2011 at 13:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.