RotomLabs uses a powerful token system for complex queries. Filter Pokémon, moves, and abilities using simple prefixes and logical operators.
Words without a prefix search by name.
Standard words look for partial name matches.
pikachu- Finds anything with "pikachu" in the name (e.g., Pikachu, Alolan Pikachu, etc.).charizard blastoise - Finds Pokémon matching both names (AND). Unlikely to provide results, but still available. More powerful with the OR operator (see below).!pikachu- Excludes Pokémon with "pikachu" in their name."mr. mime"- Quotes keep a name with spaces together. It's still a partial match.move:extreme-speed - A value with hyphens also matches the slug, so you can paste one straight from a URL.Use the =operator for a strict match. This requires the item's slug (lowercase with hyphens, used with site URLs). This is perfect for avoiding unwanted variants or partial matches.
p=pikachu - Matches only The Pikachu species exactly (includes form variants).p="mr. mime" - The name works too, typed the way it reads.f=mega-y - Matches the exact form slug mega-y.is:default- Each species' default form, whatever its slug.move=earthquake - Matches the exact move slug earthquake.a=sturdy - Matches the exact ability slug sturdy.A slug is a unique identifier: lowercase, no spaces, and hyphens for special characters. Site URLs use these slugs as well.
Examples: Great Tusk = great-tusk | Extreme Speed = extreme-speed | Farfetch'd = farfetch-d.
Filter by National ID, elemental types, forms, and abilities.
| Field | Prefixes | Operators | Example |
|---|---|---|---|
| National ID | #, national | : = > < >= <= != | #25 or national>151 |
| Type (Any) | t:, type: | : = != | t:fire |
| Primary Type | pt:, type1: | : = != | pt:grass |
| Secondary Type | st:, type2: | : = != | st:poison |
| Form | f:, form: | : = != | f:mega |
| Ability (Any) | a:, ability: | : = != | a:sturdy |
| First Ability | a1:, ability1: | : = != | a1:intimidate |
| Second Ability | a2:, ability2: | : = | a2:levitate |
| Hidden Ability | ah:, abilityhidden: | : = | ah:sturdy |
Second and Hidden abilities only support : and =. They can't be excluded with !=.
Search by base stats or the Effort Values (EVs) granted when defeated.
| Field | Prefixes | Example |
|---|---|---|
| Hit Points | hp: | hp>100 |
| Attack | atk:, attack: | atk<=50 |
| Defense | def:, defense: | def:100 |
| Sp. Atk | spatk: | spatk>=120 |
| Sp. Def | spdef: | spdef!=80 |
| Speed | spd:, speed: | spd>130 |
| Base Stat Total | bst: | bst>=500 |
| Height (m) | h:, height: | height>=2.5 |
| Weight (kg) | w:, weight: | weight<10.5 |
| EV Yields | evhp:, evatk:, evspd:, etc. | evatk:3 |
Search by egg group, hatch time, gender ratio, and how fast a Pokémon levels.
| Field | Prefixes | Example |
|---|---|---|
| Egg Group | egg:, egggroup: | egg:monster |
| Egg Cycles | ec:, eggcycles: | ec:5 |
| Growth Rate | growth: | growth:slow |
| Catch Rate | cr:, catchrate: | cr<50 |
| Base Friendship | bf:, friendship: | bf:0 |
| Gender Ratio (% Female) | gender: | gender:100, gender:12.5, gender:none |
Only egg cycles are stored, so egg steps can't be searched. Use ec: instead.
RotomLabs can estimate stats at any level. By default, it assumes Level 50.
Assumes 31 IV, 252 EV, and a beneficial nature.
| Stat | Prefix | Example |
|---|---|---|
| Max HP | maxhp | maxhp>200 |
| Max Attack | maxatk | maxatk>150 |
| Max Defense | maxdef | maxdef>150 |
| Max Sp. Atk | maxspatk | maxspatk>150 |
| Max Sp. Def | maxspdef | maxspdef>150 |
| Max Speed | maxspd | maxspd>200 |
Assumes 0 IV, 0 EV, and a hindering nature.
| Stat | Prefix | Example |
|---|---|---|
| Min HP | minhp | minhp:100 |
| Min Attack | minatk | minatk<50 |
| Min Defense | mindef | mindef<50 |
| Min Sp. Atk | minspatk | minspatk<50 |
| Min Sp. Def | minspdef | minspdef<50 |
| Min Speed | minspd | minspd:50 |
Add [level] to any prefix to calculate at that level.
Example: maxspd[100]>400 (Top speed at level 100).
For competitive "Champions" data, calculations always assume 31 IVs, regardless of whether you search for min or max stats.
Find Pokémon based on what they can learn and how they learn it.
| Method | Prefix / Operator | Example |
|---|---|---|
| Any Method | move: (fuzzy)move= (exact) | move:earthquakemove=earthquake |
| Level Up | move[level]:move[level]= | move[level]:"thunder punch"move[level]="thunder-punch" |
| Egg Move | move[egg]:move[egg]= | move[egg]:"dragon dance"move[egg]="dragon-dance" |
| TM / HM | move[tm]:move[tm]= | move[tm]:toxicmove[tm]=toxic |
| TR | move[tr]: | move[tr]:"body press" |
| Tutor | move[tutor]: | move[tutor]:"draco meteor" |
| On Evolution | move[evolve]: | move[evolve]:crunch |
| Move Reminder | move[reminder]: | move[reminder]:"ancient power" |
| As a Pre-Evolution | move[preevo]: | move[preevo]:spore |
| Transfer Only | move[transfer]: | move[transfer]:"soft-boiled" |
| Event | move[event]: | move[event]:"happy hour" |
By default, : matches any move containing that text (e.g., move:thunder matches Thunderbolt). Use = with a slug for a strict match (e.g., move=thunder).
| Filter | Prefixes | Example |
|---|---|---|
| Same-Type Attack | stab: | stab:fire |
| Status Move of a Type | has_status:, status: | has_status:psychic |
| Inflicts a Condition | inflicts: | inflicts:burn |
| Strong Against | sa:, strongagainst: | sa:fire |
stab:fire is a Fire type that learns a damaging Fire move. sa:fire is a Pokémon whose own types hit Fire super effectively.
What a move does in a battle. has: finds Pokémon that learn one in that game.
hazard removal recovery pivot phaze screen weather terrain protection cleric trap binding setup
Example: has:hazard | has:pivot | has:setup
A move's traits, like punching moves for Iron Fist or sound moves for Soundproof. has: works the same way.
contact sound punch bite slicing wind dance powder bullet priority heal drain recoil flinch crit multi_hit charge recharge defrost
Example: has:punch | has:sound | has:multi_hit
Roles and flags can't be excluded with !=. They follow each game, so Teleport only counts as a pivot from Gen 8 on.
Search by where and how a Pokémon is caught.
| Field | Prefixes | Example |
|---|---|---|
| Place | found: (fuzzy)found= (exact) | found:"route 30"found=south-province |
| Encounter Method | method: | method:surf |
| Time of Day | time: | time:night |
| Held Item | holds:, helditem: | holds:"lucky egg" |
| Shiny Lock | shinylock: | shinylock:locked |
| Perfect IVs | ivs | method:gift ivs:3 |
| Fixed Ability or Nature | fixed: | fixed:hidden |
| Encounter Rate (%) | rate | rate<5 |
Put these together and they describe the same encounter. found:"route 30" method:surf means surfing on Route 30. Scarlet, Violet, and Legends: Arceus don't record a method or time for their overworld spawns, so those two filters skip them.
Target specific matchups, traits, and formats.
| Filter | Keywords | Example |
|---|---|---|
| Matchups | weak:, resist:, immune: | weak:fire |
| Extreme Matchups | 4xweak:, 4xresist: | 4xweak:water |
| Move Types (Physical/Special) | has_phys:, has_spec: | has_spec:fire |
| Trait Tags | is: | is:legendary, is:baby, is:final, is:paradox |
| Evolves | evolves:, evo: | evolves:trade, evolves:"thunder stone", evolves<=20 |
| Entries From Region | region:, r: | r:sinnoh (DPP & BDSP) |
| Game | game:, g: | game:scarlet |
| Generation | gen: | gen:8,9 |
| Regulation | reg:, format: | reg:reg-g |
The weak:, resist:, and immune: tags will match any Pokémon that may have an ability that affects immunity. For example, immune:ground will include Pokémon that could have levitate (e.g.immune:ground rotom will show Rotom).
Add sort: to order the results. A - in front puts the highest first.
t:fire sort:-speed - Fastest Fire types first.sort:-bst- Every Pokémon by base stat total. Sorting doesn't filter anything on its own.t:fire sort:-physbulk - Physical bulk (HP × Defense at level 50). Use specbulk for Sp. Def.You can also sort by name, natid, any base stat, height, weight, catchrate, generation, happiness, eggcycles, and growth.
Combine filters with simple logic.
and. t:fire weight>50or or commas. A list has no spaces. t:fire or t:water | t:fire,water | is:legendary,mythical( ) to nest logic. (t:fire or t:water) and is:final!= or !:, or put ! or - before a filter. t:fire and pt!=ground (does not include Primal Groudon) | -t:flying | !hp>100 (same as hp<=100)Put a search in braces after a filter, and the filter uses whatever that search finds. Parentheses group terms. Braces run a search of their own.
ability:{desc:priority} - Pokémon with an ability that mentions priority. Works with a1:, a2:, and ah: too.learner:{t:dragon bst>600} - On the Moves tab, moves a Dragon type with over 600 BST can learn.main:{ability:levitate} - On the Pokémon GO tab, Pokémon whose main-series form can have Levitate.Braces go two levels deep, e.g. learner:{ability:{desc:"floating"}}. Use != to leave out what the inner search finds: a!={desc:"floating"}.
On the Moves tab, words search move names and filters describe the move itself. Types, games, logic, and sorting work the same as above.
| Field | Prefixes | Example |
|---|---|---|
| Category | cat:, category: | t:fire cat:physical |
| Power | p:, pow:, power: | p>80 |
| Accuracy | acc: | acc:100 |
| PP | pp: | pp<10 |
| Priority | pri:, priority: | pri>0 |
| Hits, Crit Stage, Recoil, Drain, Flinch | hits:, crit:, recoil:, drain:, flinch: | hits>1, flinch>0 |
| Inflicts a Condition | inflicts: | inflicts:burn |
| Super Effective Against | se: | se:water |
| Learned By | learner:, pkmn: | learner:pikachu |
| Description | desc: | desc:"raises the user" |
| Roles & Flags | is: | is:pivot, is:punch t:fire |
| Sort | sort: | t:fire sort:-power |
With a number, p: is power (p:80,90). With a word, it's the move's name (p:thunder).
On the Abilities tab, words search ability names.
levitate - Abilities with "levitate" in the name.ability:stat* - * matches the rest of the name.p:pikachu - Abilities Pikachu can have.desc:priority - Abilities whose description mentions priority.The Pokémon GO tab searches the GO dex. Names, types, is:, matchups, and logic work the same as above.
| Field | Prefixes | Example |
|---|---|---|
| Max CP | cp | cp>3500, cp[40]>=3000 |
| GO Stats | atk, def, sta | atk>250 |
| Tags | is: | is:shadow t:dragon, is:mega,primal |
| Raid Boss | raid: | raid:5, raid:now |
| Release & Shiny Dates | released:, shiny: | released>2024, shiny:event |
| Buddy Distance (km) | buddy | buddy<=3 |
| Evolution | evolves:, evocandy | evolves:"sinnoh stone", evocandy<=25 |
| Moves | fast:, charged:, move[elite]: | fast:"mud shot", move[elite]:* |
| Costume | costume: | costume:holiday |
| Sort | sort: | t:dragon sort:-cp |
GO search leaves out entries that aren't in the game yet, mostly Shadow forms. Add include:unreleased to see them.
A main-series immunity counts as a double resist, so resist:fighting includes every Ghost type.