MitchThese stats are really good. What I'd love to see now is if you could make a rankings leaderboard out of all the data you've made.
Yeah, I'd like to add some kind of elo eventually. But there are a lot of other things which need doing first.
| Account Details | |
|---|---|
| SteamID64 | 76561198076693960 |
| SteamID3 | [U:1:116428232] |
| SteamID32 | STEAM_0:0:58214116 |
| Country | United States |
| Signed Up | January 23, 2020 |
| Last Posted | February 27, 2026 at 12:05 AM |
| Posts | 35 (0 per day) |
| Game Settings | |
|---|---|
| In-game Sensitivity | |
| Windows Sensitivity | |
| Raw Input | |
DPI |
|
Resolution |
|
Refresh Rate |
|
| Hardware Peripherals | |
|---|---|
| Mouse | |
| Keyboard | |
| Mousepad | |
| Headphones | |
| Monitor | |
MitchThese stats are really good. What I'd love to see now is if you could make a rankings leaderboard out of all the data you've made.
Yeah, I'd like to add some kind of elo eventually. But there are a lot of other things which need doing first.
24Looks straight out of 2010, but the details and the data are phenominal. Great job on this!
Thanks! Any web design help would be great, since it's not really my area of expertise.
24You may be intriuged to port into DigitalOcean and their App platform. The CI/CD as well as horizontal/vertical scalability is amazing for these types of projects - you just won't be able to run a local SQL DB in this environment, but you could just run a Droplet for an additional $5 or an AWS instance for free (for up to 12 months) or GCP (for up to 12 months) I have some credit I can send your way if you wish to experiment with this.
I looked into it a while back, but I had $100 of credit on Azure, so I decided to use them (at least initially).
All the useless stats you've ever wanted.
Currently running on the cheapest Azure instance I could find, so try not to hug it too hard. Initial page loads can be pretty slow (5-10s), but everything after that should be faster.
Around 2ish years of logs are imported. I eventually plan for everything to get imported, but for the moment I am only importing new logs.
This website is open source, so please feel free to open an issue or pull request. I will try to fix bugs, but I have a pretty big feature backlog already. If you would like to see a new feature, you can react to the issue and that will help me decide what to work on. At the moment I am trying to get the database ported to PostgreSQL so I can have multiple inserts running at once :)
I'm not 100% certain but 90% certain that if you were to update a log e.g on a per round basis it keeps the same logid.
Does the upload time get updated? And is there a limit to when a log can get updated? E.g. could I update a log I uploaded 1 year ago?
If I take a look at the log you mentioned in which Kumis has 38634(heal) for some reason almost every shot he makes as a scout looks like this
This is actually super common. A significant amount of his logs have over 500 heals/minute, even though he never plays medic (or even engie). You can look at any other player and see the same effect.
Can you add the ability to paginate starting at a specific logid? E.g. something like
https://logs.tf/api/v1/log?before=some_logid. A naïve iteration will get duplicate logs. E.g. imagine if there are 25 logs and I have a limit of 10. The first request will get logs 24-15. Then someone uploads a new log. I then ask for another 10 logs, starting at offset 10. This gets me logs 6-15. Notice how log 15 gets requested twice. If the import lasts for a long time (and no corrective measures are taken), this can end up being a significant fraction of the requested logs.
I would also like to verify a few things about the JSON. Is info.date the upload time? In UTC? And rounds[].start_time in the local timezone? Do new log uploads get their own logid even if they are updates to another logid? Or do they keep the same logid as the log they update? Does info.date change if the log is updated? Is there a "statute of limitations" after which a log can no longer be updated?
And lastly, what in the world does players[].heal represent? On some logs it seems to represent healing done, and on others it seems to count self-healing. For example in this log, Kumis has 38634 heal and in this log he has 0, even though he played scout/heavy both times. Complicating matters, for medics the player[].heal mostly equals the sum of healspread[][], which implies that it is healing done.