Have you ever wondered what the most popular D&D Classes and Races are? Well here is a tool that you can use to find out! You use the filters to drill deeper into a specific class or to only look at those found in the Player’s Handbook 🛒.
About the Data
This article contains affiliate links where we receive a part of the purchase price. So if you want to support us, feel free to use these links 🛒 to buy books, dice or similar. Thank you 🙂
I’ve tried to find a good dataset of D&D characters online but haven’t really found much. There is an old dataset on GitHub which includes about 8.000 entries. This is a nice start but I wanted more!
I used python to get data from dndbeyond.com. About 1.2 million characters are included in this version. The full new dataset also includes much more information about things like background, stats and even character names! Feel free to use it for your own analysis if you are interested.
Most popular D&D Classes and Races Dashboard
If you have any questions or ideas for other tools like this, hit us up on twitter or mastodon.
Issues with the Data
One big issue you may quickly notice is that there are very few artificers. Why could this be? I’m not too sure but my first idea is that they are the only class that is not available for free. They were also introduced later than other classes and may therefore be underrepresented in the dataset because I just started collection characters by IDs which may introduce a bias towards older characters.
Other than that, I believe the data to be pretty solid. Paid content seems to be less popular, which makes sense. Even though some combinations like Tabaxi Rogue still are used a lot.
[…] the implication that Humans are the most powerful or influential race in a setting. Firstly, while data from DNDBeyond suggests that Human Fighters are the most popular choice for player characters, I have some […]
Nice job. I’ve checked the notebook and I don’t understand how can Grappler be the top feat. After checking some entries there are several character level 1 with the Grappler feat is this a dndbeyond bug? Same with Svirfneblin Magic, this feat is exclusive for deep gnomes and it came with Morderkainen’s Tome of foes. there is simple no way this feat would be this popular, after checking several level 1 non- deep gnomes characters with this feat.
Thank you. I think this is the opposite of why the artificer is so unpopular. Grappler is the default (and only?) free feat on dndbeyond I think. So any character using feats without buying a book will have it.
Thanks for the answer, I honestly assumed that if you were playing the free version you would simply not have any feats since it is a variant rule, what really made me double check this was the fact that a lot of level 1 (non-human variant) characters had this feat when they should have none whatsoever.
What about Svirfneblin Magic? Any explanation for that one? It truly does not make sense that a race exclusive supplementary only (Mordekainen tome of foes) feat could possibility be on the top 10 most popular feats.
I love how theres only one displayed kobold artificer and thats what im playing lol
This is hilarious, my current campaign in playing a Satyr Artificer Battle Smith sub class and Tortle Monk Way of the Four Elements sub class.
Great project and something very interesting data to look at, but… I have a few thoughts regarding the dataset actually. If I understand correctly, you just started checking IDs from 1 until 5 milion.
Now, I was unable to find official confirmation, so these are just educated guesses, but checking about 10 of my characters, it seems the character ids on dndbeyond are given sequentialy. Which means, that the first 5 milion ids would belong to the first 5 milion created characters.
And given a character I created last week had id in 98 milion, you would be checking the first ~5% of characters. Which would actually mean a time of creation bias to the data. And it would explain the artificer number being so low. The few that are there, would be explained by people that kept using the same character and just changing the starting class on it, instead of creating a new one.
Another thing, at some point I was messing around making some js scripts in the browser console to scrub data from my capaign and if I remember correctly, I was stopped at some point for making too many requests. And as dndbeyond does not have an oficial api to use instead, were you not stopped by any anti-ddos measures when you were sending 10 thousand requests per minute?
Great questions!
On the character ID thing: I do think they are given out sequentially but also since characters are deleted often (especially by free accounts) I actually found a relatively uniform distribution of dates last edited. I have no idea how many characters there are in total. I did the same as you when collecting the data and my new character IDs were at about 30 million. However I wouldn’t be surprised if your 98 million are closer to the truth. The dataset also includes 1.2 million characters but the IDs run up to 1.99 million. So either I had some bad requests (which is possible) or there are free IDs everywhere. No idea.
I do think that the Artificer thing could be a result of that. It just kind of makes sense. However, artificers are also the only class you actually have to pay for as well. So that might give it a bias too. I again, have no idea.
For the requests: I actually didn’t really run into issues with anti-ddos measures. I mostly limited my requests to 10k/min because my crappy laptop couldn’t handle them. I ran my script for a few days (with interruptions because of my laptop crashing/timeout errors) and really only stopped because it was too annoying and I needed to work on other stuff. Maybe if you were to send more requests you would get rate limited/ip banned but it didn’t happen to me. Maybe I just got lucky.
Hi Maxime, very cool project! We love it.
I was wondering if you did take the following into account: it seems that in the original csv, more than a few characters are listed multiple times (even with the same char_id/BeyondID). For example BeyondID 800090 (Name: Zalishtia Kalissh) appears four times, and many other characters appear multiple times as well.
Perhaps a suggestion: Would love to see a new dataset that goes from the newest IDs to the older IDs (e.g. start at BeyondID 101,000,000 and go down back to 80,000,000). In the online D&D Discords this is getting shared, people love seeing how rare certain combination are, and are saying stuff like “I’m glad I had the pleasure of playing alongside the only minotaur rogue!” But alas, that’s not the truth.
Hi Wox, thank you!
I thought that I filtered out duplicate characters when collecting the data. So during the analysis I didn’t double check. But it seems that you are correct and some IDs have duplicates. I think this must have been times where my laptop crashed during the collection process and I restarted the script without properly checking what ID was last?
I am currently quite busy but I do have the idea of creating a better version of this. Perhaps even with all the characters and also including a lot more other data like subclasses and backgrounds. I do love that people like the data so much and I hope it makes people play the “less popular” combinations as well!
First of all, thank you for the extensive answer.
Regarding the IDs, huh, the edit distribution is really interesting if the sequential IDs hypothesis is true. (Side note: what a pity that dndbeyond does not, and will not, offer an API and documentation so we could know the truth) Could be actually interesting thing to see a trend of people keeping their old characters through editing. I know I definitely would, if my ID would be 1 😀
And the artificer thing, yeah, they are clearly at the end of the popularity list even in the official statistics from WotC, so I wouldn’t expect it to be suddenly not in the last place when it comes to popularity, even in the full data.
As for the requests, could have been I just ran an infinite loop for a few seconds or something, as I said, I was messing around 😀 But with this info, I am even tempted to try to scrape the data myself.
Yeah an official API would be so great to work with (and so much less work). I do want to encourage you to try and get the data yourself as well! Feel free to send a DM on twitter or an email to dice.scroller@gmail.com if you need any help or have questions on how I did things.
What about owlin?
I filtered out races that had less than 5 occurrences in the sample since homebrew races were messing with things. And since this is only a small sample (1.2 mil out of at least 35 mil characters) there may be a lot of them out there!
Maybe I will do a “larger” version of this at some point and include them ALL!
The real problem with the data is that it comes from Beyond, which is notorious for Posers that have not, and will not ever bring a Character to table.
Artificer is on the bottom for the same reason that fighter is on the top. Multiclassing. Fighter isn’t the most popular class to play, it’s the most popular class to dip into.
We’d get a more accurate view if we could see the number of levels taken in each class.
Actually, this data only includes starting classes. I will try and create a more detailed version (or multiple) that also includes multiclassing and backgrounds.