Gen 1 Type Chart: A Generation Changes Reference
The Gen 1 type chart has 15 types. It is not interchangeable with the modern 18-type chart: Ghost attacks cannot affect Psychic in this chart, Bug and Poison interact differently, and Fire does not yet resist Ice. Use the matching chart when revisiting an older game or checking a type spreadsheet.
This reference compares three chart families: Gen 1, Gen 2–5, and Gen 6+. It separates changes to existing matchups from newly introduced types. The downloadable data records every chart-only result for one or two defending types, including theoretical combinations that no Pokémon actually has.
For a quick matchup, use the type calculator. For the rule changes and the data behind them, start below.
The Gen 1 type chart
Gen 1 includes Normal, Fire, Water, Electric, Grass, Ice, Fighting, Poison, Ground, Flying, Psychic, Bug, Rock, Ghost and Dragon. Dark and Steel join the later chart; Fairy joins the Gen 6+ chart.
Read across an attacking row → to a defending column ↓. Scroll inside the table to see every type.
| Attack ↓ Defend → | Normal | Fire | Water | Electric | Grass | Ice | Fighting | Poison | Ground | Flying | Psychic | Bug | Rock | Ghost | Dragon |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Normal | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | ½× | 0× | 1× |
| Fire | 1× | ½× | ½× | 1× | 2× | 2× | 1× | 1× | 1× | 1× | 1× | 2× | ½× | 1× | ½× |
| Water | 1× | 2× | ½× | 1× | ½× | 1× | 1× | 1× | 2× | 1× | 1× | 1× | 2× | 1× | ½× |
| Electric | 1× | 1× | 2× | ½× | ½× | 1× | 1× | 1× | 0× | 2× | 1× | 1× | 1× | 1× | ½× |
| Grass | 1× | ½× | 2× | 1× | ½× | 1× | 1× | ½× | 2× | ½× | 1× | ½× | 2× | 1× | ½× |
| Ice | 1× | 1× | ½× | 1× | 2× | ½× | 1× | 1× | 2× | 2× | 1× | 1× | 1× | 1× | 2× |
| Fighting | 2× | 1× | 1× | 1× | 1× | 2× | 1× | ½× | 1× | ½× | ½× | ½× | 2× | 0× | 1× |
| Poison | 1× | 1× | 1× | 1× | 2× | 1× | 1× | ½× | ½× | 1× | 1× | 2× | ½× | ½× | 1× |
| Ground | 1× | 2× | 1× | 2× | ½× | 1× | 1× | 2× | 1× | 0× | 1× | ½× | 2× | 1× | 1× |
| Flying | 1× | 1× | 1× | ½× | 2× | 1× | 2× | 1× | 1× | 1× | 1× | 2× | ½× | 1× | 1× |
| Psychic | 1× | 1× | 1× | 1× | 1× | 1× | 2× | 2× | 1× | 1× | ½× | 1× | 1× | 1× | 1× |
| Bug | 1× | ½× | 1× | 1× | 2× | 1× | ½× | 2× | 1× | ½× | 2× | 1× | 1× | ½× | 1× |
| Rock | 1× | 2× | 1× | 1× | 1× | 2× | ½× | 1× | ½× | 2× | 1× | 2× | 1× | 1× | 1× |
| Ghost | 0× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 0× | 1× | 1× | 2× | 1× |
| Dragon | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 1× | 2× |
0× immune · ½× resisted · 1× neutral · 2× super effective
What changed after Gen 1?
Compare an attack type with a defending type. These four entries change when the same 15 types are compared across the Gen 1 and Gen 2–5 inputs:
Dark and Steel introduce additional matchups. Those are additions to the available type set, rather than changed cells in a table whose two types already existed.
The next chart-family transition changes two entries among the existing 17 types:
Gen 2–5 → Gen 6+
| Attack → defender | Gen 2–5 | Gen 6+ | Data |
|---|---|---|---|
| Ghost → Steel | ½× | 1× | CSV row 61 |
| Dark → Steel | ½× | 1× | CSV row 62 |
Fairy adds another attacking row and defending column. Consult the full inputs when a Fairy interaction is involved; the two-row table above describes existing-type changes only.
These entries come from a fixed Pokémon Showdown source revision. The source files and their checksums are listed in the downloads. They were checked against the 838 cells across our three input tables. This is a source-consistency check, not a cartridge test.
How changes reach a dual-type result
In this disclosed model, multiply the attacking type’s factor against each defending type. An immunity makes the product zero. For a single defending type, use its factor once; never square it as if the Pokémon had two copies of that type.
Consider Bug attacking Grass/Poison. In the Gen 1 input, Bug is 2× against Grass and 2× against Poison, giving 4×. In the later chart, its ½× interaction with Poison changes the product to 1×. The combination has not changed; one input factor has.
Steel/Psychic gives a different example. A Ghost attack is 2× against Psychic in both later chart families. Steel reduces that to 1× in Gen 2–5, while the Gen 6+ product is 2×. The model makes the two factors visible so that a reader can check the arithmetic.
This multiplication is deliberately a limited chart model. Move exceptions and full Gen 1 battle behavior can differ; use a game-specific simulator when that distinction matters.
| Attack → defending pair | Earlier factors | Later factors |
|---|---|---|
| Bug → Grass/Poison | Gen 1 2 × 2 = 4× | Gen 2–5 2 × ½ = 1× |
| Ghost → Steel/Psychic | Gen 2–5 ½ × 2 = 1× | Gen 6+ 1 × 2 = 2× |
What the downloadable comparison covers
| Chart family | Types | Single | Distinct dual | Total profiles |
|---|---|---|---|---|
| Gen 1 | 15 | 15 | 105 | 120 |
| Gen 2–5 | 17 | 17 | 136 | 153 |
| Gen 6+ | 18 | 18 | 153 | 171 |
The total is n + n(n−1)/2. Reversing the order of two defending types does not create a new profile. These are mathematical type sets, not counts of species or combinations actually available in a particular game.
The v1 model generates 444 profiles and 7,479 attack-versus-profile results. For fair era comparisons, the change ledger uses only attacking and defending types shared by both eras. Under that restriction, 53 profiles change from Gen 1 to Gen 2–5 and 17 from Gen 2–5 to Gen 6+. The downloadable ledger records 92 changed attack/profile cells across those two comparisons. Adding new types is reported separately.
Complete shared-type change ledger
92 changed attack/profile cells across both transitions. Only attacking and defending types shared by the two eras are compared; newly added types are excluded from these changes.
Gen 1 → Gen 2–5: 59 changed cells in 53 profiles
| Attack | Defending profile | Before | After | CSV |
|---|---|---|---|---|
| Ice | Fire | 1× | ½× | Row 2 |
| Bug | Poison | 2× | ½× | Row 3 |
| Ghost | Psychic | 0× | 2× | Row 4 |
| Poison | Bug | 2× | 1× | Row 5 |
| Ice | Normal/Fire | 1× | ½× | Row 6 |
| Bug | Normal/Poison | 2× | ½× | Row 7 |
| Poison | Normal/Bug | 2× | 1× | Row 8 |
| Ice | Fire/Water | ½× | ¼× | Row 9 |
| Ice | Fire/Electric | 1× | ½× | Row 10 |
| Ice | Fire/Grass | 2× | 1× | Row 11 |
| Ice | Fire/Ice | ½× | ¼× | Row 12 |
| Ice | Fire/Fighting | 1× | ½× | Row 13 |
| Ice | Fire/Poison | 1× | ½× | Row 14 |
| Bug | Fire/Poison | 1× | ¼× | Row 15 |
| Ice | Fire/Ground | 2× | 1× | Row 16 |
| Ice | Fire/Flying | 2× | 1× | Row 17 |
| Ice | Fire/Psychic | 1× | ½× | Row 18 |
| Ghost | Fire/Psychic | 0× | 2× | Row 19 |
| Ice | Fire/Bug | 1× | ½× | Row 20 |
| Poison | Fire/Bug | 2× | 1× | Row 21 |
| Ice | Fire/Rock | 1× | ½× | Row 22 |
| Ice | Fire/Ghost | 1× | ½× | Row 23 |
| Ice | Fire/Dragon | 2× | 1× | Row 24 |
| Bug | Water/Poison | 2× | ½× | Row 25 |
| Ghost | Water/Psychic | 0× | 2× | Row 26 |
| Poison | Water/Bug | 2× | 1× | Row 27 |
| Bug | Electric/Poison | 2× | ½× | Row 28 |
| Ghost | Electric/Psychic | 0× | 2× | Row 29 |
| Poison | Electric/Bug | 2× | 1× | Row 30 |
| Bug | Grass/Poison | 4× | 1× | Row 31 |
| Ghost | Grass/Psychic | 0× | 2× | Row 32 |
| Poison | Grass/Bug | 4× | 2× | Row 33 |
| Bug | Ice/Poison | 2× | ½× | Row 34 |
| Ghost | Ice/Psychic | 0× | 2× | Row 35 |
| Poison | Ice/Bug | 2× | 1× | Row 36 |
| Bug | Fighting/Poison | 1× | ¼× | Row 37 |
| Ghost | Fighting/Psychic | 0× | 2× | Row 38 |
| Poison | Fighting/Bug | 2× | 1× | Row 39 |
| Bug | Poison/Ground | 2× | ½× | Row 40 |
| Bug | Poison/Flying | 1× | ¼× | Row 41 |
| Bug | Poison/Psychic | 4× | 1× | Row 42 |
| Ghost | Poison/Psychic | 0× | 2× | Row 43 |
| Poison | Poison/Bug | 1× | ½× | Row 44 |
| Bug | Poison/Bug | 2× | ½× | Row 45 |
| Bug | Poison/Rock | 2× | ½× | Row 46 |
| Bug | Poison/Ghost | 1× | ¼× | Row 47 |
| Bug | Poison/Dragon | 2× | ½× | Row 48 |
| Ghost | Ground/Psychic | 0× | 2× | Row 49 |
| Poison | Ground/Bug | 1× | ½× | Row 50 |
| Ghost | Flying/Psychic | 0× | 2× | Row 51 |
| Poison | Flying/Bug | 2× | 1× | Row 52 |
| Poison | Psychic/Bug | 2× | 1× | Row 53 |
| Ghost | Psychic/Bug | 0× | 2× | Row 54 |
| Ghost | Psychic/Rock | 0× | 2× | Row 55 |
| Ghost | Psychic/Ghost | 0× | 4× | Row 56 |
| Ghost | Psychic/Dragon | 0× | 2× | Row 57 |
| Poison | Bug/Rock | 1× | ½× | Row 58 |
| Poison | Bug/Ghost | 1× | ½× | Row 59 |
| Poison | Bug/Dragon | 2× | 1× | Row 60 |
Gen 2–5 → Gen 6+: 33 changed cells in 17 profiles
| Attack | Defending profile | Before | After | CSV |
|---|---|---|---|---|
| Ghost | Steel | ½× | 1× | Row 61 |
| Dark | Steel | ½× | 1× | Row 62 |
| Dark | Normal/Steel | ½× | 1× | Row 63 |
| Ghost | Fire/Steel | ½× | 1× | Row 64 |
| Dark | Fire/Steel | ½× | 1× | Row 65 |
| Ghost | Water/Steel | ½× | 1× | Row 66 |
| Dark | Water/Steel | ½× | 1× | Row 67 |
| Ghost | Electric/Steel | ½× | 1× | Row 68 |
| Dark | Electric/Steel | ½× | 1× | Row 69 |
| Ghost | Grass/Steel | ½× | 1× | Row 70 |
| Dark | Grass/Steel | ½× | 1× | Row 71 |
| Ghost | Ice/Steel | ½× | 1× | Row 72 |
| Dark | Ice/Steel | ½× | 1× | Row 73 |
| Ghost | Fighting/Steel | ½× | 1× | Row 74 |
| Dark | Fighting/Steel | ¼× | ½× | Row 75 |
| Ghost | Poison/Steel | ½× | 1× | Row 76 |
| Dark | Poison/Steel | ½× | 1× | Row 77 |
| Ghost | Ground/Steel | ½× | 1× | Row 78 |
| Dark | Ground/Steel | ½× | 1× | Row 79 |
| Ghost | Flying/Steel | ½× | 1× | Row 80 |
| Dark | Flying/Steel | ½× | 1× | Row 81 |
| Ghost | Psychic/Steel | 1× | 2× | Row 82 |
| Dark | Psychic/Steel | 1× | 2× | Row 83 |
| Ghost | Bug/Steel | ½× | 1× | Row 84 |
| Dark | Bug/Steel | ½× | 1× | Row 85 |
| Ghost | Rock/Steel | ½× | 1× | Row 86 |
| Dark | Rock/Steel | ½× | 1× | Row 87 |
| Ghost | Ghost/Steel | 1× | 2× | Row 88 |
| Dark | Ghost/Steel | 1× | 2× | Row 89 |
| Ghost | Dragon/Steel | ½× | 1× | Row 90 |
| Dark | Dragon/Steel | ½× | 1× | Row 91 |
| Ghost | Dark/Steel | ¼× | ½× | Row 92 |
| Dark | Dark/Steel | ¼× | ½× | Row 93 |
Sources, reproduction and corrections
Version 1.0.0 · 23 October 2026 · Published by TypeChart, an independent fan tool.
The official Pokémon type chart is useful for current-game background and explicitly notes that affinity can differ by game. Our historical inputs use the pinned, MIT-licensed Showdown implementation. The source establishes the inputs; TypeChart’s enumerated profiles and comparison ledger are our own derived outputs. Neither source endorses this reference.
Download the inputs, results, change ledger, method, scope notes, source version, license and Python script from the data links below. Place the script beside charts-v1.json and run python3 reproduce-v1.py using Python 3’s standard library. No network access or additional package is required. The script regenerates the JSON results and CSV changes.
Scope and limits
This reference does not include abilities, items, weather, special move interactions, inverse battles, Terastallization or Stellar mechanics. It does not apply Pokémon GO or Trading Card Game rules. It does not model every Gen 1 bug, damage rounding, or battle message. “Gen 6+” names the pinned standard chart family, not a promise to cover every later game mechanic.
A resistance count is not a measure of competitive strength. Stats, moves, abilities, availability and a team’s actual opponents matter. No battle win rate, damage estimate or species usage claim follows from these tables.
Found a mismatch? Send a correction with the game, attack type, defending type or pair, and a source or reproducible example. Changes to inputs or methods receive a new data version and a dated correction note.
Version 1 data downloads
Each file belongs to the 23 October 2026 v1.0.0 snapshot. Keep the source license with the input data.
- Methodology JSON
- Enumeration method, scope and reproduction command.
- Sources JSON
- Source URLs, dates and what each source supports.
- Full results JSON
- All 444 defensive profiles and 7,479 attack/profile results.
- Change ledger CSV
- All 92 changed attack/profile cells between shared types.
- Chart inputs JSON
- The three defender-first type tables used in this comparison.
- Reproduction script Python
- Regenerate results and changes offline with Python 3.
- Limitations JSON
- Excluded mechanics and interpretation boundaries.
- Showdown license TXT
- MIT license retained with the source-derived inputs.
- Source version JSON
- Pinned upstream revision and input-file checksums.