How menu_category Works
In modern Bedrock item definitions (format version 1.20.20 and later), creative inventory placement is controlled by the menu_category object inside the description block. This replaced the older, scattered creative_category properties that used to live either in description or inside components.
The menu_category object takes three optional fields: category, group, and is_hidden_in_commands. While category decides which of the four main tabs holds your item (construction, nature, equipment, or items), the group field tucks your item inside one of the collapsible vanilla stacks on that tab. If you leave group out, the item sits loose at the end of the tab.
{
"format_version": "1.20.50",
"minecraft:item": {
"description": {
"identifier": "example:ruby_sword",
"menu_category": {
"category": "equipment",
"group": "itemGroup.name.sword",
"is_hidden_in_commands": false
}
},
"components": {
"minecraft:max_stack_size": 1,
"minecraft:icon": {
"texture": "ruby_sword"
}
}
}
}Matching Categories and Groups
Every vanilla item group belongs to a specific creative tab in the default UI layout. However, Bedrock does not strictly lock a group to one category in your JSON. What matters is that both the category and group values are valid strings recognized by the parser.
For the most natural player experience, you should always pair an item group with the tab where vanilla puts that group. For instance, putting a custom sword into itemGroup.name.sword while setting its category to construction will behave oddly or place the group in an unexpected tab. Keep equipment groups in equipment, plant and ore groups in nature, building block groups in construction, and materials in items.
Equipment and Items Tab Groups
The equipment tab is the most common place add-on creators use groups, because custom tools, armor, and food look messy when dumped loose at the bottom of the inventory. All group identifiers use the localization key format starting with itemGroup.name followed by the group name.
Below are the reliable vanilla group identifiers commonly used on the equipment and items tabs. Note the capitalization—these strings are case-sensitive and use camelCase for multi-word names.
| Group Identifier | Recommended Category | Contents |
|---|---|---|
| itemGroup.name.helmet | equipment | Helmets, turtle shells, and wearable heads |
| itemGroup.name.chestplate | equipment | Chestplates and elytra |
| itemGroup.name.leggings | equipment | Leggings |
| itemGroup.name.boots | equipment | Boots |
| itemGroup.name.sword | equipment | Melee swords |
| itemGroup.name.axe | equipment | Axes |
| itemGroup.name.pickaxe | equipment | Pickaxes |
| itemGroup.name.shovel | equipment | Shovels |
| itemGroup.name.hoe | equipment | Hoes |
| itemGroup.name.arrow | equipment | Normal and tipped arrows |
| itemGroup.name.cookedFood | equipment | Cooked meats, bread, baked items |
| itemGroup.name.rawFood | equipment | Raw meats, fruits, vegetables |
| itemGroup.name.potion | equipment | Drinkable potions |
| itemGroup.name.splashPotion | equipment | Throwable splash potions |
| itemGroup.name.lingeringPotion | equipment | Lingering potions |
| itemGroup.name.horseArmor | equipment | Leather, iron, gold, diamond horse armor |
| itemGroup.name.enchantedBook | items | Enchanted books |
| itemGroup.name.record | items | Music discs |
| itemGroup.name.dye | items | All 16 dyes |
| itemGroup.name.banner_pattern | items | Loom banner patterns |
| itemGroup.name.smithing_templates | items | Armor trims and upgrade templates |
Nature and Construction Tab Groups
While block items usually get their menu_category inside the block's behavior file, you also use these groups on standalone items like seeds, saplings, or custom doors that are placed via an item first.
When assigning groups for building materials or natural elements, pay attention to pluralization in the vanilla keys. Some keys like plank or fence are singular, while others like stairs or walls are plural.
| Group Identifier | Recommended Category | Contents |
|---|---|---|
| itemGroup.name.planks | construction | Wood planks of all types |
| itemGroup.name.stairs | construction | Wood and stone stairs |
| itemGroup.name.slab | construction | Wood and stone slabs |
| itemGroup.name.fence | construction | Wooden and nether brick fences |
| itemGroup.name.fenceGate | construction | Fence gates |
| itemGroup.name.door | construction | Wooden, iron, and copper doors |
| itemGroup.name.trapdoor | construction | Wooden, iron, and copper trapdoors |
| itemGroup.name.walls | construction | Cobblestone, brick, and stone walls |
| itemGroup.name.glass | construction | Clear and stained glass blocks |
| itemGroup.name.glassPane | construction | Clear and stained glass panes |
| itemGroup.name.wool | construction | All wool colors |
| itemGroup.name.woolCarpet | construction | All wool carpet colors |
| itemGroup.name.concrete | construction | Solid concrete blocks |
| itemGroup.name.concretePowder | construction | Gravity-affected concrete powder |
| itemGroup.name.glazedTerracotta | construction | Patterned glazed terracotta |
| itemGroup.name.log | nature | Logs, stems, and stripped variants |
| itemGroup.name.leaves | nature | Tree leaves |
| itemGroup.name.sapling | nature | Tree saplings and propagules |
| itemGroup.name.seed | nature | Crop seeds |
| itemGroup.name.crop | nature | Harvested crops and farm produce |
| itemGroup.name.flower | nature | Small and tall flowers |
| itemGroup.name.mushroom | nature | Red, brown, and nether fungi |
| itemGroup.name.ore | nature | Overworld and deepslate ore blocks |
| itemGroup.name.mobEgg | nature | Entity spawn eggs |
Hiding Technical Items
Sometimes you create dummy items used only for custom UI icons, entity projectiles, or intermediate crafting steps that players should never pull from the creative menu. For these, set category to none and leave out the group field entirely.
If you also want to prevent players and command blocks from seeing the item in the autocomplete list when typing /give or /clear, set is_hidden_in_commands to true. The item can still be given via scripts or loot tables, or if a player types the full identifier manually in some versions, but it stays out of the way during normal play.
{
"format_version": "1.20.50",
"minecraft:item": {
"description": {
"identifier": "example:internal_ui_icon",
"menu_category": {
"category": "none",
"is_hidden_in_commands": true
}
},
"components": {
"minecraft:max_stack_size": 1
}
}
}Which versions this applies to
Applies to Bedrock Edition 1.20.20 and later. Stable; no experimental toggles are required to use menu_category or vanilla item groups.
When it does not work
| What you see | Why | The fix |
|---|---|---|
| Content Log shows a schema error on 'group' or the item does not appear inside the expected folder in the creative menu. | You misspelled the group identifier or used the wrong casing (for example, writing 'itemGroup.name.swords' plural or 'itemGroup.name.raw_food' with an underscore instead of camelCase 'itemGroup.name.rawFood'). | Check the exact spelling and capitalization against the vanilla group list. Most tool groups are singular, and multi-word groups generally use camelCase, though newer ones like 'itemGroup.name.smithing_templates' use underscores. |
| Error in Content Log: 'minecraft:creative_category' is not a valid component or property. | You are using an item format_version of 1.20.20 or higher while copying tutorial code made for 1.16.100 or 1.20.0. | Remove 'minecraft:creative_category' from components and 'category' from description, and replace them with the 'menu_category' object inside 'description'. |
| The item cannot be found in the creative menu at all, even when searching. | Either 'category' is set to 'none', or the item lacks a valid icon in the resource pack causing you to overlook an invisible slot, or the JSON failed to parse due to a missing comma around menu_category. | Ensure 'category' is set to 'construction', 'nature', 'equipment', or 'items', and check the Content Log in Settings > Creator to verify the JSON loaded without syntax errors. |
Reference, straight from the game files
Read out of the game itself, so the ids match the version you are building for.
