Works on give, item, and setblock commands. The conversion runs in your browser as you type. Nothing is uploaded.
display.Namebecomescustom_nameWrapped the name as a text component.EnchantmentsbecomesenchantmentsList of {id,lvl} became a level map (2 entries).UnbreakablebecomesunbreakableBoolean flag became the empty unbreakable component.This converter turns a pre-1.20.5 command with old item {NBT} into the modern [component] format the game uses from 1.20.5 onward. Paste a give, item, or setblock command, and it rewrites the item, then shows a tag-by-tag mapping so you can see exactly what changed. It runs entirely in your browser.
Minecraft 1.20.5 retired the old NBT tag system for items and replaced it with data components. A command that worked in 1.16 or 1.19 now throws a syntax error, because tags like {Enchantments:[...]} no longer exist. The item part has to be rewritten using square-bracket components such as [enchantments={...}].
Rewriting these by hand is slow and easy to get wrong. This tool reads the old compound, maps each tag to its component, fixes the format changes (operation numbers to names, name strings to text components, container slots), and reassembles the command for 26.2.
1. Paste your old command into the box, or click one of the example chips to load a sample.
2. The modern command appears on the right and updates as you type. Hit Copy to grab it.
3. Check the mapping table to see which tags became components and which were kept under custom_data.
4. Paste the new command into the game (cheats on) or a command block in 26.2.
The reference below lists how each common item tag maps to its 1.20.5+ component. Unknown tags fall back to custom_data so nothing is lost.
| Old NBT tag | New component | Format change |
|---|---|---|
| Damage | damage | Integer durability damage, unchanged |
| display.Name | custom_name | Wrapped as a text component |
| display.Lore | lore | List of text components |
| display.color | dyed_color | Packed RGB integer for leather armor |
| Enchantments | enchantments | List of {id,lvl} becomes a level map |
| StoredEnchantments | stored_enchantments | Same level map, for books |
| AttributeModifiers | attribute_modifiers | Operation numbers become names |
| Unbreakable | unbreakable | Empty component instead of a 1b flag |
| SkullOwner | profile | Name and texture properties |
| CanDestroy | can_break | Block ids become block predicates |
| CanPlaceOn | can_place_on | Block ids become block predicates |
| Potion / CustomPotionEffects | potion_contents | Merged into one component |
| Trim | trim | Pattern and material, namespaced |
| CustomModelData | custom_model_data | Integer (later wrapped as floats) |
| BlockEntityTag.Items | container | Slot and count per stack |
| EntityTag | entity_data | Entity NBT carried over |
| RepairCost | repair_cost | Anvil work penalty integer |
| (unknown tags) | custom_data | Preserved verbatim, nothing dropped |
Take a classic old command for a custom sword:
/give @p diamond_sword{display:{Name:"..."},Enchantments:[{id:"minecraft:sharpness",lvl:5}],Unbreakable:1b}The converter rewrites the name as a custom_name text component, turns the enchantment list into the enchantments level map, and swaps the Unbreakable:1b flag for the empty unbreakable={} component:
/give @p minecraft:diamond_sword[custom_name='{"text":"Excalibur"}',enchantments={"minecraft:sharpness":5},unbreakable={}]Paste your pre-1.20.5 command into the box. The tool reads the old {NBT} compound on the item, rewrites each tag as a 1.20.5+ component, and prints the new command. It also lists every tag that changed and anything it had to store under custom_data.
Version 1.20.5 replaced item NBT tags with structured data components. The old curly-brace tags like {Enchantments:[...]} are gone, so a command written for 1.16 or 1.19 throws a syntax error. You have to rewrite the item part using square-bracket components, which is what this converter does.
The old list of {id,lvl} entries becomes a single map: enchantments={"minecraft:sharpness":5,"minecraft:unbreaking":3}. StoredEnchantments on an enchanted book becomes stored_enchantments with the same shape.
Any tag the converter does not recognise is preserved verbatim inside the custom_data component, so nothing is lost. The mapping table flags these in a separate Stored in custom_data list. HideFlags is the one exception: it no longer exists, so you set show_in_tooltip:false on each component instead.
Yes. A BlockEntityTag holding Items is rewritten into the container component, with each stack mapped to its slot and count. Other block entity fields move to block_entity_data.
No. Everything runs in your browser as you type, with no network calls. The output uses 26.2 component syntax, the same format the latest Minecraft release expects.
Browse more Minecraft tools: