Applying Tags to a Custom Item
Every tag on an item is declared inside the `minecraft:tags` component in your behavior pack item JSON. This component takes a single `tags` array containing string identifiers. You can mix official `minecraft:` tags with your own namespace tags in the same array.
In modern Bedrock format versions (1.20.50 and later), `minecraft:tags` is a stable component that replaces the legacy `tag:` empty object syntax used in older format versions. Adding a tag does not automatically give an item all the components of that item class; for example, tagging an item as `minecraft:is_pickaxe` lets it mine pickaxe-gated blocks, but you still need to define `minecraft:durability` and `minecraft:digger` if you want it to take damage and mine quickly.
{
"format_version": "1.20.80",
"minecraft:item": {
"description": {
"identifier": "my_pack:ruby_pickaxe",
"menu_category": {
"category": "equipment",
"group": "itemGroup.name.pickaxe"
}
},
"components": {
"minecraft:max_stack_size": 1,
"minecraft:hand_equipped": true,
"minecraft:durability": {
"max_durability": 850
},
"minecraft:tags": {
"tags": [
"minecraft:is_tool",
"minecraft:is_pickaxe",
"minecraft:diamond_tier"
]
}
}
}
}Tool Type and Material Tier Tags
The most common reason to reach for vanilla item tags is building custom tools and weapons. Vanilla blocks and custom blocks alike check the held item's tags inside their `minecraft:destructible_by_mining` component or loot tables to decide if the block should drop its item and how fast it should break.
A custom tool typically needs two tags: one declaring the tool shape (such as `minecraft:is_pickaxe`) and one declaring its harvesting tier (such as `minecraft:iron_tier`). Note that higher tier tags do not always imply lower tier tags in every custom block query, though vanilla block definitions check for any valid tier at or above the required level. If you want your custom tool to work seamlessly across both vanilla blocks and third-party add-on blocks that might check for a specific tier, you can include multiple tier tags on the same item.
| Tag Identifier | What it does | Notes |
|---|---|---|
| minecraft:is_tool | Marks the item as a general tool. | Used by various vanilla behaviors and entity item queries. |
| minecraft:is_pickaxe | Identifies the item as a pickaxe. | Allows mining ores, stone, and blocks checking for pickaxes. |
| minecraft:is_axe | Identifies the item as an axe. | Used for stripping logs and fast-mining wood blocks. |
| minecraft:is_shovel | Identifies the item as a shovel. | Used for path creation on dirt/grass and digging soil blocks. |
| minecraft:is_hoe | Identifies the item as a hoe. | Used for tilling dirt into farmland and breaking plant blocks. |
| minecraft:is_sword | Identifies the item as a sword. | Allows sweeping cobwebs and triggers sword-specific checks. |
| minecraft:wooden_tier | Assigns wooden mining tier. | Base harvesting level for stone and coal. |
| minecraft:stone_tier | Assigns stone mining tier. | Required by vanilla iron, copper, and lapis ore. |
| minecraft:iron_tier | Assigns iron mining tier. | Required by vanilla diamond, gold, emerald, and redstone ore. |
| minecraft:golden_tier | Assigns golden mining tier. | Fast mining tier with low harvesting level. |
| minecraft:diamond_tier | Assigns diamond mining tier. | Required to harvest obsidian and ancient debris. |
| minecraft:netherite_tier | Assigns netherite mining tier. | Highest vanilla mining tier. |
Recipe, Wood, and Material Tags
Vanilla crafting and smelting recipes frequently accept an item tag instead of a hard-coded item identifier. By attaching these material tags to your custom items, players can use your custom wood, stone, or fuel in standard vanilla recipes—like crafting chests, sticks, beds, or stone tools—without you having to duplicate a single vanilla recipe file.
When creating custom trees or stone variants, place the appropriate tags on the block's item representation or on your custom item definitions so they blend naturally into survival progression.
| Tag Identifier | What it does | Notes |
|---|---|---|
| minecraft:planks | Includes the item in all generic plank recipes. | Works for sticks, chests, crafting tables, beds, and wooden doors. |
| minecraft:logs | Marks the item as a log. | Used in charcoal smelting and generic log-based recipes. |
| minecraft:logs_that_burn | Marks the item as a flammable overworld-style log. | Used specifically by recipes and furnaces expecting burnable wood. |
| minecraft:stone_tool_materials | Allows the item to craft stone-tier tools. | Vanilla cobblestone, blackstone, andobbled deepslate share this tag. |
| minecraft:stone_crafting_materials | Allows the item to craft furnaces and brewing stands. | Often paired with `minecraft:stone_tool_materials`. |
| minecraft:coals | Allows the item to craft torches and campfires. | Shared by vanilla coal and charcoal. |
| minecraft:soul_fire_base_blocks | Allows crafting soul torches and soul campfires. | Applied to soul sand and soul soil items. |
| minecraft:sand | Includes the item in glass smelting, TNT, and concrete powder recipes. | Shared by regular sand and red sand. |
Mob Interaction, Armor, and Utility Tags
Beyond tools and crafting, several mob behaviors, wearable interactions, and block mechanics check the tags on an item before allowing an action. For example, Piglins in the Nether check for specific gold-related tags to decide whether to attack a player, barter with them, or run toward a dropped item.
Similarly, utility blocks like bookshelves, jukeboxes, and campfires look for tags on the item in the player's hand to determine whether the item can be inserted or cooked.
| Tag Identifier | What it does | Notes |
|---|---|---|
| minecraft:is_armor | Marks the item as a piece of armor. | Paired with `minecraft:wearable` for equipment behavior. |
| minecraft:is_trident | Marks the item as a trident. | Used in combat and enchantment checks. |
| minecraft:is_food | Identifies the item as edible food. | Used by entity temptation behaviors and item sorting. |
| minecraft:is_meat | Marks the item as meat. | Allows feeding and breeding tamed wolves. |
| minecraft:is_cooked | Marks food as cooked. | Often paired with `minecraft:is_meat` or `minecraft:is_fish`. |
| minecraft:bookshelf_books | Allows placing the item inside a Chiseled Bookshelf. | Shared by books, enchanted books, and writable books. |
| minecraft:Hanging_sign | Identifies hanging sign items. | Note casing; check standard `minecraft:sign` for standing/wall signs. |
| minecraft:music_disc | Marks the item as a music disc. | Used by jukeboxes and Allay/Parrot interactions. |
| minecraft:trim_materials | Allows the item to be used as an armor trim material in a Smithing Table. | Requires a corresponding trim material registry entry. |
| minecraft:trim_templates | Allows the item to act as a smithing template in a Smithing Table. | Shared by armor trim templates and the netherite upgrade. |
| minecraft:arrow | Allows bows and crossbows to fire the item as ammunition. | Used by vanilla arrows and tipped arrows. |
Querying Vanilla Item Tags in Recipes and Scripts
You are not limited to putting vanilla tags on your items; you can also check for vanilla tags in your own recipes, Molang queries, and Script API code. In a shaped or shapeless recipe file, replace the `"item"` key inside an ingredient object with `"tag"` to accept any vanilla or custom item carrying that tag.
In Molang (used in entity behaviors, animations, and block permutations while they remain supported), you can test held items with `query.equipped_item_any_tag('slot.weapon.mainhand', 'minecraft:is_pickaxe')`. In the `@minecraft/server` Script API, you can inspect an `ItemStack` using its `.hasTag("minecraft:is_pickaxe")` or `.getTags()` methods.
{
"format_version": "1.20.10",
"minecraft:recipe_shaped": {
"description": {
"identifier": "my_pack:reinforced_stick"
},
"tags": ["crafting_table"],
"pattern": [
"#",
"I",
"#"
],
"key": {
"#": {
"tag": "minecraft:planks"
},
"I": {
"item": "minecraft:iron_ingot"
}
},
"result": {
"item": "minecraft:blaze_rod",
"count": 1
}
}
}Which versions this applies to
The `minecraft:tags` item component is stable and requires format_version 1.20.50 or higher with no experimental toggles needed. On older format versions (1.16.100 through 1.20.40), tags were applied as empty objects prefixed with `tag:` directly inside the `components` block.
When it does not work
| What you see | Why | The fix |
|---|---|---|
| Content Log Error: [Item][error]-my_pack:ruby_pickaxe | minecraft:item -> components -> tag:minecraft:is_pickaxe: component is not supported in this format_version. | You used the legacy `"tag:minecraft:is_pickaxe": {}` component syntax inside an item file with a `format_version` of 1.20.50 or newer. | Replace all individual `tag:...` keys with a single `"minecraft:tags": { "tags": [ "minecraft:is_pickaxe" ] }` component. |
| Custom pickaxe with `minecraft:is_pickaxe` and `minecraft:diamond_tier` breaks stone and ores at bare-hand speed. | Item tags only satisfy tag queries (such as whether a block is allowed to drop its loot); they do not automatically set mining speed on a custom item. | Add the `minecraft:digger` component to your item alongside `minecraft:tags` and configure `destroy_speeds` for the blocks or block tags your tool should mine quickly. |
| Custom tool tagged with `minecraft:is_axe` cannot strip vanilla logs when right-clicked. | Stripping logs, tilling dirt, and flattening grass paths are hardcoded vanilla behaviors or require specific interaction components, not just the item tag alone. | Implement a custom Script API handler listening to `world.beforeEvents.itemUseOn` (or use custom item components) to transform the target block and damage the tool when used on logs. |
Reference, straight from the game files
Read out of the game itself, so the ids match the version you are building for.
