Path of Exile Developer Docs

File Formats

Some features of the game can use files that can be created manually or by tools.

Item Filters

Item Filters allow you to customise the way loot labels appear. You can edit the size, colour, or even hide item drops entirely. See our dedicated Item Filter page for more information.

Build Planner (PoE2 only)

The Build Planner is a game-wide build instructor that integrates with mission-critical systems such as skills, crafting, passives, and ascendancy.
Designed for players to import builds from third-party sources, the Build Planner functions as a plug-and-play feature.
Editing or creating builds within Path Of Exile 2 is currently not supported.

Usage

To activate the Build Planner, at least one valid *.build file should be present. (See guide below)
Once our automated File Watcher system successfully detects a valid build, all features of the Build Planner will be activated and visible.

Build Directory

When attempting to load build files into Path Of Exile 2, the game expects a *.build file written in JSON format.
Our automated File Watcher system has been designed to detect changes in the Preferences/BuildPlanner directory. All *.build files should be added here.

Use the following platform-specific guide below to help locate the Preferences/BuildPlanner directory:

Windows
Default Location: C:/Users/Name/Documents/My Games/Path of Exile 2/BuildPlanner
SteamOS
Default Location: /home/deck/.local/share/Steam/steamapps/compatdata/2315204395/pfx/drive_c/users/steamuser/Documents/My Games/Path of Exile 2/BuildPlanner

Build File Format

Version: 1 (Experimental)
Build files are comprised of a single JSON root object with the following members:

object Build

Key Type
name string
author ?string
description ?string
ascendancy ?string
passives ?array of (string or BuildPassive)
skills ?array of (string or BuildSkill)
inventory_slots ?array of BuildInventorySlot

object BuildPassive

Referenced by Build→passives.

Used to define passives for the build. Visible in the Passive Skill Tree.

Key Type Extra Information
id string a PassiveSkills table id. Example: strength89
level_interval ?(array of uint, or uint) a level range. Example: [0, 100]
weapon_set ?uint a weapon set index between 0 and 2 (inclusive)
additional_text ?string text that is shown when the passive is hovered over in-game

object BuildSkill

Referenced by Build→skills.

Used to define skills for the build. Accessible from an Uncut Skill Gem and/or Uncut Spirit Gem.

Meta gems are currently not supported.

Key Type Extra Information
id string a BaseItemTypes table id. Example: Metadata/Items/Gems/SkillGemEarthquake
level_interval ?(array of uint, or uint) a level range. Example: [0, 100]
additional_text ?string text that is shown when the skill is hovered over in a gem crafting window
support_skills ?array of (string or BuildSupport)

object BuildSupport

Referenced by BuildSkill→support_skills.

Used to define support skills for a given parent skill. Accessible from an Uncut Support Gem and/or Uncut Spirit Gem.

Key Type Extra Information
id string a BaseItemTypes table id. Example "Metadata/Items/Gems/SupportGemFastForward"
level_interval ?(array of uint, or uint) a level range. Example: [0, 100]
additional_text ?string text that is shown when the support is hovered over in a gem crafting window

object BuildInventorySlot

Referenced by Build→inventory_slots.

Used to show hints on inventory slots for the build. Visible in the character inventory panel.

Key Type Extra Information
inventory_id string an Inventories table id. Example "Weapon1"
slot_x ?uint defaults to 0
slot_y ?uint defaults to 0
level_interval ?(array of uint, or uint) a level range. Example: [0, 100]
unique_name ?string a UniqueName entry from the Words table. Example "Kalandra's Touch"
additional_text ?string text to show when the inventory slot build planner popup indicator is hovered

Markup Support

Markup formatting is available when defining the additional_text field.

The available markup modification keywords, and there associated values, are as follows:

Font

Key Value Example
Regular r <r>{ Example Text }
Bold b <b>{ Example Text }
Italics i <i>{ Example Text }
Underline u <u>{ Example Text }
Small s <s>{ Example Text }
Medium m <m>{ Example Text }
Large l <l>{ Example Text }

Colours

Key Example
Red <red>{ Example Text }
Orange <orange>{ Example Text }
Yellow <yellow>{ Example Text }
Green <green>{ Example Text }
Blue <blue>{ Example Text }
Indigo <indigo>{ Example Text }
Violet <violet>{ Example Text }
Black <black>{ Example Text }
White <white>{ Example Text }
Grey <grey>{ Example Text }
Bronze <bronze>{ Example Text }
Silver <silver>{ Example Text }
Gold <gold>{ Example Text }
Unique <unique>{ Example Text }
Custom <rgb(255, 255, 255)>{ Example Text }

Example Build

{
    "name": "Titan Warrior",
    "author": "Grinding Gear Games",
    "ascendancy": "Warrior1",
    "passives": 
    [
        "melee17",
        "melee18",
        "melee25",
        "melee44",
        "melee46",
        "marauder_brute_notable1",
        {
            "id": "strength17",
            "additional_text": "<m>{<red>{Strength +5 is recommended}}"
        },
        {
            "id": "strength16",
            "additional_text": "<m>{<red>{Strength +5 is recommended}}"
        },
        {
            "id": "strength89",
            "additional_text": "<m>{<red>{Strength +5 is recommended}}"
        },
        {
            "id": "attributes65",
            "additional_text": "<m>{<red>{Strength +5 is recommended}}"
        },
        "duration_spells5",
        "duration_spells1",
        "duration_spells6",
        "area_attacks24",
        "area_attacks32",
        "area_attacks25_",
        "melee19",
        {
            "id": "strength19",
            "additional_text": "<m>{<blue>{Intelligence +5 is recommended}}"
        },
        "fire10",
        "fire16",
        "fire38",
        {
            "id": "strength21",
            "additional_text": "<m>{<red>{Strength +5 is recommended}}"
        },
        {
            "id": "strength15",
            "additional_text": "<m>{<red>{Strength +5 is recommended}}"
        },
        {
            "id": "attributes32",
            "additional_text": "<m>{<red>{Strength +5 is recommended}}"
        },
        "warcries19_",
        "warcries20",
        "warcries21",
        "slams4",
        "slams1",
        "slams5",
        "jewel_slot1956",
        {
            "id": "strength68",
            "additional_text": "<m>{<red>{Strength +5 is recommended}}"
        },
        "AscendancyWarrior1Small3",
        "AscendancyWarrior1Notable4"
    ],
    "skills": 
    [
        {
            "id": "Metadata/Items/Gems/SkillGemEarthquake",
            "additional_text": "Intended to be taken <green>{BEFORE} BoneShatter",
            "support_skills":
            [
                "Metadata/Items/Gems/SupportGemFastForward",
                "Metadata/Items/Gems/SupportGemAftershock"
            ]
        },
        {
            "id": "Metadata/Items/Gems/SkillGemBoneshatter",
            "additional_text": "Intended to be taken <red>{AFTER} Earthquake",
            "support_skills":
            [
                {
                    "id": "Metadata/Items/Gems/SupportGemImpactShockwave",
                    "additional_text": "Intended to be taken <green>{BEFORE} Magnified Area I"
                },
                {
                    "id": "Metadata/Items/Gems/SupportGemMagnifiedEffect",
                    "additional_text": "Intended to be taken <red>{AFTER} Impact Shockwave"
                }
            ]
        },
        {
            "id": "Metadata/Items/Gems/SkillGemShockwaveTotem",
            "additional_text": "Intended to be taken <green>{BEFORE} Infernal Cry",
            "support_skills":
            [
                "Metadata/Items/Gems/SupportGemMagnifiedEffect",
                "Metadata/Items/Gems/SupportGemBrutalityTwo"
            ]
        },
        {
            "id": "Metadata/Items/Gems/SkillGemInfernalCry",
            "additional_text": "Intended to be taken <red>{AFTER} Shockwave Totem",
            "support_skills": 
            [
                "Metadata/Items/Gem/SupportGemTireless",
                "Metadata/Items/Gem/SupportGemRagingCry"
            ]
        }
    ],
    "inventory_slots": 
    [
        {
            "inventory_id": "Weapon1",
            "additional_text": "<silver>{Any Two Handed Mace}\n\n<grey>{Stat Priority\n-------------------\n1. Prioritize highest physical dps}"
        },
        {
            "inventory_id": "BodyArmour1",
            "additional_text": "<red>{Armour (Str Base)}\n\n<grey>{Stat Priority\n-------------------\n1. Increased Health\n2. Increased Resistances\n3. Increased Armour}"
        },
        {
            "inventory_id": "Boots1",
            "additional_text": "<red>{Armour (Str Base)}\n\n<grey>{Stat Priority\n-------------------\n1. Increased Movement Speed\n2. Increased Health\n3. Increased Resistances\n4. Increased Armour}"
        },
        {
            "inventory_id": "Helm1",
            "additional_text": "<red>{Armour (Str Base)}\n\n<grey>{Stat Priority\n-------------------\n1. Increased Health\n2. Increased Resistances\n3. Increased Armour}"
        },
        {
            "inventory_id": "Gloves1",
            "additional_text": "<red>{Armour (Str Base)}\n\n<grey>{Stat Priority\n-------------------\n1. Increased Attack Speed\n2. Flat damage to attacks\n3. Increased Life\n4. Increased Resistances}"
        },
        {
            "inventory_id": "Belt1",
            "additional_text": "<silver>{Any Belt}\n\n<grey>{Stat Priority\n-------------------\n1. Increased Health\n2. Increased Resistances}"
        },
        {
            "inventory_id": "Ring1",
            "additional_text": "<silver>{Any Ring (Resistance Base)}\n\n<grey>{Stat Priority\n-------------------\n1. Flat damage to attacks\n2. Increased Life\n3. Increased Resistances}"
        },
        {
            "inventory_id": "Ring2",
            "additional_text": "<silver>{Any Ring (Resistance Base)}\n\n<grey>{Stat Priority\n-------------------\n1. Flat damage to attacks\n2. Increased Life\n3. Increased Resistances}"
        },
        {
            "inventory_id": "Amulet1",
            "additional_text": "<silver>{Any Amulet}\n\n<grey>{Stat Priority\n-------------------\n1. Level of all melee skills\n2. Increased Resistances\n3. Increased Intelligence\n4. Increased Life}"
        }
    ]
}