This guide will cover the updated Item Filter Editor.
Please read everything and try to get your filters working on your own before asking for help making filters. Making custom filters for users will not be a high priority now that there is this guide. If anything is unclear or we need more examples, we certainly will add them, but we will not do your work for you if you feel it's too complicated or don't want to mess with it.
The default item filter will be located in the path "Settings\Item Filters\StaticItemFilter.json". The file uses a JSON format.
Important: As of 1.2 the affix stat system in Path of Exile has changed. Implicit and Explicit affixes are now merged, so there is no longer any way to process the data like previously possible. This means any affix filtering will be inaccurate if you're relying on Implicit or Explicit values being a certain value. In essence, users now need to filter by TotalStat instead, as ImplicitStat and ExplicitStat now TotalStat in the game itself. ImplicitStat and ExplicitStat have not been removed as tokens though, so users don't have to redo filters.
Opening the Item Filter:
1. Click on the "Tools" tab to change the gui panel to the tools panel.
2. Click on the "Item Filter Editor" button to launch the gui.
Main Overview:
The left most panel named "Categories & Filters" contains the filters for each category supported. From this panel you can select Categories or Filters to work with.
The right most panel named "Settings" will display a gui for editing filters or categories depending on what is selected.
At any time, you can click on "Save" to save the current filter and categories or "Save As" to save it under a different name for your current character.
Categories & Filters Overview:
Settings Overview:
Misc:
Please read everything and try to get your filters working on your own before asking for help making filters. Making custom filters for users will not be a high priority now that there is this guide. If anything is unclear or we need more examples, we certainly will add them, but we will not do your work for you if you feel it's too complicated or don't want to mess with it.
The default item filter will be located in the path "Settings\Item Filters\StaticItemFilter.json". The file uses a JSON format.
Important: As of 1.2 the affix stat system in Path of Exile has changed. Implicit and Explicit affixes are now merged, so there is no longer any way to process the data like previously possible. This means any affix filtering will be inaccurate if you're relying on Implicit or Explicit values being a certain value. In essence, users now need to filter by TotalStat instead, as ImplicitStat and ExplicitStat now TotalStat in the game itself. ImplicitStat and ExplicitStat have not been removed as tokens though, so users don't have to redo filters.
Opening the Item Filter:
1. Click on the "Tools" tab to change the gui panel to the tools panel.
2. Click on the "Item Filter Editor" button to launch the gui.
Main Overview:

The right most panel named "Settings" will display a gui for editing filters or categories depending on what is selected.
At any time, you can click on "Save" to save the current filter and categories or "Save As" to save it under a different name for your current character.
When a Category is selected, the right panel will look like this:
There are 4 main types of Categories implemented:
From the Settings panel you can change the Description if needed or the actual Category type. You can click on the "Save Category" button to save the category.
If you right click inside the "Categories & Filters" panel when a Category is selected, you'll be able to:
When a Filter is selected, the right panel will look like this:
From the Settings panel you can change the various settings of the filter.
If you right click inside the "Categories & Filters" panel when a Filter is selected, you'll be able to:

There are 4 main types of Categories implemented:
- Pickup - An item that matches these filters will be looted.
- DoNotSell - An item that matches these filters will never be sold. These filters are what the old Stash filters were meant to be.
- Sell - An item that matches these filters will be vendored if and only if it does not match any DoNotSell filters.
- Id- An item that matches these filters will be identified.
From the Settings panel you can change the Description if needed or the actual Category type. You can click on the "Save Category" button to save the category.
If you right click inside the "Categories & Filters" panel when a Category is selected, you'll be able to:
- Add a new category by clicking on "Add Category...".
- Delete the selected category by clicking on "Delete Category".
- Add a new filter to the category by clicking on "Add Filter...".

When a Filter is selected, the right panel will look like this:
From the Settings panel you can change the various settings of the filter.
If you right click inside the "Categories & Filters" panel when a Filter is selected, you'll be able to:
- Delete the selected filter by clicking on "Delete Filter".
- Enable the selected filter by clicking on "Enable Filter".
- Disable the selected filter by clicking on "Disable Filter". Disabled filters appear with a red background.
Description - The description for the filter.
Names and Types - Settings for filtering by name or type.
Rarities - Settings for filtering by item rarity.
Socket Colors - Settings for filtering by socket colors.
Socket Count - Settings for filtering by socket count.
Links - Settings for filtering by socket links.
Item Size - Settings for filtering by item size.
Item Level - Settings for filtering by item level.
Quality - Settings for filtering by item quality.
Affixes - Settings for filtering by item stats.
Identified - Settings for filtering by item identification.
Names and Types - Settings for filtering by name or type.
To filter by name or type, please refer to the current BaseItemTypes file linked on the Exilebuddy (SotV) Release/Beta Revision Guide. This file typically changes every few weeks, so in order to stay up to date, please check for updates. The version linked in this guide is for client version 1.1.2.1.
Filtering is done by partial string matches. When "Regex" is checked, the names/types will be matched using Regex. When Regex is unchecked or in the indeterminate state (square or X depending on your theme), Regex matching is not done (which is the default behavior). Regex is an advanced feature added for power users who know how to use it already, so it won't be covered much.
"Match Any" is a way for users to match any of the items they specify. By default, it is in the "indeterminate state", which for this setting is the same as placing a checkmark in the box. The reason why there are two settings that mean the same thing is as follows: rather than having to have every setting in your filter with a correct value, we can ignore settings that have "no value". When a checkbox is in the "indeterminate state", it has "no value", so it's not adding useless default values your filters.
When "Match Any" is unchecked, the filter matching process changes to not match anything listed in the name/type box. For example, let's say you want to pickup all currency items except "Scroll of Wisdom". Rather than having to type the names of all currency except Scroll of Wisdom and leaving "Match Any" in the indeterminate state (or checked), a user could only enter the name "Scroll of Wisdom", and uncheck "Match Any". Assuming the Rarity has been set to currency, the bot would then pickup all currency that did not match the name "Scroll of Wisdom".
Filtering by name:
If you want to filter specific items, you'd enter their item name. As long as the name does not overlap with any other name, you will only get one match. You can also filter by partial name matches to cover more item types, but no all item types follow the same naming convention. For example, if you were to enter "Ring", you'd match all rings, as well as any other item that had ring in it's name, so things like "Ringmail" for example. That is why you'd use the type matching instead.
One last note, the names listed on base item types are the only names you can use. You cannot filter by unique name, because the matching is for the actual item name and not the "full name". Through the current filter setup, you could not identify all unique "Occultist's Vestment" and then vendor "Infernal Mantle", as it's only checking the base item name.
Filtering by type:
If you want to filter by all belt types for example, you'd enter "/Belts/" because that is a partial string that matches all belt types, and doesn't conflict with anything else. You could also have used "Metadata/Items/Belts/". If you wanted to filter by all ring types, you'd use "/Rings/". Let's say you wanted to filter all Str shields, which would be "/ShieldStr". The problem then is that the string would also match Str/Dex shields which contain that string in their name: "Metadata/Items/Armours/Shields/ShieldStrDex1". To solve this, you can use regex instead to make a filter that matches "ShieldStr" followed by only a number.
If no type or names are entered, this filter setting is not processed.
Filtering is done by partial string matches. When "Regex" is checked, the names/types will be matched using Regex. When Regex is unchecked or in the indeterminate state (square or X depending on your theme), Regex matching is not done (which is the default behavior). Regex is an advanced feature added for power users who know how to use it already, so it won't be covered much.
"Match Any" is a way for users to match any of the items they specify. By default, it is in the "indeterminate state", which for this setting is the same as placing a checkmark in the box. The reason why there are two settings that mean the same thing is as follows: rather than having to have every setting in your filter with a correct value, we can ignore settings that have "no value". When a checkbox is in the "indeterminate state", it has "no value", so it's not adding useless default values your filters.
When "Match Any" is unchecked, the filter matching process changes to not match anything listed in the name/type box. For example, let's say you want to pickup all currency items except "Scroll of Wisdom". Rather than having to type the names of all currency except Scroll of Wisdom and leaving "Match Any" in the indeterminate state (or checked), a user could only enter the name "Scroll of Wisdom", and uncheck "Match Any". Assuming the Rarity has been set to currency, the bot would then pickup all currency that did not match the name "Scroll of Wisdom".
Filtering by name:

If you want to filter specific items, you'd enter their item name. As long as the name does not overlap with any other name, you will only get one match. You can also filter by partial name matches to cover more item types, but no all item types follow the same naming convention. For example, if you were to enter "Ring", you'd match all rings, as well as any other item that had ring in it's name, so things like "Ringmail" for example. That is why you'd use the type matching instead.
One last note, the names listed on base item types are the only names you can use. You cannot filter by unique name, because the matching is for the actual item name and not the "full name". Through the current filter setup, you could not identify all unique "Occultist's Vestment" and then vendor "Infernal Mantle", as it's only checking the base item name.
Filtering by type:

If you want to filter by all belt types for example, you'd enter "/Belts/" because that is a partial string that matches all belt types, and doesn't conflict with anything else. You could also have used "Metadata/Items/Belts/". If you wanted to filter by all ring types, you'd use "/Rings/". Let's say you wanted to filter all Str shields, which would be "/ShieldStr". The problem then is that the string would also match Str/Dex shields which contain that string in their name: "Metadata/Items/Armours/Shields/ShieldStrDex1". To solve this, you can use regex instead to make a filter that matches "ShieldStr" followed by only a number.
If no type or names are entered, this filter setting is not processed.
Rarities - Settings for filtering by item rarity.
To filter by item variety, simply place a check mark in the desired rarities. If an item doesn't contain any rarities you have specified, then it cannot match a filter.
For example, if you make a Pickup Filter for Normal, Rare, and Unique rarities, a Normal rarity item would match, a Rare rarity item would match, and a Unique rarity item would match. A Magic rarity, a Quest rarity item, a Skill Gem rarity item, and a Currency rarity item would not.
If no rarities are checked, this filter setting is not processed.
For example, if you make a Pickup Filter for Normal, Rare, and Unique rarities, a Normal rarity item would match, a Rare rarity item would match, and a Unique rarity item would match. A Magic rarity, a Quest rarity item, a Skill Gem rarity item, and a Currency rarity item would not.

If no rarities are checked, this filter setting is not processed.
Socket Colors - Settings for filtering by socket colors.
The filter system supports advanced socket color filtering, but it's not exposed through this gui. The main use for this filter is to be able to identify chromatic items. Trying to do any other socket color filtering is pointless since you can just roll an items colors with Chromatics until you get what you need.
When a color pattern is specified, the filter will match all combinations of the colors. "R-G-B" means a Red socket linked with a Green socket linked with a Blue socket, but the order does not matter. If you were to use the string "R G B" instead, it would match any item that had a Red socket, Green socket, as well as a Blue socket. We do support white sockets, but they can only be obtained through corrupted items (which can't be changed) or an unique, so there's no real reason to filter for them.
When no values are entered, this filter setting is not processed.
When a color pattern is specified, the filter will match all combinations of the colors. "R-G-B" means a Red socket linked with a Green socket linked with a Blue socket, but the order does not matter. If you were to use the string "R G B" instead, it would match any item that had a Red socket, Green socket, as well as a Blue socket. We do support white sockets, but they can only be obtained through corrupted items (which can't be changed) or an unique, so there's no real reason to filter for them.

When no values are entered, this filter setting is not processed.
Socket Count - Settings for filtering by socket count.
This filter setting can be used to filter by the total number of sockets an item has. The main use of this filter is to pickup 6 socket items. Most people don't use it for anything else.
When no values are entered, this filter setting is not checked.

When no values are entered, this filter setting is not checked.
Links - Settings for filtering by socket links.
This filter setting can be used to filter by the total number of links an item has. The main use of this filter is to pickup 5+ linked items. Most people don't use it for anything else, as 4 linked items are pretty common.
When no values are entered, this filter setting is not checked.

When no values are entered, this filter setting is not checked.
Item Size - Settings for filtering by item size.
This filter setting can be used to filter by the item size. It has no real purpose other than being able to simplify picking up 4 linked 2x2 objects without having to specify helm, boots, and glove types. It can also be used to only pickup "thin" 1H magic items for alt farming, but nowadays it's not even worth it.
When no values are entered, this filter setting is not checked.

When no values are entered, this filter setting is not checked.
Item Level - Settings for filtering by item level.
This filter setting can be used to limit items to a range of item levels. For example, you might only want to pickup ilvl 70+ of certain white items. This setting will allow you to do that.
The values are inclusive, so if you specify a maximum of 60, then ilvl 60 items would match.
When no values are entered, this filter setting is not processed.
The values are inclusive, so if you specify a maximum of 60, then ilvl 60 items would match.

When no values are entered, this filter setting is not processed.
Quality - Settings for filtering by item quality.
This filter setting can be used to filter items with quality. For example, if you wanted to pickup all quality skill gems, you could specify a minimal quality of 1 to match any item that had at least 1 quality. Max quality is mostly used to limit items to no quality. For example, if you wanted to pickup uncommon skill gems that didn't have any quality, Max Quality would be 0 so you didn't overlap with quality items.
When no values are entered, this filter setting is not processed.

When no values are entered, this filter setting is not processed.
Affixes - Settings for filtering by item stats.
This filter setting allows users to filter items based on the mod stats they have. This is a new advanced feature, so please report any bugs with it if something doesn't work the way you think it should.
The affix filtering is done through the Stat system. For the latest version of the Stats, please see the Exilebuddy (SotV) Release/Beta Revision Guide. Stats are updated quite frequently, so check back often. The linked stats file for this guide is for 1.1.2.1.
An affix filter is made up of several tokens. Everything is case-sensitive and spaces are used as delimiters.
First, a few examples:
The first token is the category. This setting may be the values "ExplicitStat", "ImplicitStat", or "TotalStat".
The second token is the actual StatType. These values can be found from the linked Stats document above. You can use the "Inventory Explorer" tool to find the stats of common mods that you need from existing items. We'll keep a post of commonly used stats as well for users to refer to. In addition, you can use the official Prefix Mod and Suffix Mod to find the Stats. However, the format is slightly different; spaces are removed and special characters are converted. For example, "Attack Speed +%" would be "AttackSpeedPosPct".
If you wish to check the stat's value compared to some value, you should use "Value" for the third token. The forth token has to be the operation to perform, which can be any of the following: "<", ">", "<=", ">=", "!=", "=". The fifth token should be the integer value to check against.
If you do not care about the stat's value, and only wish to check for presence of the stat, then you can skip those 3 tokens.
If the item has to have the stat you are checking, then you should add the "Required" token last. If you do not specify Required, then the stat will be part of the optional default group (which has an id of -1).
If you want the stat to be optional, but in its own group, you can place the "Optional " token followed by a "Group" token that is then followed by the actual group number. Groups allow you to match at least one stat from many. For example, if you wanted an item that had +Str or +Dex or +Int, you could use an Optional Group which would require the filter to match at least one of them to pass.
A filter that does not have at least one match in all groups will fail.
"Required" filters do not use the "Group" token!
The default "Group" is -1. You may use any other int value for your group numbers.
You make use "=" or "==" and "!=" or "<>"
Here's a list of all possible format combinations for a valid affix filter:
When no values are entered, this filter setting is not processed.
The affix filtering is done through the Stat system. For the latest version of the Stats, please see the Exilebuddy (SotV) Release/Beta Revision Guide. Stats are updated quite frequently, so check back often. The linked stats file for this guide is for 1.1.2.1.
An affix filter is made up of several tokens. Everything is case-sensitive and spaces are used as delimiters.
First, a few examples:
- TotalStat BaseMaximumLife Value > 30 Required
- ExplicitStat AdditionalDexterity Required
- ExplicitStat LocalMinimumAddedPhysicalDamage Optional Group 1
The first token is the category. This setting may be the values "ExplicitStat", "ImplicitStat", or "TotalStat".
- ExplicitStat - Match the stat from the item's explicit stats.
- ImplicitStat - Match the stat from the item's implicit stats.
- TotalStat - Match the stat from the item's merged stats (implicit + explicit).
The second token is the actual StatType. These values can be found from the linked Stats document above. You can use the "Inventory Explorer" tool to find the stats of common mods that you need from existing items. We'll keep a post of commonly used stats as well for users to refer to. In addition, you can use the official Prefix Mod and Suffix Mod to find the Stats. However, the format is slightly different; spaces are removed and special characters are converted. For example, "Attack Speed +%" would be "AttackSpeedPosPct".
If you wish to check the stat's value compared to some value, you should use "Value" for the third token. The forth token has to be the operation to perform, which can be any of the following: "<", ">", "<=", ">=", "!=", "=". The fifth token should be the integer value to check against.
If you do not care about the stat's value, and only wish to check for presence of the stat, then you can skip those 3 tokens.
If the item has to have the stat you are checking, then you should add the "Required" token last. If you do not specify Required, then the stat will be part of the optional default group (which has an id of -1).
If you want the stat to be optional, but in its own group, you can place the "Optional " token followed by a "Group" token that is then followed by the actual group number. Groups allow you to match at least one stat from many. For example, if you wanted an item that had +Str or +Dex or +Int, you could use an Optional Group which would require the filter to match at least one of them to pass.
A filter that does not have at least one match in all groups will fail.
"Required" filters do not use the "Group" token!
The default "Group" is -1. You may use any other int value for your group numbers.
You make use "=" or "==" and "!=" or "<>"
Here's a list of all possible format combinations for a valid affix filter:
- ExplicitStat BaseMaximumLife - Checks for the existence of BaseMaximumLife, but is optional in the default group (filter requires at least one match from an optional group).
- ExplicitStat BaseMaximumLife Required - Checks for the existence of BaseMaximumLife, and is required. If the item does not have this stat, it would not match.
- ExplicitStat BaseMaximumLife Optional - Checks for the existence of BaseMaximumLife, but is optional in the default group (filter requires at least one match from an optional group).
- ExplicitStat BaseMaximumLife Optional Group 1 - Checks for the existence of BaseMaximumLife, but is optional in Group 1 (filter requires at least one match from an optional group).
- ExplicitStat BaseMaximumLife Value > 20 - Checks to see if the item has a stat value of more than 20, but is optional in the default group (filter requires at least one match from an optional group).
- ExplicitStat BaseMaximumLife Value > 20 Required - Checks to see if the item has a stat value of more than 20, and is required. If the item does not have this stat, it would not match.
- ExplicitStat BaseMaximumLife Value > 20 Optional - Checks to see if the item has a stat value of more than 20, but is optional in the default group (filter requires at least one match from an optional group).
- ExplicitStat BaseMaximumLife Value > 20 Optional Group 1 - Checks to see if the item has a stat value of more than 20, but is optional in Group 1 (filter requires at least one match from an optional group).

When no values are entered, this filter setting is not processed.
Identified - Settings for filtering by item identification.
This filter setting can be used to filter items based on if they are identified or not. This is useful for when you want to sell identified rares for example.
When the checkbox is in the "indeterminate state" (default), this setting is not processed.
If the checkbox is checked, the item has to be identified.
If the checkbox is unchecked, the item has to be unidentified.

When the checkbox is in the "indeterminate state" (default), this setting is not processed.
If the checkbox is checked, the item has to be identified.
If the checkbox is unchecked, the item has to be unidentified.
This section will contain additions based on user feedback.
Last edited: