A PokeQL query is a list of filters ANDed together by default -- resists:fighting has:intimidate finds pokemon that both resist Fighting and can have Intimidate. This page documents every filter, grouped by category, with a real example for each.
A query is a list of filters, each a key and a value (key:value), ANDed together by default. what: picks what kind of thing you're searching for -- pokemon, move, or ability -- and defaults to pokemon if omitted.
| Keyword | Description | Example |
|---|---|---|
what:pokemon | Search pokemon (the default -- can be omitted). | resists:fighting has:intimidate |
what:move | Search moves instead of pokemon. | what:move category:status effect:buff |
what:ability | Search abilities instead of pokemon. | what:ability effect:weather |
name:<text> | Free-text name search (substring, case/punctuation-insensitive). Any bare word that doesn't parse as a filter falls through to this automatically. | arma |
Filter values are matched after stripping spaces and punctuation, so a few spellings of the same thing all work. Stats and status conditions also accept common aliases.
| Keyword | Description | Example |
|---|---|---|
resists:closecombat | Spaces/hyphens in a value are ignored -- "close combat" and "close-combat" both match. | resists:"close combat" |
hp / atk / attack | Stat aliases: atk=attack, def=defense, spa=special_attack, spd=special_defense, spe=speed. | spe>100 |
brn / burn / burned | Status aliases: par/paralyze(d), frz/freeze/frozen, slp/sleep/asleep, psn/poison(ed), tox/toxic (kept distinct from psn). | status:tox |
Negate any filter with a leading -. Group filters with parens and use or for boolean OR (default outside a group is AND). Use | inside one filter's value for OR across values of that single filter.
| Keyword | Description | Example |
|---|---|---|
-type:fire | Negates a filter. For threshold filters (weak/resists/etc.) negation means "not strictly that", not "the opposite". | -weak:fighting |
(a or b) | Parens group filters; or is boolean OR within the group. | (type:fire or type:water) gen:8 |
a|b | Pipe inside one filter's value ORs across values for that filter. | learns:fakeout|followme |
key:(subquery) | A filter value can itself be a parenthesized sub-query, run against the implied what: for that filter. | learns:(category:status effect:buff) |
Direct column filters use arithmetic comparison (=, >, <, >=, <=), and apply wherever the referenced column exists for the current what:.
| Keyword | Description | Example |
|---|---|---|
type:<type> | Pokemon or move's type. | type:fire |
hp / atk / def / spa / spd / spe | Base stat comparisons. | hp>90 |
speed>120 | Any stat column supports comparison operators. | speed>120 |
Broad effect categories via effect:<category>, plus dedicated fields for stat changes and status. On a pokemon query, buffs:/debuffs:/effect:buff/effect:debuff mean "some move this pokemon learns, or some ability it can have, does this".
| Keyword | Description | Example |
|---|---|---|
effect:buff / effect:debuff | Move or ability raises/lowers a stat. | effect:buff |
effect:status | Causes a non-volatile status condition. | effect:status |
effect:vstatus | Causes a volatile status (confusion, flinch, trap, taunt, etc.). | effect:vstatus |
buffs:<stat> / buffs:<stat>:<amount> | Raises the given stat, optionally by an exact number of stages. | buffs:atk:2 |
debuffs:<stat> / debuffs:<stat>:<amount> | Lowers the given stat, optionally by an exact number of stages. | debuffs:def |
status:<status> | Causes a specific status (using the canonicalization aliases above). | status:burn |
vstatus:<vstatus> | Causes a specific volatile status. | vstatus:confused |
effect:hazard | Entry hazard (Stealth Rock, Spikes, Toxic Spikes, Sticky Web). | effect:hazard |
effect:screen | Team-wide defensive side condition (Reflect, Light Screen, Aurora Veil). | effect:screen |
effect:weather / effect:terrain | Sets weather or terrain. | effect:weather |
effect:heal / effect:recoil | Self-heal / drain, or recoil/HP-cost moves. | effect:heal |
effect:multihit / effect:priority | Multi-hit moves, or any move with nonzero priority. | effect:priority |
effect:protect / effect:protect-pierce | Protect-family moves, or moves that break/bypass protect. | effect:protect |
effect:ohko / effect:fixed-damage | One-hit-KO moves, or fixed set-damage moves. | effect:ohko |
effect:sound / effect:contact / ... | Flag-gated mechanic tags: sound, contact, punch, bite, bullet, powder, pulse, slicing. | effect:sound |
effect:crit | High-crit-ratio or always-crit moves. | effect:crit |
effect:copy-move / effect:delayed | Moves that call/copy another move, or have a delayed effect (Future Sight, Wish). | effect:copy-move |
effect:pivot | Moves that switch their own user out (U-turn, Volt Switch, Flip Turn, Baton Pass, Teleport, Parting Shot). | what:move effect:pivot |
effect:force-switch-target | Moves that force the opponent out (Roar, Whirlwind, Dragon Tail). | what:move effect:force-switch-target |
sort: is a query-level directive (like what:), not a filter -- it can't be negated, grouped, or OR'd. Default direction is descending; if sort: appears more than once, the last one wins.
| Keyword | Description | Example |
|---|---|---|
sort:<column> | Sort by column, descending by default. | sort:hp |
sort:<column>:asc / :desc | Sort ascending or descending explicitly. | sort:speed:asc |
Filters combine freely, including sub-queries as filter values.
| Keyword | Description | Example |
|---|---|---|
learns:(...) | A move sub-query, run against a pokemon's learnset. | resists:closecombat learns:(category:status effect:buff) |
Three distinct filters: availability in a generation (dexit-aware), the generation a pokemon was introduced in, and its region of origin.
| Keyword | Description | Example |
|---|---|---|
gen:<N> | Pokemon available in generation N's games, including earlier-gen pokemon that weren't dexited out. Also scopes the ability list shown on each result card to just that generation's abilities, tagged with a [gen:N] pill. | gen:8 -type:water |
introgen:<N> | Pokemon introduced in generation N specifically, regardless of later dexit. | introgen:2 |
region:<name> | Pokemon whose region of origin is <name> (kanto, johto, hoenn, sinnoh, unova, kalos, alola, galar, hisui, paldea). | introgen:6 region:hoenn |
A pokemon's defensive multiplier against an attacking type, computed across both of its types. A move name is also a valid value (resists:closecombat infers resists:fighting via the move's own type). immune: also includes ability-granted immunities (e.g. Volt Absorb).
| Keyword | Description | Example |
|---|---|---|
weak:<type|move> | Takes super-effective damage (multiplier > 1) from the type or move. | weak:ice |
resists:<type|move> | Takes reduced damage (0 < multiplier < 1), excluding immunity. | resists:fighting |
immune:<type|move> | Takes no damage (multiplier = 0) -- by typing or by a granted ability immunity (e.g. Jolteon + Volt Absorb). | immune:electric |
4xweak: / quadweak:<type> | Takes 4x damage (both types weak to it). | 4xweak:ice |
4xresists: / quadresists:<type> | Takes 1/4 damage (both types resist it). | quadresists:grass |
Compare a stat directly against a named pokemon's own value, instead of a fixed number -- works with every comparison operator, not just >, and with bst too. (v5: outspeeds:<pokemon> was removed -- spe>=<pokemon> covers the same case and more.)
| Keyword | Description | Example |
|---|---|---|
spe>=<pokemon> | Base stat comparison against a named pokemon's own value for that stat. | spe>=tyranitar |
bst><pokemon> | Same mechanism for bst (base stat total). | bst>tyranitar |
Filter pokemon by what they can learn or have.
| Keyword | Description | Example |
|---|---|---|
learns: / move:<move> | Pokemon that can learn this move. | learns:freezedry |
has: / ability:<ability> | Pokemon that can have this ability. | has:intimidate |
Smogon tier (needs a co-occurring gen: to pick which generation's tier list to check) and VGC regulation legality.
| Keyword | Description | Example |
|---|---|---|
gen:<N> tier:<tier> | Pokemon in the given Smogon tier for that generation (uber, ou, uu, ru, nu, pu, zu, uubl/rubl/nubl/publ/zubl, nfe, lc, ag). | gen:3 tier:ou |
format:<name> | Pokemon legal in a named competitive format (championsma/championsmb/championsmc for the VGC regulations; champions always means the latest one, championsmc today). | format:champions |
The reverse direction: a move's own effectiveness against a type or pokemon, rather than a pokemon's defensive multiplier. Computed against the target's up to two types, typing only (doesn't factor in the target's own ability immunities).
| Keyword | Description | Example |
|---|---|---|
supereffective: / se:<type|pokemon> | The move's effectiveness against the value is > 1. | what:move se:staraptor |
resisted:<type|pokemon> | The move's effectiveness is between 0 and 1 (resisted, not immune). | what:move resisted:skarmory |
immune:<type|pokemon> | The move's effectiveness is exactly 0 (a hard type immunity). | what:move immune:gengar |
thuds:<type|pokemon> | Shorthand for resisted: OR immune: -- the move doesn't hit hard against the target. | what:move thuds:steel |
4xeffective: / quadeffective: / extremelyeffective: / 4xse: / quadse:<type|pokemon> | The move's effectiveness against the value is exactly 4x (both types weak to it). | what:move quadeffective:charizard |
4xresisted: / quadresisted:<type|pokemon> | The move's effectiveness against the value is exactly 1/4x (both types resist it). | what:move quadresisted:skarmory |