I have been working on adding reasons for badges to the SO codebase.

During this work I have come over a few edge cases:

  1. Some people have badges multiple times even thought the badge should only be awarded once: http://odata.stackexchange.com/stackoverflow/s/283/wrongly-awarded-badges

  2. Some people have badges but looking at their account I can not figure out why this is the case. example 1 why 2*Guru? Example 2 Great answer for what?

  3. Some people were awarded a badge that is no longer applicable, for example awarded a Great Answer for a an answer that now has 99 votes.

What should we do in each of these 3 conditions?

What should we tell people when browsing through badges when we can not determine the reason? (In dev I have it say "Reason not available" ) but that is not really working for me.

  • 1
    3b. Badges awarded, then the question was migrated? Jul 7 '10 at 1:04
  • 1
    Nice catch, @Bill. That's probably the explanation for the Great Answer badge on Example 2.
    – Grace Note StaffMod
    Jul 7 '10 at 1:27
  • Is this information going to be public, private, or just for the devs to look at? Because while it's great to publish things like Great Answer and Taxonomist, I don't think people need to know where I cast the vote to earn Civic Duty, or what I flagged to earn Citizen Patrol, to name a couple.
    – Grace Note StaffMod
    Jul 7 '10 at 11:43
  • +1 for trying to make badges more consistent
    – Kip
    Jul 7 '10 at 13:05

In cases 2 & 3 - do nothing, or at most mark them as "awarded for a deleted question/answer" for case 2. I'm not sure how you could label them for case 3, so perhaps "the post for which this badge was awarded no longer meets the criteria".

If the question or answer that earned the badge was deleted (or migrated which is tantamount to the same thing) then the next question/answer that would have awarded them the badge won't.

I'll admit that it can seem strange (as in the case you linked to) where someone has "Nice Answer", "Good Answer" and "Great Answer" but hasn't apparently answered any questions. However, it is "by-design".

  • Ok I fixed #1 and did not touch #2 and #3 to stay consistent with the age long SO policy.
    – waffles
    Jul 10 '10 at 6:27

You should definitely fix the first two problems so they don't happen again, and for number 3, keep the paradigm, that badges earned don't go away, even if the reason no longer applies.

  • Yes, immutable is immutable, until its not immutable anymore. +1 for letting people enjoy the novelty that a bug worked in their favor, given the triviality of the bug in question.
    – Tim Post
    Jul 9 '10 at 16:23
  • @Tim, Jeff has always acted like it's status-by-design, not a bug. It would really suck to lose your badge you had from an answer, because someone else deleted the question. Jul 9 '10 at 16:41

One issue regarding migrated questions:

The policy is, "We don't take away badges." So, once a question/answer is migrated to another site you keep the badge(s) you may have earned on that question, but you won't earn any new badges until you have enough qualifying questions/answers for your current badge count.

Here is a scenario:

  1. I asked and answered "What third party tools exist for the trilogy?" (This was acceptable in the early days, pre-meta.)
  2. This post earned me a good answer badge on SO.
  3. But, that question was migrated to meta.
  4. Later on, I provide an answer that eventually gains 25 upvotes, and I don't get a good answer badge. (This is [by-design])

So, now I have a good answer badge that really doesn't know which question it was awarded to.

Does it point to the original, now missing question, or the new one?


Let's tackle the cases one-by-one.

  1. How many of those users were the target of merges? I think a lot of those come up from merging, and one of those Enthusiasts definitely was. If you can somehow confirm that a merge took place, it may be helpful to note summat like "Earned from merge".
  2. In reviewing your examples, I really can't reason this one. There's only so much that deleted content and timeline tracking can show.
  3. In these cases, list the original reason they received it. Subsequently, when the badge is superceded by a new application, supercede the original reason with the new one. This mirrors how the actual system behaves, and also makes it more obvious so that people don't start to question why they didn't get the badge.

If the reason cannot be determined in the cases of 1 and 2, then I don't see much of an alternative besides "Reason unavailable". You could be fancy with "Reason cannot be logically divined", but that's wordsome.


I'd assume the "unfounded" badges in point 2 are usually from deleted subjective/poll/fun questions. There are quite a few of those questions that gathered some votes quickly and later got deleted.

In all cases the proper reason why the user has the badge is "Because we don't have the guts to take it away from you.", but that's probably not good to put there as an explanation.

If the normal reasons looks like "Earned for question #1234" then the unassigned badges could maybe be explained as "For a question not longer available" or "For a question not longer fulfilling the required criteria" or something like that.


For #1 I think there may be a bug. Notice how many of the 2 * Organizer owners are diamond mods.

(Hint, it's all of them)


We've had a global reputation recalc, but now it's time for a

Global Badge Recalc!

i.e. clear everyone's badge counts, walk through the DB and re-award all badges according to the current state of the system. Badges corresponding to deleted questions/answers/comments, or votes since redacted, will be nullified and the badge counts will be accurate.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .