Minecraft Wiki
Advertisement
Information icon
This feature is exclusive to Java Edition. 
This article is about the NBT file format. For using NBT in commands, see Tutorials/Command NBT Tags.

The Named Binary Tag format is used by Minecraft for the various files in which it saves data. The format is described by Notch in a very brief specification. The format is designed to store data in a tree structure made up of various tags. All tags have an ID and a name. The original known version was 19132 as introduced in Minecraft Beta 1.3, and since then has been updated to 19133 with Anvil, with the addition of the Int Array tag. The NBT format dates all the way back to Minecraft Indev with tags 0 to 10 in use.

TAG definition

Add more columns [discuss]
This section might benefit of the addition of the "prefix and/or suffix in SNBT" column.

A tag is an individual part of the data tree. The first byte in a tag is the tag type (ID), followed by two bytes for the length of the name, then the name as a string in UTF-8 format (Note TAG_End is not named and does not contain the extra 2 bytes; the name is assumed to be empty). The name of tags may contain spaces, although Minecraft itself never saves tags with spaces in the names. Finally, depending on the type of the tag, the bytes that follow are part of that tag's payload. This table describes each of the 12 known tags in version 19133 of the Named Binary Tag format:

ID Icon Tag Type Payload Defined in commands Description Storage Capacity
0 TAG_End None. - Used to mark the end of compound tags. This tag does not have a name, so it is only ever a single byte 0. It may also be the type of empty List tags. N/A
1 TAG_Byte 1 byte / 8 bits, signed <number>b or <number>B A signed integral type. Sometimes used for booleans. Full range of -(27) to (27 - 1)
(-128 to 127)
2 TAG_Short 2 bytes / 16 bits, signed, big endian <number>s or <number>S A signed integral type. Full range of -(215) to (215 - 1)
(-32,768 to 32,767)
3 TAG_Int 4 bytes / 32 bits, signed, big endian <number> A signed integral type. Full range of -(231) to (231 - 1)
(-2,147,483,648 to 2,147,483,647)
4 TAG_Long 8 bytes / 64 bits, signed, big endian <number>l or <number>L A signed integral type. Full range of -(263) to (263 - 1)
(-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807)
5 TAG_Float 4 bytes / 32 bits, signed, big endian, IEEE 754-2008, binary32 <number>f or <number>F A signed floating point type. Precision varies throughout number line;
See Single-precision floating-point format. Maximum value about 3.4*1038
6 TAG_Double 8 bytes / 64 bits, signed, big endian, IEEE 754-2008, binary64 <decimal number>, <number>d or <number>D A signed floating point type. Precision varies throughout number line;
See Double-precision floating-point format. Maximum value about 1.8*10308
7 TAG_Byte_Array TAG_Int's payload size, then size TAG_Byte's payloads. [B;<byte>,<byte>,...] An array of bytes. Maximum number of elements ranges between (231 - 9) and (231 - 1) (2,147,483,639 and 2,147,483,647), depending on the specific JVM.
8 TAG_String TAG_Short's payload length, then a UTF-8 string with size length. <a-zA-Z0-9 text> or "<text>" A UTF-8 string. It has a size, rather than being null terminated. 32,767 bytes interpretable as UTF-8 (see UTF-8 format; most commonly-used characters are a single byte).
9 TAG_List TAG_Byte's payload tagId, then TAG_Int's payload size, then size tags' payloads, all of type tagId. [<value>,<value>,...] A list of tag payloads, without repeated tag IDs or any tag names. Due to JVM limitations and the implementation of ArrayList, the maximum number of list elements is (231 - 9), or 2,147,483,639. Also note that List and Compound tags may not be nested beyond a depth of 512.
10 TAG_Compound Fully formed tags, followed by a TAG_End. {<tag name>:<value>,<tag name>:<value>,...} A list of fully formed tags, including their IDs, names, and payloads. No two tags may have the same name. Unlike lists, there is no hard limit to the amount of tags within a Compound (of course, there is always the implicit limit of virtual memory). Note, however, that Compound and List tags may not be nested beyond a depth of 512.
11 TAG_Int_Array TAG_Int's payload size, then size TAG_Int's payloads. [I;<integer>,<integer>,...] An array of TAG_Int's payloads. Maximum number of elements ranges between (231 - 9) and (231 - 1) (2,147,483,639 and 2,147,483,647), depending on the specific JVM.
12 TAG_Long_Array TAG_Int's payload size, then size TAG_Long's payloads. [L;<long>,<long>,...] An array of TAG_Long's payloads. Maximum number of elements ranges between (231 - 9) and (231 - 1) (2,147,483,639 and 2,147,483,647), depending on the specific JVM.

The List and Compound tags can be and often are recursively nested. It should also be noted that, in a list of lists, each of the sub-lists can list a different kind of tag.

File Format

An NBT file is a GZip'd Compound tag, name and tag ID included. Some of the files utilized by Minecraft may be uncompressed, but in most cases the files follow Notch's original specification and are compressed with GZip. In the Xbox 360 Edition, chunks are compressed with XMemCompress, a variation of an LZX compression algorithm. There is no header to specify the version or any other information - only the level.dat file specifies the version.

As used in Minecraft

Minecraft's use of the NBT format is odd at times. In some instances, empty lists may be represented as a list of Byte tags rather than a list of the correct type, or as a list of End tags in newer versions of Minecraft, which can break some older NBT tools. Additionally, almost every root tag has an empty name string and encapsulates only one Compound tag with the actual data and a name. For instance:

  • The root tag for most Minecraft NBT structures.
    •  SomeName: The only tag contained within the root tag - it has a name and contains all the actual data.

Another noticeable oddity is that, although the original specification by Notch allows for spaces in tag names, and even the example uses spaces in the tag names, Minecraft has no known files where any tags have spaces in their names. There is also inconsistent use of letter case, mostly either lowerCamelCase or UpperCamelCase, but sometimes even in all lowercase.

Uses

Software

Mojang has provided sample Java NBT classes for developers to use and reference as part of the source code for the McRegion -> Anvil converter. Other than this, the community has developed programs to view and modify compressed and uncompressed NBT files:

Name NBT Version Description Screenshot
CL-NBT 19132 CL-NBT is an NBT implementation in Common Lisp that can read and write NBT files and load and save McRegion files. Anvil format works with slight modification.
MineBack Ultimate 19133 MineBack Ultimate provides a full NBT editor supporting all available types of NBT format file (Map, Level, World etc.). It comes with a modern GUI and many helper functions. File:MineBackNBTEditor.png
NBTEdit 19132 Allows for viewing and modifying NBT files via a Windows tree control. It is outdated not only from being an NBT version behind, but because it does not support multiple tags with the same name and it forces incorrect ranges on some types, and it lacks support for uncompressed NBT files. File:NBTEdit Level.Dat.png
NBTExplorer - Forum Post 19133 Inspired by and based on NBTEdit, this program allows viewing and editing of NBT files via a Windows tree control. It supports compressed and uncompressed NBT files, and allows for direct editing of the NBT structures in MCRegion and Anvil files, level.dat, etc. File:NBTExplorer.png
NBT grammar for Synalyze It! 19132 Using this grammar Synalyze It! displays a color-coded hex dump along with the parsed tag tree. Currently only uncompressed files are supported. File:Synalyze-It-NBT-decoded.png
NEINedit 19132 NBT editor for mac with a text-based tree structure. File:NEINedit.png
NBT2YAML 19133 nbt2yaml presents a command line interface for reading and editing Minecraft NBT files using a custom YAML format. It also includes a Python API for parsing and writing NBT files to/from a simple Python data structure.
webNBT 19133 webNBT is an NBT-editor that runs in modern browsers without requiring the user to download an application or use third-party browser plugins (like Flash or Java).

History

Java Edition
1.0.0
{{Extension DPL}}<ul><li>[[Baked Potato|Baked Potato]]<br/>{{Item
| title = Baked Potato
| renewable = Yes
| heals = {{hunger|5}}
| stackable = Yes (64)}}

A '''baked potato''' is a [[food]] [[item]] that can be eaten by the [[player]].

== Obtaining ==

Baked potatoes can be obtained by cooking [[potato]]es in a [[furnace]], [[smoker]], or [[campfire]].
{{Smelting
|Potato
|Baked Potato
|0,35
}}

{{IN|JE}}, baked potatoes can also be obtained by killing a zombie or one of its variants while it is on fire. The drop chance is still affected by [[Looting]].

=== Chest loot ===
{{LootChestItem|baked-potato}}

== Usage ==

To eat a baked potato, press and hold {{control|use}} while it is selected in the [[hotbar]]. Eating one restores {{hunger|5}} hunger and 6.0 hunger [[Hunger#Mechanics|saturation]].

=== Crafting ingredient ===

{{crafting usage}}

=== Composting ===
Placing a baked potato into a [[composter]] has an 85% chance of raising the compost level by 1. This is more efficient than composting with raw potatoes.

== Sounds ==

{{Sound table/Entity/Food}}

== Data values ==

=== ID ===
{{edition|java}}:
{{ID table
|edition=java
|showforms=y
|generatetranslationkeys=y
|displayname=Baked Potato
|spritetype=item
|nameid=baked_potato
|form=item
|foot=1}}

{{edition|bedrock}}:
{{ID table
|edition=bedrock
|shownumericids=y
|showforms=y
|notshowbeitemforms=y
|generatetranslationkeys=y
|displayname=Baked Potato
|spritetype=item
|nameid=baked_potato
|id=281
|form=item
|foot=1}}

== Advancements ==
{{load advancements|Husbandry;A Balanced Diet}}

== History ==

{{History|java}}
{{History||1.4.2|snap=12w34a|[[File:Baked Potato JE1.png|32px]] Added baked potatoes.}}
{{History|||snap=12w37a|[[File:Baked Potato JE2 BE1.png|32px]] The texture of baked potatoes has been slightly changed.}}
{{History||1.8|snap=14w02a|Baked potatoes now restore {{Hunger|5}} hunger points instead of 6.}}
{{History|||snap=14w27a|Baked potatoes are now used to craft [[rabbit stew]].}}
{{History||1.13|snap=17w47a|Prior to [[1.13/Flattening|''The Flattening'']], this [[item]]'s numeral ID was 393.}}
{{History||1.14|snap=18w43a|[[File:Baked Potato JE3.png|32px]] The texture of baked potatoes has been changed.}}
{{History|||snap=18w50a|[[File:Baked Potato JE4 BE2.png|32px]] The texture of baked potatoes has been changed, once again.}}
{{History|||snap=19w03a|Placing a baked potato into the new [[composter]] has an 80% chance of raising the compost level by 1.}}
{{History|||snap=19w05a|Baked potatoes now have an 85% chance of increasing the compost level in a composter by 1.}}
{{History||1.17|snap=21w13a|Baked potatoes can now be dropped by flaming [[zombie]]s.<ref>{{bug|MC-199065}}</ref>}}
{{History||1.19|snap=22w13a|Baked potatoes can now be found in [[ancient city]] ice box [[chest]]s.}}
{{History|upcoming java}}
{{History||Villager Trade Rebalance<br>(Experimental)|link=Java Edition 1.20.2|snap=23w31a|[[Wandering trader]]s now have a chance to [[trading|buy]] baked potatoes from the player.}}

{{History|pocket alpha}}
{{History||v0.8.0|snap=build 1|[[File:Baked Potato JE2 BE1.png|32px]] Added baked potatoes.}}
{{History||v0.12.1|snap=build 1|Baked potatoes now restore [[hunger]] instead of [[health]].}}
{{History||v0.13.0|snap=build 1|Baked potatoes are now used to craft [[rabbit stew]].}}
{{History|bedrock}}
{{History||1.10.0|snap=beta 1.10.0.3|[[File:Baked Potato JE4 BE2.png|32px]] The texture of baked potatoes has been changed.}}
{{History||1.11.0|snap=beta 1.11.0.1|Baked potatoes can now be used to fill up [[composter]]s.}}

{{History|console}}
{{History||xbox=TU14|xbone=CU1|ps=1.04|wiiu=Patch 1|switch=1.0.1|[[File:Baked Potato JE2 BE1.png|32px]] Added baked potatoes.}}
{{History||ps=1.00|[[File:Baked Potato JE2 BE1.png|32px]] Added baked potatoes to the [[PlayStation 4 Edition|PS4]] and [[PlayStation Vita Edition|PSVita]].}}
{{History||xbox=none|xbone=none|ps=1.90|wiiu=none|switch=none|[[File:Baked Potato JE4 BE2.png|32px]] The texture of baked potatoes has been changed.}}

{{History|new3DS}}
{{History||0.1.0|[[File:Baked Potato JE2 BE1.png|32px]] Added baked potatoes.}}
{{History|foot}}

== Issues ==

{{issue list}}

== See also ==

* {{ItemLink|Poisonous Potato}}

{{Items}}

[[Category:Food]]
[[Category:Renewable resources]]

[[cs:Pečená brambora]]
[[de:Ofenkartoffel]]
[[es:Patata cocida]]
[[fr:Pomme de terre cuite]]
[[hu:Sült burgonya]]
[[it:Patata al forno]]
[[ja:ベイクドポテト]]
[[ko:구운 감자]]
[[nl:Gebakken aardappel]]
[[pl:Pieczony ziemniak]]
[[pt:Batata assada]]
[[ru:Печёный картофель]]
[[th:มันฝรั่งอบ]]
[[zh:烤马铃薯]]</li><li>[[Popped Chorus Fruit|Popped Chorus Fruit]]<br/>{{Item
| image = Popped Chorus Fruit.png
| renewable =  Yes
| stackable = Yes (64)
}}

'''Popped chorus fruit''' is an [[item]] obtained by [[smelting]] [[chorus fruit]], and used to craft [[end rod]]s and [[purpur blocks]]. Unlike raw chorus fruit, the popped fruit is inedible.

== Obtaining ==
=== Smelting ===
{{Smelting
|Chorus Fruit
|Popped Chorus Fruit
|0,1
}}

== Usage ==

=== Crafting ingredient ===

{{crafting usage}}

== Data values ==
=== ID ===
{{edition|java}}:
{{ID table
|edition=java
|showforms=y
|generatetranslationkeys=y
|displayname=Popped Chorus Fruit
|spritetype=item
|nameid=popped_chorus_fruit
|form=item
|foot=1}}

{{edition|bedrock}}:
{{ID table
|edition=bedrock
|showaliasids=y
|shownumericids=y
|showforms=y
|notshowbeitemforms=y
|generatetranslationkeys=y
|displayname=Popped Chorus Fruit
|spritetype=item
|nameid=popped_chorus_fruit
|aliasid=chorus_fruit_popped
|id=559
|form=item
|translationkey=item.chorus_fruit_popped.name
|foot=1}}

== History ==

{{History|java}}
{{History||1.9|snap=15w31a|[[File:Popped Chorus Fruit JE1 BE1.png|32px]] Added popped chorus fruit. 
|Popped chorus fruit are used to craft [[purpur block]]s.}}
{{History|||snap=15w44b|Popped chorus fruit are now used to craft [[end rod]]s.}}
{{History||1.13|snap=17w47a|Prior to [[1.13/Flattening|''The Flattening'']], this [[item]]'s numeral ID was 433.}}
{{History|||snap=pre5|The ID of popped chorus fruit has now been changed to <code>popped_chorus_fruit</code>.}}
{{History||1.14|snap=18w43a|[[File:Popped Chorus Fruit JE2 BE2.png|32px]] The texture of popped chorus fruit has now been changed.}}

{{History|pocket}}
{{History||1.0.0|snap=alpha 0.17.0.1|[[File:Popped Chorus Fruit JE1 BE1.png|32px]] Added popped chorus fruit.}}
{{History|bedrock}}
{{History||1.10.0|snap=beta 1.10.0.3|[[File:Popped Chorus Fruit JE2 BE2.png|32px]] The texture of popped chorus fruit has now been changed.}}
{{History||1.16.100|snap=beta 1.16.100.56|The ID of popped chorus fruit has been changed from <code>chorus_fruit_popped</code> to <code>popped_chorus_fruit</code>.}}

{{History|console}}
{{History||xbox=TU46|xbone=CU36|ps=1.38|wiiu=Patch 15|[[File:Popped Chorus Fruit JE1 BE1.png|32px]] Added popped chorus fruit.}}
{{History||xbox=none|xbone=none|ps=1.90|wiiu=none|switch=none|[[File:Popped Chorus Fruit JE2 BE2.png|32px]] The texture of popped chorus fruit has now been changed.}}

{{History|new 3ds}}
{{History||1.7.10|[[File:Popped Chorus Fruit JE1 BE1.png|32px]] Added popped chorus fruit.}}
{{History|foot}}

== Issues ==

{{issue list}}

{{Items}}

[[cs:Vypukaný květ chorusu]]
[[de:Geplatzte Chorusfrucht]]
[[fr:Chorus éclaté]]
[[it:Frutto di chorus scoppiato]]
[[ja:焼いたコーラスフルーツ]]
[[ko:튀긴 후렴과]]
[[nl:Gepoft Chorusfruit]]
[[pl:Prażony owoc refrenusu]]
[[pt:Fruta do coro cozida]]
[[ru:Приготовленный плод коруса]]
[[zh:爆裂紫颂果]]
[[Category:Renewable resources]]</li></ul>
September 28, 2011Notch works on "saving arbitrary data with item instances."
Advertisement