NBT Libraries
expert
There are plenty of existing NBT libraries, as not everyone has the time or motivation to create their own. This here is a curated list of existing solutions, sorted by programming languages.
| Name | Description | Language |
|---|---|---|
| nbtx | NBT implementation in pure Rust | Rust |
| HematiteNBT | A full-featured Rust crate for Minecraft's NBT file format, including Serde support. | Rust |
| Quartz | Provides support for encoding and decoding Minecraft's NBT format. | Rust |
| SimdNBT | A very fast NBT serializer and deserializer. | Rust |
| fastnbt | Fast serde serializer and deserializer for Minecraft's NBT and Anvil formats | Rust |
| shen-nbt5 | A Fast NBT parser/writer (warning: lot's of unsafe (from author)) | Rust |
| CrabNBT | Up-to-date Rust crate for easy and intuitive working with NBT data. | Rust |
| zuri_nbt | Zuri's Nbt library | Rust |
| NBT.js | A JavaScript parser and serializer for NBT archives. | JavaScript |
| NBTify | Parser & writer NBT library intended for usage in a web browser. | JavaScript, TypeScript |
| Prismarine-NBT | Parser & writer NBT library for Node.JS and web browsers, with support for big-endian, little-endian, and varint. | JavaScript, TypeScript |
| twoolie/NBT | This is mainly a Named Binary Tag parser & writer library. | Python |
| nbtlib | A python library to read and edit nbt data. | Python |
| Python-NBT | A python lib for reading and writing nbt files | Python |
| gophertunnel/nbt | Gophertunnel's Nbt library | Go |
| go-nbt | This package implements the Named Binary Tag format of Minecraft. | Go |
| cNBT | As simple (and, consequently, as fast) as possible NBT file parser. | C |
| libnbt | A lightweight library to work with NBT, written in C. | C |
| libnbt++ | A free C++ library for Minecraft's file format Named Binary Tag (NBT). | C++ |
| cpp-nbt | A C++23 header-only library for reading/writing Minecraft NBT data. | C++ |
| Cloudburst/nbt | An Named Binary Tag library built including VarInt support introduced by Minecraft: Bedrock Edition in 0.16.0 | Java |
| BitBuf/nbt | Flexible and intuitive library for reading and writing Minecraft's NBT format. | Java |
| hephaistos | This library is both a NBT library and a Minecraft Anvil format library. | Java, Kotlin |
| Nedit | A simple, lightweight NBT parsing library | Java |
| knbt | Kotlin NBT library for kotlinx.serialization. | Kotlin |
| KotlinNBT | With a builder DSL and type-safety | Kotlin |
| simpleNBT | Streams, ByteBuffer, NIO, Endianness, Zlib, Gzip, Any Input/Output, Examples in Comments. | Kotlin |
| php-nbt | A full PHP implementation of Minecraft's Named Binary Tag (NBT) format. | PHP |
| PMMP/nbt | PHP library for working with the NBT (Named Binary Tag) data storage format, as designed by Mojang. | PHP |
| TagForge | A library made for the serialisation and deserialisation of MC NBT | Nim |
| Venom | An NBT decoder written in pure Elixir. | Elixir |
| ScalaNBT | Scala library for NBT io with some Mojangson support. | Scala |
Not all libraries are maintained anymore. If any popular nbt libraries are missing, please add them here.
LevelDB Libraries
This is a list of libraries for working with Bedrock Edition world LevelDBs.
| Name | Description | Language |
|---|---|---|
| MCBE-LevelDB | Library for reading and modifying Bedrock Edition LevelDBs in Node.JS. It also contains schemas for different Bedrock NBT structures, including for things outside the LevelDB, such as level.dat and .mcstructure files, and many other utilities for working with Bedrock data. | JavaScript, TypeScript |

