Loot Table Builder

Build Minecraft Java Edition loot tables visually. Create chest loot, block drops, entity drops, and more for 1.21.11 datapacks.

Table Settings

Container loot (chests, barrels, etc.)

Determines which context Minecraft provides (e.g., killed entity, broken block, opened chest). Choose the type that matches where this loot table will be used.

Ties this table to a named random sequence for deterministic results with the same world seed. Leave empty for standard random behavior.

Structure

No pools yet. Add a pool to get started.

How loot tables work:

Pools are groups of possible drops. Each pool rolls independently.

Entries are the items or choices within a pool, selected by weight.

Conditions are filters that must pass for a drop to occur.

Functions modify items after selection (count, enchantments, etc.).

Select a pool, entry, condition, or function to edit

Or add a pool to get started

Output

This is the Minecraft loot table JSON. Place it in your datapack at data/namespace/loot_table/path.json.

{
  "type": "minecraft:chest"
}
Loot table has no pools

How to Use the Loot Table Builder

Build Minecraft loot tables visually for datapacks. Create chest loot, block drops, entity drops, fishing rewards, and more with pools, conditions, and functions. Export valid JSON ready for your datapack.

Quick Steps

  1. 1Select a loot table type (chest, block, entity, fishing, etc.)
  2. 2Add pools and configure their rolls (how many items drop)
  3. 3Add entries to each pool with items, weights, and quality values
  4. 4Apply conditions (random chance, killed by player, etc.) and functions (set count, enchant, set name, etc.)
  5. 5Export the JSON and place it in your datapack

Example Use Cases

  • Create custom chest loot for a dungeon in your adventure map
  • Define mob drop tables with conditional loot for your datapack
  • Build fishing loot tables with rare custom rewards

Tips

Loot table JSON files go in your datapack under data/namespace/loot_tables/
Your design is saved in the URL so you can bookmark or share it

Frequently Asked Questions

How do I make a custom loot table for a datapack?

Pick the loot table type (chest, block, entity, fishing, etc.) and add pools. Each pool has rolls (how many picks happen) and entries (what items can be picked, with weights). Export the JSON and drop it into data/<namespace>/loot_tables/<path>.json inside your datapack.

What is the difference between rolls and weights?

Rolls = how many times the pool is sampled per drop (e.g. rolls=3 = three items drop from that pool). Weight = how likely each entry is relative to its siblings — an entry with weight 10 is 10x more likely to be picked than a weight-1 sibling. Combine both for nuanced drop rates.

How do loot table conditions work?

Conditions gate whether a pool or entry can drop. Common ones: random_chance (drop X% of the time), killed_by_player (entity was killed directly by a player, not environment), entity_properties (checks entity flags), survives_explosion, etc. Conditions can be stacked and combined with AND logic.

Can I set a custom name or enchantment on dropped items?

Yes — use functions on an entry. set_name gives it a custom display name, set_count rolls an item count range, enchant_randomly or enchant_with_levels adds enchantments, set_nbt for any custom NBT, and so on. Functions run in order and stack.

Where do I put the loot table JSON in my datapack?

data/<your_namespace>/loot_tables/<optional_folders>/<name>.json inside the datapack. To replace a vanilla drop table, use namespace=minecraft and match the vanilla path — e.g. data/minecraft/loot_tables/entities/zombie.json to override zombie drops globally.