Guides / Building & Resources

A map pixel is one byte, and two of its bits are brightness

61 base colours × 4 shades = 244 colours from a 16,384-byte array. Only one of the four shades is the block's real colour; the other three are darkened to 86%, 71% and 53%.

Every filled map in Minecraft is the same size on disk: a colors byte array of exactly 16,384 entries, which is 128 × 128. That is true of a scale-0 map covering 128 blocks and a scale-4 map covering 2,048 blocks — the pixel count never changes. Everything else about map art follows from that one fact.

The byte splits in two

Each of those 16,384 bytes is not a colour. It is a base colour and a shade packed together:

baseColorId = colorId >> 2      // 0–63
shadeIndex  = colorId & 3       // 0–3

So the low two bits are brightness and the rest is which block you are looking at. With 61 base colours defined (id 0 is the transparent/unexplored slot), the highest byte a real map holds is 61 × 4 + 3 = 247.

61 × 4 = 244 distinct colours, which is the entire palette available to map art. Not 61, and not 256.

Only one shade is the block's actual colour

The four multipliers are not evenly spaced, and one of them is 1.0:

shade indexmultiplieras a percentage
0180 / 25570.6%
1220 / 25586.3%
2255 / 255100%
3135 / 25552.9%

Shade 2 is the block's texture colour, untouched. The other three are darker versions of it, and the darkest — shade 3 — is only just over half brightness.

This is why staircased map art looks so different from a flat one. A flat build can only ever produce one of these four per block, so a flat map has 61 colours available. Varying the height unlocks the other three shades of every block and takes you to 244. The palette does not get wider — you get no new hues — it gets four times deeper in value, which is exactly what dithering needs.

Note also that the shade ordering is not monotonic: index 3 is the darkest, not the brightest. Sorting by index and expecting a gradient gets you 71%, 86%, 100%, 53%.

Scale multiplies area, never resolution

The scale field runs 0–4, and the ground it covers is 128 × 2^scale blocks on a side:

scaleblocks coveredone map pixel is
0128 × 1281 block
1256 × 2562 × 2 blocks
2512 × 5124 × 4 blocks
31,024 × 1,0248 × 8 blocks
42,048 × 2,04816 × 16 blocks — exactly one chunk

A scale-4 map covers 256 times the area of a scale-0 map using the same 16,384 bytes. That is the whole reason map art has to be built at scale 0: at any other zoom, one pixel is an average of several blocks and the image you carefully placed is resampled away.

The scale-4 row is worth remembering for a different reason — one pixel is precisely one chunk, which makes a fully-zoomed map a usable chunk grid.

What this means for a corrupt file

If a map_<id>.dat has a colors array that is not 16,384 bytes, it is not a map with missing pixels — it is not a readable map at all. There is no partial-length form. The array is always full-size, with unexplored areas stored as colour id 0 rather than omitted.

Map Art Extractor →

More guides

Browse all →

Looking for more Minecraft tools?

A suite of client-side generators, viewers and converters — all free, all in your browser.