Five encodings, one drop zone
Java big-endian, Bedrock little-endian, Bedrock varint network NBT, nameless-root network NBT from Java 1.20.2+, and Bedrock's headered level.dat. Detected, not guessed.
Supports Minecraft Bedrock Edition and Java Edition — and every server core for both, popular or obscure: Vanilla, Paper, Spigot, Purpur, Folia, Fabric, Forge, NeoForge, Mohist, Sponge, Bedrock Dedicated Server, PocketMine-MP, Nukkit, PowerNukkitX, Cloudburst, Dragonfly, Endstone, LeviLamina and the rest. Full list.
Bedrock Edition is supported, with every Bedrock server core — and so is Java Edition, with every Java server core, down to the obscure ones. Drop a level.dat, playerdata, .nbt, .mcstructure, .schem or .schematic file into the box below, edit any tag in the tree, and download it back in exactly the same binary format. Byte order, header and compression are detected automatically. Everything runs in your browser — no upload, no account, no install.
Drop any NBT file here
level.dat · .nbt · .mcstructure · .schem · .schematic · .dat · chunk dumpsNBT (Named Binary Tag) is one format with several encodings, and every Minecraft edition, launcher and server core uses a different combination of them. This editor implements all of them and picks the right one from the bytes themselves, so you never have to know which variant a file is before you open it.
| File | Comes from | Encoding | Compression |
|---|---|---|---|
level.dat | Java world — Vanilla, Paper, Spigot, Fabric, Forge | Big-endian, named root | gzip |
level.dat | Bedrock world — BDS, PocketMine-MP, Nukkit, MCPE | Little-endian + 8-byte header | None |
<uuid>.dat | Java playerdata/ | Big-endian | gzip |
servers.dat, hotbar.nbt | Java client | Big-endian | None |
idcounts.dat, raids.dat, map_*.dat | Java world data/ | Big-endian | gzip |
.nbt | Structure blocks, datapack structures | Big-endian | gzip |
.schem, .schematic | WorldEdit, Sponge, MCEdit | Big-endian | gzip |
.mcstructure | Bedrock structure blocks | Little-endian | None |
| Chunk payload | Region .mca extract, LevelDB value | Either byte order | zlib or none |
| Packet dump | Bedrock protocol, Java 1.20.2+ protocol | Varint LE / nameless BE | None |
world/, Bedrock servers in worlds/YourWorld/, Android in games/com.mojang/minecraftWorlds/<id>/. Stop the server first so the file is not being written while you copy it.Java big-endian, Bedrock little-endian, Bedrock varint network NBT, nameless-root network NBT from Java 1.20.2+, and Bedrock's headered level.dat. Detected, not guessed.
Decompression and recompression use the native Compression Streams API, so a Java level.dat round-trips into a file the game accepts unchanged.
TAG_Long values are held as BigInt. World seeds and UUID halves survive editing instead of being mangled by floating-point rounding, which is where most browser NBT tools break.
Java writes modified UTF-8 (CESU-8), Bedrock writes standard UTF-8. The editor encodes per edition, so emoji and non-Latin world names come out intact.
Arrays live in typed arrays and the tree renders lazily, 200 entries at a time. A megabyte of chunk NBT opens without freezing the tab.
Find any tag by name or value anywhere in the file and jump straight to it with the path expanded.
Dump the whole tree as SNBT — the text form used by /data and datapacks — for diffing, sharing or pasting into a command.
Read a Bedrock file, write Java big-endian gzip, or the reverse. Useful for protocol work, tests and tooling.
The file is read with FileReader, parsed in JavaScript, and handed back as an in-memory blob. No upload endpoint exists.
NBT is written by the game, not by the server implementation, so any core that stores a Minecraft world stores it in one of the encodings this editor reads. That is the whole list below, and it is not a marketing list: a core that writes a world writes it in Vanilla's shape, because the client on the other end has to read it.
level.dat headerBedrock Dedicated Server (BDS), PocketMine-MP (PM3, PM4, PM5), Nukkit, Nukkit-MOT, PowerNukkitX, Cloudburst Server, Dragonfly, Endstone, LeviLamina and BDSX, Allay, JukeboxMC, GoMint, Sculk, ElementZero, LiteLoaderBDS, plus the MCPE and MCBE clients themselves on Android, iOS, Windows, console and Switch. Same worlds/<World>/level.dat, same header, same tags — see the server-side workflow.
Vanilla, CraftBukkit, Spigot, Paper, Purpur, Pufferfish, Folia, Leaves, Gale, Petal, Airplane, Sponge (SpongeVanilla, SpongeForge), Fabric, Quilt, Forge, NeoForge, Mohist, Arclight, Magma, Ketting, Banner, Cardboard, Glowstone, Thermos, Uberbukkit and every other fork, modpack server or ancient legacy build. If it writes world/level.dat, this editor opens it — details here.
Geyser, WaterdogPE, Waterfall, Velocity and BungeeCord do not own worlds; they move NBT over the wire. Captures from those sockets are network NBT — varint little-endian on the Bedrock side, nameless-root big-endian on Java 1.20.2+ — and both open here directly.
Custom forks, private cores, teaching projects, a server you wrote yourself: if the file is NBT, the editor detects which of the five encodings it is and opens it. Nothing here is keyed to a core's name.
The page exposes its engine on window.NBT, so the same parser that powers the UI can be driven from the browser console or reused in a userscript:
const bytes = new Uint8Array(await file.arrayBuffer());
const { root, format, compression, headerVersion } = await NBT.read(bytes);
root.value.find(t => t.name === "LevelName").value = "New World";
const out = await NBT.write(root, format, { compression, headerVersion });
Tags are plain objects — { type, name, value, listType } — arrays are Int8Array, Int32Array and BigInt64Array, and longs are BigInt. The full NBT format reference documents every tag type and how each encoding differs.
Yes, and open source under the MIT licence. There is no paid tier, no sign-up and no upload quota, because there is no server component at all — the whole editor is one static page plus two asset files.
Both. Java Edition files are big-endian and usually gzip-compressed; Bedrock files are little-endian, and level.dat carries an extra 8-byte header. The editor detects which one it received and writes the same variant back on save.
No. The file is read locally with the FileReader API and the download is produced from an in-memory blob. Once the page has loaded you can disconnect from the network and it still works.
Yes. The layout is mobile-first with 44 px tap targets and a fixed action bar. On Android you can pick a world file straight out of a file manager; on iOS the file has to be in the Files app first because of sandboxing.
NBT is the binary encoding Minecraft stores on disk. SNBT is its text form, the syntax you type into commands like /data merge. This editor reads binary NBT and can export SNBT, which makes it easy to diff two files or paste a structure into a command.
Desktop NBT editors such as NBTExplorer, plus the various single-purpose web tools that only handle one edition. See the NBTExplorer online comparison for what carries over and what does not.