← Back to search

PokeQL syntax

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.

Basics

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.

KeywordDescriptionExample
what:pokemonSearch pokemon (the default -- can be omitted).resists:fighting has:intimidate
what:moveSearch moves instead of pokemon.what:move category:status effect:buff
what:abilitySearch 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

Canonicalization

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.

KeywordDescriptionExample
resists:closecombatSpaces/hyphens in a value are ignored -- "close combat" and "close-combat" both match.resists:"close combat"
hp / atk / attackStat aliases: atk=attack, def=defense, spa=special_attack, spd=special_defense, spe=speed.spe>100
brn / burn / burnedStatus aliases: par/paralyze(d), frz/freeze/frozen, slp/sleep/asleep, psn/poison(ed), tox/toxic (kept distinct from psn).status:tox

Modifiers, negation, grouping

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.

KeywordDescriptionExample
-type:fireNegates 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|bPipe 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)

Column filters

Direct column filters use arithmetic comparison (=, >, <, >=, <=), and apply wherever the referenced column exists for the current what:.

KeywordDescriptionExample
type:<type>Pokemon or move's type.type:fire
hp / atk / def / spa / spd / speBase stat comparisons.hp>90
speed>120Any stat column supports comparison operators.speed>120

Effects

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

KeywordDescriptionExample
effect:buff / effect:debuffMove or ability raises/lowers a stat.effect:buff
effect:statusCauses a non-volatile status condition.effect:status
effect:vstatusCauses 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:hazardEntry hazard (Stealth Rock, Spikes, Toxic Spikes, Sticky Web).effect:hazard
effect:screenTeam-wide defensive side condition (Reflect, Light Screen, Aurora Veil).effect:screen
effect:weather / effect:terrainSets weather or terrain.effect:weather
effect:heal / effect:recoilSelf-heal / drain, or recoil/HP-cost moves.effect:heal
effect:multihit / effect:priorityMulti-hit moves, or any move with nonzero priority.effect:priority
effect:protect / effect:protect-pierceProtect-family moves, or moves that break/bypass protect.effect:protect
effect:ohko / effect:fixed-damageOne-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:critHigh-crit-ratio or always-crit moves.effect:crit
effect:copy-move / effect:delayedMoves that call/copy another move, or have a delayed effect (Future Sight, Wish).effect:copy-move
effect:pivotMoves that switch their own user out (U-turn, Volt Switch, Flip Turn, Baton Pass, Teleport, Parting Shot).what:move effect:pivot
effect:force-switch-targetMoves that force the opponent out (Roar, Whirlwind, Dragon Tail).what:move effect:force-switch-target

Sort

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.

KeywordDescriptionExample
sort:<column>Sort by column, descending by default.sort:hp
sort:<column>:asc / :descSort ascending or descending explicitly.sort:speed:asc

Compound queries

Filters combine freely, including sub-queries as filter values.

KeywordDescriptionExample
learns:(...)A move sub-query, run against a pokemon's learnset.resists:closecombat learns:(category:status effect:buff)

Generation & region

Three distinct filters: availability in a generation (dexit-aware), the generation a pokemon was introduced in, and its region of origin.

KeywordDescriptionExample
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

Type interactions (defending pokemon)

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

KeywordDescriptionExample
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

Stat interactions

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

KeywordDescriptionExample
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

Moves & abilities

Filter pokemon by what they can learn or have.

KeywordDescriptionExample
learns: / move:<move>Pokemon that can learn this move.learns:freezedry
has: / ability:<ability>Pokemon that can have this ability.has:intimidate

Competitive legality

Smogon tier (needs a co-occurring gen: to pick which generation's tier list to check) and VGC regulation legality.

KeywordDescriptionExample
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

Move effectiveness (what:move only)

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

KeywordDescriptionExample
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