Advanced Search Syntax

RotomLabs uses a powerful token system for complex queries. Filter Pokémon, moves, and abilities using simple prefixes and logical operators.

Basic & Exact Search

Words without a prefix search by name.

Name Match (Fuzzy)

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.

Exact Match (=)

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.
What's a slug?

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.

Identity & Types

Filter by National ID, elemental types, forms, and abilities.

FieldPrefixesOperatorsExample
National ID#, national: = > < >= <= !=#25 or national>151
Type (Any)t:, type:: = !=t:fire
Primary Typept:, type1:: = !=pt:grass
Secondary Typest:, type2:: = !=st:poison
Formf:, form:: = !=f:mega
Ability (Any)a:, ability:: = !=a:sturdy
First Abilitya1:, ability1:: = !=a1:intimidate
Second Abilitya2:, ability2:: =a2:levitate
Hidden Abilityah:, abilityhidden:: =ah:sturdy
Note

Second and Hidden abilities only support : and =. They can't be excluded with !=.

Base Stats & Yields

Search by base stats or the Effort Values (EVs) granted when defeated.

FieldPrefixesExample
Hit Pointshp:hp>100
Attackatk:, attack:atk<=50
Defensedef:, defense:def:100
Sp. Atkspatk:spatk>=120
Sp. Defspdef:spdef!=80
Speedspd:, speed:spd>130
Base Stat Totalbst:bst>=500
Height (m)h:, height:height>=2.5
Weight (kg)w:, weight:weight<10.5
EV Yieldsevhp:, evatk:, evspd:, etc.evatk:3

Breeding & Training

Search by egg group, hatch time, gender ratio, and how fast a Pokémon levels.

FieldPrefixesExample
Egg Groupegg:, egggroup:egg:monster
Egg Cyclesec:, eggcycles:ec:5
Growth Rategrowth:growth:slow
Catch Ratecr:, catchrate:cr<50
Base Friendshipbf:, friendship:bf:0
Gender Ratio (% Female)gender:gender:100, gender:12.5, gender:none
Egg Steps

Only egg cycles are stored, so egg steps can't be searched. Use ec: instead.

Calculated Stats

RotomLabs can estimate stats at any level. By default, it assumes Level 50.

Max Stats

Assumes 31 IV, 252 EV, and a beneficial nature.

StatPrefixExample
Max HPmaxhpmaxhp>200
Max Attackmaxatkmaxatk>150
Max Defensemaxdefmaxdef>150
Max Sp. Atkmaxspatkmaxspatk>150
Max Sp. Defmaxspdefmaxspdef>150
Max Speedmaxspdmaxspd>200

Min Stats

Assumes 0 IV, 0 EV, and a hindering nature.

StatPrefixExample
Min HPminhpminhp:100
Min Attackminatkminatk<50
Min Defensemindefmindef<50
Min Sp. Atkminspatkminspatk<50
Min Sp. Defminspdefminspdef<50
Min Speedminspdminspd:50
Pro Tip: Specific Levels

Add [level] to any prefix to calculate at that level.
Example: maxspd[100]>400 (Top speed at level 100).

Note: Champions Data

For competitive "Champions" data, calculations always assume 31 IVs, regardless of whether you search for min or max stats.

Learnsets & Moves

Find Pokémon based on what they can learn and how they learn it.

MethodPrefix / OperatorExample
Any Methodmove: (fuzzy)
move= (exact)
move:earthquake
move=earthquake
Level Upmove[level]:
move[level]=
move[level]:"thunder punch"
move[level]="thunder-punch"
Egg Movemove[egg]:
move[egg]=
move[egg]:"dragon dance"
move[egg]="dragon-dance"
TM / HMmove[tm]:
move[tm]=
move[tm]:toxic
move[tm]=toxic
TRmove[tr]:move[tr]:"body press"
Tutormove[tutor]:move[tutor]:"draco meteor"
On Evolutionmove[evolve]:move[evolve]:crunch
Move Remindermove[reminder]:move[reminder]:"ancient power"
As a Pre-Evolutionmove[preevo]:move[preevo]:spore
Transfer Onlymove[transfer]:move[transfer]:"soft-boiled"
Eventmove[event]:move[event]:"happy hour"
Fuzzy vs. Exact

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).

Move Types & Effects

FilterPrefixesExample
Same-Type Attackstab:stab:fire
Status Move of a Typehas_status:, status:has_status:psychic
Inflicts a Conditioninflicts:inflicts:burn
Strong Againstsa:, 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.

Move Roles

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

Move Flags

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

Note

Roles and flags can't be excluded with !=. They follow each game, so Teleport only counts as a pivot from Gen 8 on.

Where to Find

Search by where and how a Pokémon is caught.

FieldPrefixesExample
Placefound: (fuzzy)
found= (exact)
found:"route 30"
found=south-province
Encounter Methodmethod:method:surf
Time of Daytime:time:night
Held Itemholds:, helditem:holds:"lucky egg"
Shiny Lockshinylock:shinylock:locked
Perfect IVsivsmethod:gift ivs:3
Fixed Ability or Naturefixed:fixed:hidden
Encounter Rate (%)raterate<5
One Encounter

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.

Advanced Filters

Target specific matchups, traits, and formats.

FilterKeywordsExample
Matchupsweak:, resist:, immune:weak:fire
Extreme Matchups4xweak:, 4xresist:4xweak:water
Move Types (Physical/Special)has_phys:, has_spec:has_spec:fire
Trait Tagsis:is:legendary, is:baby, is:final, is:paradox
Evolvesevolves:, evo:evolves:trade, evolves:"thunder stone", evolves<=20
Entries From Regionregion:, r:r:sinnoh (DPP & BDSP)
Gamegame:, g:game:scarlet
Generationgen:gen:8,9
Regulationreg:, format:reg:reg-g
Resistances, Immunities, and Weaknesses

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).

Sorting

Add sort: to order the results. A - in front puts the highest first.

You can also sort by name, natid, any base stat, height, weight, catchrate, generation, happiness, eggcycles, and growth.

Logical Operators

Combine filters with simple logic.

Searching Inside a Search

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.

Note

Braces go two levels deep, e.g. learner:{ability:{desc:"floating"}}. Use != to leave out what the inner search finds: a!={desc:"floating"}.

Moves Tab

On the Moves tab, words search move names and filters describe the move itself. Types, games, logic, and sorting work the same as above.

FieldPrefixesExample
Categorycat:, category:t:fire cat:physical
Powerp:, pow:, power:p>80
Accuracyacc:acc:100
PPpp:pp<10
Prioritypri:, priority:pri>0
Hits, Crit Stage, Recoil, Drain, Flinchhits:, crit:, recoil:, drain:, flinch:hits>1, flinch>0
Inflicts a Conditioninflicts:inflicts:burn
Super Effective Againstse:se:water
Learned Bylearner:, pkmn:learner:pikachu
Descriptiondesc:desc:"raises the user"
Roles & Flagsis:is:pivot, is:punch t:fire
Sortsort:t:fire sort:-power
p: on the Moves Tab

With a number, p: is power (p:80,90). With a word, it's the move's name (p:thunder).

Abilities Tab

On the Abilities tab, words search ability names.

Pokémon GO Tab

The Pokémon GO tab searches the GO dex. Names, types, is:, matchups, and logic work the same as above.

FieldPrefixesExample
Max CPcpcp>3500, cp[40]>=3000
GO Statsatk, def, staatk>250
Tagsis:is:shadow t:dragon, is:mega,primal
Raid Bossraid:raid:5, raid:now
Release & Shiny Datesreleased:, shiny:released>2024, shiny:event
Buddy Distance (km)buddybuddy<=3
Evolutionevolves:, evocandyevolves:"sinnoh stone", evocandy<=25
Movesfast:, charged:, move[elite]:fast:"mud shot", move[elite]:*
Costumecostume:costume:holiday
Sortsort:t:dragon sort:-cp
Unreleased Entries

GO search leaves out entries that aren't in the game yet, mostly Shadow forms. Add include:unreleased to see them.

No Immunities in GO

A main-series immunity counts as a double resist, so resist:fighting includes every Ghost type.