How is this different from what I see on reddit?

It's not, really. I was just interested in calculating it myself and wrote
some simple python to do it. I also made some different
different
assumptions than /u/fknm1111, listed below. And some of the same ones.

There are 2 versions of the page (each one links to the other). In one, I use the previous season's Elo score for a bot as the initial score for "this" season. This may be controversial since bots can change between seasons. If a bot skips a season, his score is not carried forward and starts fresh. In the other, every bot starts "fresh" with a score of 1500.

I use a K factor of 40, only because this is the factor used by FIDE, "... for
a player new to the rating list until the completion of events with a total of
30 games and for all players until their 18th birthday, as long as their rating
remains under 2300". So, no reason I can stand behind.

The difference in output is negligible; with a smaller K factor, wins and losses
don't mean AS much, so the scores are a little closer together due to rounding,
and there are a few more "ties" due to scores being the same. But, the order is
basically the same.

I mark both a "KO" and a unanimous decision a full win.

I mark a "split decision" win as 0.67 of a win; the losers share 0.33 of a win. Why? I just wanted to try it and see what the outcome was. I make no claim that it's better.

I only used fights that were listed on the Wikipedia page. I don't factor in any un-aired fights.

Multi-way fights (eg: more than 2 bots) are now included! Just like a 2 way fight, the winner gets a full win on a KO or UD, and the loser(s) get 0. On a SD, the winner still gets 0.67 of a win, and the loser(s) share evenly the remaining 0.33 of a win. Thanks to this site for inspiration.

This ranking sucks; it doesn't account for X, Y, or ...

- Correct. Elo is a horrible metric for these sorts of fights. You win.
- Elo is very "order dependent", so wins against a bot give different scores depending on when in the season it happens.
- The sample size for BattleBots is absurdly small; Elos in chess are only meaningful after dozens, if not hundreds, of matches against other ranked players (also with many matches).
- These matches are nothing like chess. Chess players don't break. Chess players don't have varying degrees of parts to swap in if they do. Chess matches are not reliant on the equipment as well as the human. (Note: Debates about psychology and mental breakdowns may be relevant, but I'm not really interested.)

Your HTML/CSS sucks. Yes, yes it does. I'm more a back-end coder. Sorry.