A paste can contain any number of Pokemon (typically 6), separated by one or more blank lines. A Pokemon is represented by a block of text like this one:
Talonflame @ Ability: Gale Wings EVs: 252 Atk / 4 Def / 252 Spe Jolly Nature Brave Bird - Flare Blitz - Swords Dance Roost
Let's break this down line-by-line.
The first line is both the most important, and the most complex. For starters, it includes the Pokemon's name:
Talonflame
This is a perfectly valid first line - it would be a Talonflame with no item, no nickname, and unspecified gender. We can add an item using an @ sign:
Talonflame @
So far, this is pretty generic. What if we want to give it a nickname?
Smogonbirb (Talonflame) @
The nickname goes first, followed by the actual name in brackets. Pretty straightforward.
Finally, let's suppose Attract Chansey has become a thing, and so we want our birb to be female:
Smogonbirb (Talonflame) (F) @
You can mix and match any combination of these - a nickname and no item is fine, as is a gender with no nickname or item.
Next, we can specify stats - Ability, EVs, IVs, Nature, even shinyness.
EVs and IVs both take the same format:
EVs: X HP / X Atk / X Def / X SpA / X SpD / X Spe IVs: X HP / X Atk / X Def / X SpA / X SpD / X Spe
You don't need to specify every field - unspecified EVs are assumed to be 0, and unspecified IVs are assumed to be 31. Many sets don't have an IVs line at all, because perfect IVs are OK most of the time.
The rest of the stats lines are pretty straightforward:
Shiny: Yes / No Ability: XXXXXXXX Level: 1-100 Happiness: 0-255 XXXXXXXX Nature
Again, all of these lines are optional:
Finally, up to 4 moveslots are specified. They look like this:
- Volt Tackle
The space between the hyphen and the move is optional.
Sometimes there is more than one option for a moveslot. PokePaste will only highlight the first move, but the convention is to write it like this:
- Protect / Detect
When using Hidden Power (and sometimes Natural Gift), it is conventional to specify the type for clarity, using either the old style:
- Hidden Power Fire
or the new style (preferred):
- Hidden Power [Fire]
And that's all there is to it!
For the technically inclined, you can see how PokePaste highlights pastes (Python, minimal regex-based parsing), or how Pokemon Showdown stores team data (JavaScript, full parsing and validation).