# Is there a formula to calculate level given experience?

I have a spreadsheet that tracks the XP for our group and I've gotten tired of manually looking up how much xp is needed for the next level.

I'd much prefer if there was a formula I could put on the spreadsheet that would calculate the level given the XP? (Without using a lookup table)

## 5 Answers

We'll start with this post:

"After 2nd level, the amount of experience you need to gain a level goes up by 250 points (i.e., you need +1,000 to reach level 2, +1,250 to reach level 3, etc.). After four levels of this, the 'additional' amount increases to 500. About the point you'd expect this to continue, it gets extremely erratic on levels 11 (+1,500) and 12 (+500), then reverts back to +1,000 at 13th and 14th. Levels 15-18 add +2,000 each, and 19-20 start at +4,000 -- this implies the amount added doubles every four levels.

Except that level 21 adds +8,000, and 22 adds +3,000. After that little bit of weirdness, it does +10,000 for four levels, and +25,000 for the last four."

Here's a rough chart of the results; the first column is from the RAW, the second removes the 'jagged' parts, and the third assumes a simple doubling every time. The numbers on the latter two look funny, but the progression itself is easier to predict.

 RAW    Smooth   Doubler
1          0         0         0
2      1,000     1,000     1,000
3      2,250     2,250     2,250
4      3,750     3,750     3,750
5      5,500     5,500     5,500
6      7,500     7,500     7,500
7     10,000    10,000    10,000
8     13,000    13,000    13,000
9     16,500    16,500    16,500
10     20,500    20,500    20,500
11     26,000    25,500    25,500 <- 500 XP difference
12     32,000    31,500    31,500
13     39,000    38,500    38,500
14     47,000    46,500    46,500
15     57,000    56,500    56,500
16     69,000    68,500    68,500
17     83,000    82,500    82,500
18     99,000    98,500    98,500
19    119,000   118,500   118,500
20    143,000   142,500   142,500
21    175,000   170,500   170,500 <- 4,500 XP difference
22    210,000   202,500   202,500 <- 7,500 XP difference
23    255,000   244,500   242,500 <- 10,500/12,500
24    310,000   296,500   290,500 <- 13,500/19,500
25    375,000   358,500   346,500 <- 16,500/28,500
26    450,000   430,500   410,500 <- 19,500/39,500
27    550,000   527,500   490,500 <- 22,500/59,500
28    675,000   649,500   586,500 <- 25,500/88,500
29    825,000   796,500   698,500 <- 28,500/126,500
30  1,000,000   968,500   826,500 <- 31,500/176,500


There are no clean mathematical formulas to approximate this, according to the curve-fitting service ZunZun.com. While my prior equation did serve to ... output the rates of increase, a lookup table or your own XP chart should serve better.

Curiously, this does highlight some interesting questions about the relative time per level, suggesting that a custom XP chart may provide a more consistent levelling experience for your players.

Edit. Here's a quick and dirty reverse lookup that worked in excel 2008. =VLOOKUP(A1,{0,1;1000,2;2250,3;3750,4;5500,5;6500,6;10000,7;13000,8;16500,9;20500,10;26000,11;32000,12;39000,13;47000,14;57000,15;69000,16;83000,17;99000,18;119000,19;143000,20;175000,21;210000,22;225000,23;310000,24;375000,25;450000,26;550000,27;675000,28;825000,29;1000000,30},2)

While the progression isn't readily codified, here's the lookup formula (replace the reference to A1 with the cell with character level) so you don't have to look in the book:

 =CHOOSE(MAX(MIN(31,A1),1),0, 1000, 2250, 3750, 5500, 7500, 10000, 13000, 16500, 20500, 26000, 32000, 39000, 47000, 57000, 69000, 83000, 99000, 119000, 143000, 175000, 210000, 255000, 310000, 375000, 450000, 550000, 675000, 825000, 1000000, "—")


Why the MAX() function? So that it doesn't choke on a blank field.
Why the MIN() function? The maximum entry from the table is level 29, so if the character is 30 or above, it uses the 30th entry.
The choose function looks at the first entry for a numerical index value of 1-N, and the rest of the entry is a list N long of results.

• I get an error when I paste that into A2 with A1=1. Deleting the last "--" term clears the error, but the function fails for A1=30. – Adam Dray Nov 12 '10 at 5:04
• fixed, now it performs bounds checking correctly. – Brian Ballsun-Stanton Nov 12 '10 at 5:32
• I checked my formula in Apple's Numbers; I don't do microsoft. Any errors are differences in implementation of the function. – aramis Nov 12 '10 at 10:20
• Doesn't this formula do the exact opposite of what Pat Ludwig wants? This returns the XP based on level, not level based on XP. – Stewbob Nov 12 '10 at 22:41
• Ah, yes... but having it in would allow him to know when they've leveled up, and then just update the level. The vlookup or hlookup functions can do the other direction, but have the disadvantage of being more difficult to use. – aramis Nov 13 '10 at 5:09

I use a table and the VLOOKUP function in Excel for this kind of thing. You can input all the values for the levels in a table similar to what Brian has shown. Put this on another (or hidden) page and then use the lookup functions so the level is automatically updated when the value of the XP cell changes.

When using the VLOOKUP function, the first column needs to be the min XP required for that level, and the 2nd column is the level.

=VLOOKUP("cell address/name containing XP","address/name of table",2,TRUE) The '2' indicates that you will return the value from the 2nd column in the table. The 'TRUE' indicates that an exact match is not required on the XP value.

I'm sure there are better ways to do this... it works for me. AW9 being the XP cell.

=ifs(AW9>=355000,20,AW9>=305000,19,AW9>=265000,18,AW9>=225000,17,AW9>=195000,16,AW9>=165000,15,AW9>=140000,14,AW9>=120000,13,AW9>=100000,12,AW9>=85000,11,AW9>=64000,10,AW9>=48000,9,AW9>=34000,8,AW9>=23000,7,AW9>=14000,6,AW9>=6500,5,AW9>=2700,4,AW9>=900,3,AW9>=300,2,AW9<299,1)

• Hi David, welcome to RPG.SE! Take the tour to find out how things work here, and visit the help center for more guidance. I put the formula in code markdown notation, not sure if it's actually an improvement or not though... feel free to edit it back to how it was if you don't like it. – NathanS Dec 20 '19 at 14:56

EDIT Apparently they totally changed stuff for 4e, my answer is only for 3e.

This is a common misconception that there is no formula, in fact someone once told me there was a proof that there is no possible formula! But, in direct contradiction to that, I present to you the following formulas I just derived (you can check it easily in Excel):

If the level is n

XP to get to the next level: (n^2+n)*1/2*1000

XP to attain that level (as is how it is written in the DnD books): (n^2-n)*1/2*1000

• Hi there. You should have a "delete" option next to the edit button. You can use that to remove the answer, as it doesn't apply to 4e. Welcome to the site. :) – Tridus Oct 28 '13 at 18:15