node package manager



JavaScript NBT encoder and decoder


Nibbit is an easy to use encoder and decoder for the NBT serialisation format, created for and popularised by the game "Minecraft". It'll decode uncompressed NBT data only - decompression is your job.


  1. Accurate encoding and decoding of most NBT tag types (see below for details)
  2. Convenient AST generator functions
  3. Asynchronous and streaming parser (thanks to node-binary)

Bugs and Limitations

  1. Can't represent integers above 2^53 accurately due to JavaScript's numeric type being double all the time.
  2. Can't encode arbitrary objects for the same reason. Not enough information is available about the numbers being encoded. All encoding has to be done on a specially constructed AST.


Take a look at docs/ in the repo or the same thing hosted on github. Please note that these are HTML files generated by docco so you can also just read the comments in the source files in lib/ if you like.

Example Usage

var fs = require("fs"),
    zlib = require("zlib"),
    nibbit = require("nibbit");
// decoding 
fs.readFile("./data/test.nbt", function(err, compressed) {
  zlib.gunzip(compressed, function(err, uncompressed) {
    nbt.decode(data, function(err, decoded) {
// encoding and manual AST construction 
var ast = nbt.compound([
  nbt.string("Bananrama", "name"),
], "hello world");
nibbit.encode(ast, function(err, uncompressed) {


3-clause BSD. A copy is included with the source.


  • GitHub (
  • Twitter (
  • Email (