The Beginner’s Guide to PKHeX

PKHeX is a Pokémon save editor that is capable of editing save files across all generations of Pokémon games.

Getting Started with PKHeX

PKHeX is a Pokémon save editor that is capable of editing save files across all generations of Pokémon games. PKHeX is available on Windows systems (requires .NET Framework 4.6) and to macOS users via a compatibility layer like Wine or Apple's Boot Camp. Instructions on how to use PKHeX on Linux are provided on the project’s GitHub repository.

Tips: To run Pokémon Legends ZA using PKHeX, you need a torrent finder (click to download).

Supported Files

Data is displayed in a view which can be edited and saved. The interface can be translated with resource/external text files so that different languages can be supported.

PKHeX supports the following formats:

  • Save files ("main", *.sav, *.dsv, *.dat, *.gci, *.bin).
  • GameCube Memory Card files (*.raw, *.bin) containing GC Pokémon savegames.
  • Individual Pokémon entity files (.pk*, *.ck3, *.xk3, *.pb7, *.sk2, *.bk4).
  • Mystery Gift files (*.pgt, *.pcd, *.pgf, *.wc*) including conversion to .pk*.
  • Importing GO Park entities (*.gp1) including conversion to .pb7.
  • Importing teams from decrypted 3DS Battle Videos.
  • Transferring from one generation to another, converting formats along the way.

Showdown Sets

Showdown sets can be imported and exported for the Pokémon currently loaded to the tabs. Party and Battle Box may only be exported.

To export a Showdown set from tabs

  • Press CTRL + SHIFT + T.
  • ALT click the Species label.
  • Use Tools → Showdown → Export Set to Clipboard.

To import a Showdown set to tabs

  • Press CTRL + T.
  • CTRL click the Species label.
  • Use Tools → Showdown → Import Set from Clipboard.

Exporting Party/Battle Box sets

  • Click the "Party" or "Battle Box" label directly above the sprites.
  • Use Tools → Showdown → Export Party to Clipboard.
  • Use Tools → Showdown → Export Battle Box to Clipboard.

PKHeX Database

PKHeX can create a 'pkmdb' folder and store PKM files from all generations for later use—treat it like a personal Pokémon Bank.

The Database may be accessed via Tools → Data → Database, or by pressing CTRL + D. Pokémon from the active save file also appear in the Database, and you can search for specific properties using the filter options.

What can you do with the results?

  • View – Load the Pokémon into the main window to inspect every property and optionally send it back to the save file.
  • Delete – Permanently remove the file from the database (there is no undo).

Advanced search

Use the Batch Editor script command format for advanced filtering.

  • Open Tools → Search Settings → Advanced Search or press CTRL + A to access the input area.
  • Advanced filters apply after the regular GUI filters.
  • Refer to the Batch Editor tutorial for what values to enter.

Transferring Between Generations

PKHeX only supports transfer methods that the games themselves support, emulating the official process for you. Transfers can only move forwards—e.g., a pk7 cannot be imported to previous generations.

Individual transfer

  • Open two PKHeX instances: one with the source save and one with the destination save.
  • Drag and drop the Pokémon between the two windows.

Bulk transfer

  • Open the source save file and choose Tools → Data → Dump Boxes.
  • Save to PKHeX’s Database or to a folder (recommended).
  • Open the destination save file in another PKHeX instance.
  • Drag the folder of PKM files onto the save—box contents are overwritten with the imported Pokémon.

Using the Batch Editor

The Batch Editor is a powerful tool for applying mass modifications to Pokémon in a save file or folder. Use the built-in script builder to select properties to set or filter. Be cautious—there is no undo, and edited folders or save files are permanently changed unless you reload from backup.

Script command basics

  • . – Sets the property to the specified value.
  • .= – Requires the property to equal the specified value.
  • .! – Requires the property to NOT equal the specified value; if the condition fails, the Pokémon is skipped.

Batch Editor special tricks

  • The window references the Pokémon currently viewed in the editing tabs and hints at valid properties.
  • Randomize PID: use ".PID=$rand". Randomize EncryptionConstant: use ".EncryptionConstant=$rand".
  • Set a shiny PID with ".PID=$shiny" or copy the Encryption Constant to the PID with ".EC=PID".
  • Randomize within a range: ".Nature=$x,y" for an inclusive range.
  • Delete a Pokémon with ".Species=0" or set dates as yyyyMMdd, e.g., ".MetDate=20160409".
  • Apply legality suggestions with commands such as "Moves=$suggest".
  • Filter by legality using "=Legal=false" to only modify illegal Pokémon.
  • Remember that some generations lack certain properties—review changes carefully before saving.

Video Tutorial

Watch this walkthrough to see PKHeX in action: