Currently, we do badges based on counts of badges you should have (at this point in time) vs what you do have (again, at this point in time). This behaves in the following way:

  • Let's say user A (user chosen at random) has 10 questions with a score of +10 or more
  • Someone downvotes, or in this case a user is deleted and a previous question (#1 in the list above) no longer has a score of >= +10
  • The badge grant runs, the user has 9 nice answers now, the job does nothing to this user
  • ...later...
  • The user gets +10 on a new answer, but again the job does nothing - because the count of badges they should have still isn't greater than the badges they have

So from one point of view, the user now has 10 nice-answer worthy posts, so the count is correct (though the reasons are wrong, since the first link is no longer a +10) From this view, they should have 10 badges and do have 10 badges.

From another point of view, the user did have a nice answer when that badge was awarded, and they do have a nice answer on their now 10th (would have been 11th) answer, so did they get gypped out of their 11th badge? From this view, they should have 11 badges and only have 10.

The first point of view above is the way the system currently works. The second is what we're proposing (mainly for performance reasons - but also having the "reason" or post link be correct in as many cases as possible). This would result in some badges being rewarded on the day it goes live (the case above is a literal example). In total 2,216 nice badges would be awarded.

So the question is which view is more correct? Should this user have 10 badges, or 11 with one that was valid at the time, but not now (never revoked).

Update: This went live tonight: July 6th, 2011

  • I thought that few badges were removed. For example, the badge about creating a tag used by X questions is still kept, even when the tag doesn't exist anymore.
    – apaderno
    Jun 29, 2011 at 0:35
  • @kiamlaluno - that's correct...this isn't dealing with removal/revoking but granting. In the example above the 11th badge wasn't revoked, it was never granted because of how the current code (based on counts) works. Jun 29, 2011 at 0:39
  • I apologize; I read it giving the opposite meaning.
    – apaderno
    Jun 29, 2011 at 0:41
  • I think a lot of the problem (but not all) would disappear if we counted deleted questions for badges. Jun 29, 2011 at 6:29
  • How does this work with the "revenge voting" problem two posts up? If I downvote a person's "10" answers, will that strike a bunch of his badges? Would hurt!
    – Bo Persson
    Jun 29, 2011 at 8:57
  • @BoPersson - It wouldn't revoke them, no, but in the current system it would prevent the next n badges from being awarded. Jun 29, 2011 at 10:11
  • How would this work for “fickle” badges like Reversal (easily undone by a question upvote) or Tenacious (easily undone by a few answer upvotes)? Jun 30, 2011 at 0:07
  • 1
    @Gilles - in the same way, if you earned the badge on a new post, you'd get that badge, even if an old one no longer qualified. The simple version: the current system looking at counts would not award this badge, the new one would award it. Jun 30, 2011 at 0:10
  • @Nick, so how did this get implemented? Does it just count all the deleted posts also, so that the numbers work out? Jul 7, 2011 at 3:32
  • 2
    @Lance - We now see if you got the badge for that thing (post, tag, etc) rather than do you have X badges, so we see exactly which things you're missing badges for, and award those...this also worked out to a major performance and functionality advantage. Jul 7, 2011 at 3:35
  • @Nick - I see that the system just awarded many many new badges, and that's fine. I found out I had a Nice Answer for a question that was 9/0. That got me thinking, how fast does the badge grant run, if, in my case, I got it before somebody undid an upvote? And if it does run very quickly after an upvote, won't this result in many grants for posts with undone upvotes at +9 that didn't even stay at +10 for a significant period of time?
    – Nicole
    Jul 7, 2011 at 4:04
  • @Renesis - some badges run more often than others, the job itself runs every 5 minutes. Can you be awarded one for something that later doesn't meet the criteria? absolutely. We're concerned with did you earn the badge at that time. Jul 7, 2011 at 4:16

5 Answers 5


so did they get gypped

Yes, I think so. It isn't just the number that they got gypped on, but the recognition. They got gypped out of the recognition for contributing great content (or whatever the contribution for that badge is). If I look at their "nice answer" badge page, there is no recognition for that post.

The current process is a little funky anyway. "True user" creates sockpuppets to upvote posts of the "true user". "True user" earns badge. All sockpuppets are merged in, and "true user" still holds badge. (Also a literal example.) It is almost like we're doing things halfway. Either revoke badges, or award people for new accomplishments as they earn them. Since badges earned improperly are the much rarer case and much, much hairier, I'm ok with that not being handled as part of the automatic process and only handling it manually when it is truly malicious.

TL;DR: Yes, award and recognize people for their accomplishments. It'll cut down on the meta support posts we get asking why a badge wasn't earned too. (:

  • 2
    +1 I agree, but only if you begin revoking badges as well... Jun 29, 2011 at 0:51
  • You're just looking for another badge huh? ;)
    – jcolebrand
    Jun 29, 2011 at 3:07
  • Could there be a badge for having your first badge revoked?
    – M. Tibbits
    Jun 29, 2011 at 4:21
  • You're going to get a lot of posts that ask where didz my badgz go? Jun 29, 2011 at 6:28
  • 1
    @LanceRoberts, I am not proposing we start revoking badges. Jun 29, 2011 at 6:29
  • @Rebecca, ok, I see that with closer reading. If we just had the badge script count deleted stuff in its calcs, it would eliminate a lot of the problem. Jun 29, 2011 at 6:31
  • @Lance - sometimes this is true, but not always, deletion isn't the only thing that may cause a trigger to no longer meet the trigger requirements, post or otherwise. For example, an answer that was a +10/0 and is now +10/-1 would no longer meet the requirements for nice answer...there are several cases of this, another is ViewCount which we don't have a history of. Jun 29, 2011 at 10:23
  • Sweet, so I'd get a silver badge for saying that the Java equivalent of "pythonic" is "enterprisey". That's clearly a quality answer deserving of two badges.
    – mmyers
    Jun 29, 2011 at 12:46

I vote for what you're proposing. It's easy enough to see that a post that falls below the requirements for a badge after the badge was awarded had done just that.

In my mind the current way is quite confusing, especially to new users. It happened to me just the other day here on MSO. I crossed 25 upvotes on an answer and never got the Good Answer. On top of that It was also the first (only) answer and got accepted but I never got the Enlightened. I looked through my badges and was able to explain it away (questions deleted that earned me other badges), but that's because I know how it works. I'm no badge-whore, but it is still cool to get them when they come.

I see no harm in changing it.


I have two other options:

1) To show "revoked" badges as such (with the link) in a separate list. So you can keep track of badges you once had.

2) To change the definition of these badges. For example Nice Answer means, you once had 10+ upvotes for this answers.

Of course, badges aquired through vote fraud need to be burniated.

  • 1
    In the case of revoked badges we actually hard delete them so the re-awarding process can take over accordingly (and award all current badges they should have, like in the case of an SE 1.0->2.0 migration). The revoking also is a very exceptional case, sock puppets or a bug in the badge itself are the only reasons I can think of where this has happened...we don't want to revoke you badge because someone downvoted and it no longer needs the requirements...we tend to think it did meet the requirements, you earned it. But...clarification to descriptions is certainly on the table if needed. Jun 29, 2011 at 10:21

Just to play devil's advocate here: doesn't this reward bad behavior? Here's a possible scenario:

  • Currently

    Joe creates 100 sockpuppets so he can get the Great Answer badge. He gets the badge and a suspension, but when he comes back he's still got that badge.

    Jack might be annoyed that Joe has that badge, but he can console himself by thinking that, well, if Joe ever does something to deserve a Great Answer badge, at least he won't get another one.

  • Proposal

    Joe creates 100 sockpuppets so he can get the Great Answer badge. He gets the badge and a suspension, but when he comes back he's still got that badge.

    Jack? He's annoyed that Joe got that badge.

    Jack's more annoyed when Joe does it again a month later.

    Jack is really annoyed when Joe does it again six months later.

    From Joe's perspective, why should he stop? This is working great—for him.

You can either award badges doing calculations and not give new badges for later, duplicate badges,
or you can calculate badges on the fly and also figure out how to remove unearned badges.

But if you hand out badges with no checks, and never remove badges once given, that gives the big payoff to the people who game the system.

  • 3
    These are two separate issues...in the sock puppet case we'd absolutely revoke the badges (there's another manual mechanism to do this)...but that's totally separate from the awarding process. Calculating them on the fly isn't really realistic, since for example on great answer we'd have to walk the vote table for every answer they had. Jun 29, 2011 at 10:14

I think I'm in favor of these new badge-awarding rules, but I can't help bringing up a case that I didn't see anyone mention above: migrated questions.

For example, I now have Nice Answer, Good Answer, and Great Answer badges on both SO and Programmers for this answer which was migrated between the two. Is it "right" that this set of badges has been duplicated on each individual site? Is this an intended side effect of these new rules?

  • This would have happened under the old system as well, keep in mind that unless you had prior deleted content preventing the count from exceeding and granting the badge, you'd have gotten one before the answers were deleted on migration...and on the destination site. So really, the effects around this haven't changed. Jul 7, 2011 at 3:33

You must log in to answer this question.

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