Wiki 9Minecraft Wiki 9Minecraft

Item Catalog (crafting_item_catalog.json)

Organize custom items and blocks into Creative inventory tabs and expandable groups.

5Sections
3Code examples
3Known errors

The Item Catalog is a behavior pack configuration file that controls where custom items and blocks appear inside the Creative inventory and recipe book. While an item file's `menu_category` block can assign an item to a broad tab or an existing vanilla group, you reach for the Item Catalog when you want to build your own collapsible item groups with custom icons and exact ordering.

What the Item Catalog Does

In older Bedrock versions, an item's placement in the Creative inventory was strictly handled inside its own item or block JSON file. If you wanted ten custom swords to sit together inside a collapsible folder, you could only put them into one of the hardcoded vanilla groups, such as the standard swords group. You could not create a new collapsible group of your own.

Introduced alongside the 1.21.60 format updates, `BP/item_catalog/crafting_item_catalog.json` decouples inventory organization from individual item definitions. It lets you declare which category tab you are modifying, create brand new expandable groups with a designated icon and display name, or list loose items so they appear in a specific sequence in the menu.

Using the Item Catalog does not replace the `description` block inside your item files, nor does it generate the items themselves. Instead, it acts as a layout manifest that overrides or supplements the `menu_category` rules defined on the individual items and blocks.

File Location and Basic Structure

The catalog file must be placed in your behavior pack at `BP/item_catalog/crafting_item_catalog.json`. Unlike entities or items where you can have hundreds of separate files in subfolders, the game looks for this specific filename inside the `item_catalog` directory.

At the root of the JSON, you provide a `format_version` (at least `1.21.60`) and the `minecraft:crafting_items_catalog` object. Inside that object sits a `categories` array. Each entry in `categories` targets one of the four main Creative inventory tabs (`construction`, `nature`, `equipment`, or `items`) and defines an array of `groups` to inject into that tab.

BP/item_catalog/crafting_item_catalog.json
{
  "format_version": "1.21.60",
  "minecraft:crafting_items_catalog": {
    "categories": [
      {
        "category_name": "equipment",
        "groups": [
          {
            "group_identifier": {
              "icon": "my_pack:ruby_sword",
              "name": "my_pack:itemGroup.name.ruby_gear"
            },
            "items": [
              "my_pack:ruby_sword",
              "my_pack:ruby_pickaxe",
              "my_pack:ruby_helmet"
            ]
          }
        ]
      },
      {
        "category_name": "items",
        "groups": [
          {
            "items": [
              "my_pack:raw_ruby",
              "my_pack:ruby_ingot"
            ]
          }
        ]
      }
    ]
  }
}

Schema Reference

The schema for `crafting_item_catalog.json` is compact, relying on nested arrays to sort categories, groups, and individual item identifiers. Every identifier you reference in the catalog must correspond to a valid custom item, custom block, or vanilla identifier that exists in the world.

Notice in the example above that the second group under the `items` category omits the `group_identifier` object entirely. When you omit `group_identifier`, the items listed in the `items` array are not placed inside a collapsible folder. Instead, they are appended directly to the tab as loose, standalone entries in the exact order you list them.

FieldWhat it doesNotes
categoriesArray of category objects that modify the main Creative tabs.Required inside `minecraft:crafting_items_catalog`.
category_nameSelects which tab to place the groups into.Accepts `construction`, `nature`, `equipment`, or `items`.
groupsArray of group definitions for the chosen category.Processed in the order they are written.
group_identifierDefines the collapsible folder's name and cover icon.Optional. If omitted, the items in this block are placed directly into the category tab without a folder.
iconThe item or block identifier rendered on the closed group button.Used inside `group_identifier`. Must be a valid item or block ID.
nameThe localization key for the group's tooltip title.Used inside `group_identifier`. Must include a namespace (e.g., `my_pack:itemGroup.name.gems`).
itemsArray of item or block identifiers belonging to this group.Accepts strings (e.g., `"my_pack:ruby_ingot"`).

Preparing the Item Definition

For an item to behave properly in the catalog, its own definition file in `BP/items/` still requires a valid `description`. While the catalog takes over the grouping, you should still set a base `category` inside the item's `menu_category` block so the game knows the item is allowed to be visible in menus.

If an item has `"category": "none"` or `"is_hidden_in_commands": true` in its own JSON file, the catalog may refuse to display it or throw a content log error because the item was explicitly marked as hidden from the menu interface.

BP/items/ruby_sword.json
{
  "format_version": "1.21.60",
  "minecraft:item": {
    "description": {
      "identifier": "my_pack:ruby_sword",
      "menu_category": {
        "category": "equipment"
      }
    },
    "components": {
      "minecraft:icon": "ruby_sword",
      "minecraft:max_stack_size": 1,
      "minecraft:damage": 7
    }
  }
}

Localizing Custom Group Names

Unlike item display names, which require a namespaces-Required `name` value in `group_identifier` (meaning it must contain a colon, like `my_pack:my_group`), the actual text shown when a player hovers over the plus-sign icon in the Creative inventory comes from your resource pack's `.lang` files.

Open `RP/texts/en_US.lang` and add an entry matching the exact string you put in the catalog's `name` field. Even though the key contains a colon, the localization parser treats the entire string before the `=` sign as a standard translation key.

RP/texts/en_US.lang
my_pack:itemGroup.name.ruby_gear=Ruby Equipment
item.my_pack:ruby_sword=Ruby Sword

Which versions this applies to

Requires format_version 1.21.60 or higher (introduced in Minecraft Bedrock 1.21.60). Stable; no experimental toggles are required.

When it does not work

What you seeWhyThe fix
Content Log Error: "Group name '...' must have a namespace" and the custom group fails to appear in the Creative menu.The `name` field inside `group_identifier` was written as a plain translation key (like `itemGroup.name.ruby_gear`) without a namespace prefix and colon.Prepend your pack's namespace and a colon to the group name string (for example, `"my_pack:itemGroup.name.ruby_gear"`) in both `crafting_item_catalog.json` and your `.lang` file.
Custom group is missing or partially empty, accompanied by a Content Log warning referencing an unrecognized item identifier.One of the strings in the `items` array or the `icon` field has a typo, or refers to an item whose JSON file failed to parse.Verify that every identifier in `items` and `icon` exactly matches the `identifier` in the corresponding `BP/items/` or `BP/blocks/` file.
An item appears twice in the Creative inventory or stays stuck in a vanilla group instead of moving to the custom group.The item's own file in `BP/items/` still has a `group` property defined inside its `menu_category` block, which conflicts with the catalog assignment.Remove the `group` field from `menu_category` in the item's JSON file, leaving only the `category` property, and let `crafting_item_catalog.json` handle the group placement.

Reference, straight from the game files

Read out of the game itself, so the ids match the version you are building for.