Loading...
On Java Edition 1.21 and later, enchantments are loaded from datapacks. This builds a brand-new entry, so every vanilla enchantment stays in the game next to yours. Everything is generated in your browser; nothing is uploaded.
Full id: mypack:lifesteal
#minecraft:enchantable/sharp_weapon
The slots an item must be worn or held in for the effect to count.
These set the level range where the enchantment can appear at an enchanting table.
Inflicts a status effect on whatever you hit, like Bane of Arthropods slowing arthropods.
Since Java Edition 1.21, enchantments live in a datapack registry, so a single JSON file adds a brand-new enchantment with a real effect. This builder writes that file for you and packages it as a datapack you can drop straight into a world. It all runs in your browser, so nothing uploads.
Each enchantment is one entry at data/<namespace>/enchantment/<name>.json. The tool fills in every field the game expects: the description text component, the supported_items tag that decides which items can carry it, the weight and max_level that set how often and how high it rolls, and the min_cost and max_cost that place it on the enchanting table level scale.
Pick from the real vanilla item tags such as #minecraft:enchantable/weapon or #minecraft:enchantable/armor, add an optional primary_items tag to narrow where it is offered, and set an exclusive_set so it cannot combine with a chosen group. The JSON preview updates live and you can copy it or download the whole datapack.
The builder offers the three effect components most people want, each written exactly the way the vanilla enchantments use them. minecraft:damage adds bonus attack damage on a level-scaled value, the way Sharpness does. minecraft:attributes applies an attribute modifier while the item is equipped, for example extra movement speed or armor. minecraft:post_attack with an apply_mob_effect effect inflicts a status effect on whatever you hit, the way Bane of Arthropods slows arthropods.
Values that grow with the level use a linear value provider (a base plus a per-level amount). When you leave the per-level amount at zero the tool writes a simpler constant value instead, which is what the game expects for flat effects.
| Field | What it does |
|---|---|
| supported_items | Item tag for everything that can hold the enchantment |
| primary_items | Narrower tag for table and trade offers (optional) |
| weight | Roll chance against other enchantments (higher is more common) |
| max_level | The highest level the enchantment can reach |
| min_cost / max_cost | Experience level range on the enchanting table |
| anvil_cost | Prior-work cost added per level when combining on an anvil |
| exclusive_set | A group it cannot be combined with |
| slots | Where the item must be held or worn for the effect to count |
1. Download the zip and unzip it. Inside is a folder with a pack.mcmeta and a data folder.
2. Copy that folder into .minecraft/saves/<your world>/datapacks/, then run /reload in game or re-open the world.
3. Confirm it loaded with /datapack list, then apply it with /enchant @s <namespace>:<id> 1 or pull it from an enchanting table if you enabled table offers.
On Java Edition 1.21 and later, enchantments are data-driven, so you write a JSON file and load it from a datapack. This tool builds that JSON for you: pick the items it fits, set the weight, max level, anvil and table cost, and an effect, then download a datapack with the file at data/<namespace>/enchantment/<name>.json. Drop the folder in your world's datapacks folder and run /reload.
The required keys are description (a text component), supported_items (an item tag like #minecraft:enchantable/weapon), weight, max_level, min_cost and max_cost (each with base and per_level_above_first), anvil_cost, slots, and effects. Optional keys include primary_items, which limits where it can be offered, and exclusive_set, which stops it combining with a group of other enchantments. This tool writes every key in the same order as the vanilla files.
An enchantment is only offered at the table if it is in the #minecraft:in_enchanting_table tag and usually the #minecraft:non_treasure tag. The builder adds your enchantment to both tags when you tick the availability boxes. If you still do not see it, make sure the item you are enchanting matches your supported_items tag and your table is at a high enough bookshelf level for the min_cost you set.
After the datapack is loaded with /reload, run /enchant @s <namespace>:<id> <level>, for example /enchant @s mypack:lifesteal 1. You can also place it on a book or item directly with /item or by editing the item's components. The tool shows the exact /enchant command for your enchantment in the success panel after you download.
No mod is needed on Java Edition 1.21 and later. The enchantment registry is loaded from datapacks, so a plain JSON file is enough to add a working enchantment with a real effect. This page targets Minecraft 26.2 and earlier 1.21 releases. Effects beyond damage, attributes and status-on-hit (like custom particle logic) still need a mod or extra command-block work.
No. Data-driven enchantments use the Java Edition enchantment registry, which Bedrock does not have. There is no datapack equivalent for adding new enchantments on Bedrock, so this tool is Java only. On Bedrock you can only change the level of existing enchantments with commands.
Add other custom content, or browse more tools: