If you've played any pokemon game, you'll know about Experience Points. Battle any pokemon and win, and you'll gain a set amount of experience for your pokemon. Get it to a certain point, and you level up. It's simple enough to understand for most people. The concept of battling many enemies to gain enough experience for your characters to level up is very commonly seen in RPG's. Of course, it's more complicated in Pokemon in a few not-so-obvious ways.

Say you just caught a Seviper, and you're training it to battle the Elite Four. By the time you get to the Elite Four, your Seviper is at a lower level than your other pokemon because you feel it's too hard to level up compared to your other pokemon. Why is this? It's because all pokemon have a set level growth rate. You are going to find, once you get to level 100, that your pokemon will have a number like 1,000,000 or 600,000 or in Seviper's case, 1,640,000 in your Experience Gained status. There's three other possible values it can be, and each pokemon is assigned one of them. Of course, these values are named with an adjective describing how fast they level up. Please note that the following numbers are for pokemon at level 100.

Now I'm sure you're all wondering where I got those numbers from (or maybe you aren't), so I'll show you the equations to get them. Note that ^ means “to the power of”. Don't you wish there was a key for squared/cubed? Maybe not, but anyway, here are the equations.

Hey wait, there's two missing! Well, to be frank, they're unknown formulas. Luckily however, if you compare your experience to one of the values that you get from the above equations, you should get your Experience anyway. For you people that aren't good with math and need an example, I'll do a simple one with each of them.

These formulas also work to figure out how much Experience is needed to get to a certain level. Say if I put 36 instead of 100 for Medium Fast.

Medium Fast

36^3
46,656

Think that's too big of a number and automatically think these equations are inaccurate? Well compare that number to what it's at when you get to level 100. That's less than 5% of what you need to get to that point.

Generation V

In Generation V, the experience calculation has changed drastically, taking a lot of the calculation from both your level, their level and the difference in the level. This allows for faster level ups when you're under the level of the Pokémon and smaller ones when you're over the level of the Pokémon. This equation is as follows;

floor(floor(√(A)*(A*A))*B/floor(√(C)*(C*C)))+1

Here, value A is equal to the (OpponentLevel * 2) + 10Value C is (OpponentLevel + UserLevel + 10)Value B is a more complicated variable and is where things start seeing changes. Normally, Value B is a simple (OpponentBaseExperience * OpponentLevel / 5). However, there are multiple additions and are calculated in order.
In trainer battles, value B is multiplied by 1.5
If a Pokémon has EXP. Share, then B is halved
Value B is then divided by the amount of team members who have been in battle against the Pokémon that has been defeated.

Once this is calculated, there are more means to boost the experience gained. These means are all different and are even stackable, allowing massive Experience gains.

So now that you know about the different growth rates, let me explain how actual Experience is gained. There's an equation for how much Experience you gain of course, it may not be exact however since it's from Gold and Silver. Regardless, it's very similar.

Experience = ((Base Experience * Level) * Trainer * Wild) / 7

Yay, lots of variables. Okay, let me explain them before I show you an example. Every single pokemon has a set Base Experience, a lot like they have Base Stats. They all vary between each pokemon. For example, Bulbasaur has a Base Experience of 64. Level should be obvious; it's what level the pokemon you're fighting is at. Trainer isn't as obvious. If your Trainer ID matches that of the Original Trainer of your own pokemon, then Trainer is going to equal 1. If it doesn't, it is 1.5 instead. This is how your pokemon gets 1.5 more Experience Points after you trade it to someone else. Wild tells if the pokemon you're fighting is wild or not. If it is wild, then this variable is equal to 1. If you're fighting a trainers pokemon, then it equals 1.5. This is why trained pokemon are better to fight for Experience than Wild Pokemon.

So let's say that my starter Squirtle had just defeated my rival's Bulbasaur in Fire Red. The Base Experience for Bulbasaur, mentioned before, is 64. The Level is 5 since it's the first battle you do with your rival. You are the original trainer, so Trainer is equal to 1. It isn't Wild, so Wild = 1.5. Now the only thing left to do is to do the math.

The answer might be one or two off, but as I said before, it's going to turn out very close to the real answer.

Two more things basically. Experience is divided by the number of pokemon that have been in the battle and spread to those pokemon. If I had a Pidgey and a Squirtle and battled that Bulbasaur having sent both pokemon out into the fray and they both had survived, the experience will be divided in half between those two pokemon. It's the same thing for double battles.

One more thing. Exp. Share is an item that will always give half of the experience points gained in the battle to the pokemon with the item equipped, regardless of if it participated or not. This makes leveling up young pokemon easy.