Moose's Minecraft Mural Maker logo Moose's Minecraft Mural Maker

Turn any image into Minecraft blocks

A Minecraft pixel art and mural generator. Drop in a picture, pick the blocks you want to use, and get back a mural you can build — as a datapack to import without mods, or a Litematica schematic to paste in creative or build in survival.

Open the Mural Maker See how it works

  • Fast & intuitive
  • Customizable
  • Runs in browser
  • Nothing uploaded
A knight in the sunset drawing converted into a Minecraft mural, built from real block textures
Minecraft observer block faces
All faces supports every viable block rotation
Minecraft mural of a vase drawn in fine lines
Subtextures considers the full texture of each block
Minecraft mural with transparent blocks
Transparency handles transparent blocks correctly
Minecraft mural with overlay textures
Overlays supports overlay textures

What this tool does

It converts images into blueprints placeable in Minecraft.

Instead of manually colour- and texture-matching an image to Minecraft's limited colour palette, you provide a source image and target dimensions, and the engine handles the translation.

Everything runs locally, right in your browser. Your image is never uploaded anywhere: once the generator page has finished loading, you can continue even without an internet connection.

The same sunset knight image shown before conversion and after, rebuilt from Minecraft blocks
Original
Mural
Drag the handle to compare the original image with the block-built version.

How it works

  1. Load an image

    Drop in any picture and set the size of the mural in blocks. The preview solves as you change things.

  2. Choose your palette

    Restrict the blocks to what you can actually gather, or to a deliberate aesthetic. All survival blocks are available.

  3. Tune the block-picking algorithm

    Adjust the dithering, pre-processing and multi-pass refinement to get the best result for your image.

  4. Export and build

    Take a datapack that places the mural with vanilla commands, or a .litematic schematic that you can paste in creative or build in survival.

The Mural Maker interface: settings panel on the left, block preview on the right
The Mural Maker interface

How initial block-matching happens

Most similar tools average each block texture down to one colour and pick whichever average is nearest to the image pixel. That usually works for mapart, but not for actual walls, ceilings and floors of your build.

One reason for this is that RGB distance does not accurately match human vision. This converter works in the CIELAB colour space instead, which is designed to be perceptually uniform: a given mathematical distance in this space corresponds to a roughly equal perceived difference in colour.

Another reason is that Minecraft blocks are not flat colours. While stone and cobblestone average out to almost the same shade of grey, cobblestone's texture is busy and noisy while stone is smooth. To capture this, the matcher doesn't downscale the image beforehand. Instead, it divides the image into a grid of square chunks corresponding to each block in the mural, comparing each chunk directly to the full block texture to match surface detail as well as average colour. You can prioritize what matters most with three weights:

  • Macro colour. The block's average colour against the target pixel. This dominates for skies, gradients and large flat regions.
  • Micro spatial. Where the light and dark parts sit inside the 16×16 texture. This is what keeps edges, lettering and outlines readable at small mural sizes.
  • Micro texture. How busy or noisy the texture is. Raising it matches grain; lowering it avoids visual clutter in areas that should read as smooth.

Building a block palette

The palette is the single biggest factor in how the result looks and how buildable it is. This tool ships with a full palette of all survival blocks that have unique square faces, but you can restrict it to whatever subset you want.

Every block you allow is a block the matcher may use. Restricting the palette to what you can actually obtain — or to a deliberate aesthetic, like glass only, or coloured blocks only — usually produces a better result.

Keep in mind that blocks have different visual and technical properties. Some are transparent, some emit light, some obey gravity, and some are block entities that render differently and may tank game performance if overused. The palette tab has filters for these properties so you can avoid blocks that will cause problems in your build.

The same mural solved twice: with the full block palette on the left and a stone-only palette on the right The same mural solved twice: with the full block palette on the left and a stone-only palette on the right
Left: full unrestricted palette. Right: the same image restricted only to coloured blocks. Same solver, very different build.

The palette screen has filters for the properties that matter in practice:

  • Is block entity — shulker boxes, ticking functional blocks and similar. They render differently and/or cost performance in bulk.
  • Emits light — glowstone, sea lanterns, etc. Fine deliberately, distracting by accident.
  • Obeys gravity — sand, gravel and concrete powder will fall if there is nothing beneath them.
  • Transparent — glass, leaves and such show whatever is behind the mural.
  • Is pain to get — technically available, realistically not worth it.
  • Deteriorates — blocks that will transform if certain conditions are not met.

You can also ctrl+click any block in the preview to disallow it from the palette. It will be moved to the disallowed list, and the solver will not use it until you allow it again.

Dithering

When the palette cannot reach a colour, dithering fakes it by mixing neighbouring blocks so the eye blends them at a distance. It trades a bit of noise for a wider apparent colour range. Mostly useful for bigger murals.

A sky gradient rendered without dithering, showing hard bands. Same sky gradient dithered smooth.
The same patch of sky. Left: no dithering — the gradient collapses into hard bands. Right: Floyd-Steinberg blends the same blocks smooth.

This tool supports four dithering algorithms, which scatter the error from each block to its neighbours in different ways. Each has its own trade-offs, and the best choice depends on the image and the palette.

  • Floyd-Steinberg pushes the leftover error to neighbouring cells as it scans. The smoothest gradients, and the slowest to compute.
  • Atkinson spreads less of the error, so contrast survives better, but it can band in very smooth areas.
  • Bayer 4×4 and 8×8 — a fixed crosshatch pattern. Fast, completely predictable, and it tiles rather than drifting — which some people prefer for the deliberate retro look.
  • Random noise scatters error randomly. Hides banding well, looks grainy close up.

When to use it: photographs, skies, skin tones, anything with smooth gradients. When not to: logos, flat-colour illustration, and existing pixel art, where the source is already quantised and dithering only adds speckle to areas that should be solid.

Intensity controls how much error gets spread. Low values dither only where the palette genuinely cannot reach, which is often what you want.

Pre-processing the image

These adjustments happen to the source image before any block is chosen, so they change what the matcher is aiming at rather than how it aims. That's pretty much what you could do in Photoshop or GIMP before dropping the image into the generator, but it's convenient to have them built in.

  • Noise reduction earns its place on JPEGs, where compression artefacts otherwise get faithfully converted into scattered wrong blocks. Sharpening helps small murals keep their outlines.
  • Brightness is useful when the source is too dark or too light for the palette to reach, while Contrast can help when the palette is limited and cannot reproduce the full range of shadows and highlights.
  • Hue shift steers the whole image on the colour wheel toward what your palette actually has. Saturation adjusts the intensity of colours in the image: lowering it can help when the palette is greyscale, while raising it can help when the palette is mostly coloured blocks.

Placement in the world

A vertical mural is a wall, seen from the side, while a horizontal one is a floor or ceiling, seen from above or below. Vertical murals can also face 4 cardinal directions. This changes which face of each block you are looking at, and therefore changes the palette: many blocks have separate textures and rotation rules for their top, bottom, and side faces.

Biome tint affects the colour of certain blocks. Grass blocks, leaves and a few others take their colour from the biome they are placed in. The same grass block is a different shade of green in a taiga than in a swamp.

Multi-pass refinement

The first pass picks each block by looking at one chunk of the original image at a time. That is fast and mostly right, but it cannot see if a bigger cluster of chunks together has come out wrong. The size of the cluster is tweaked by the error matrix size.

The second pass goes back over the chunk clusters that scored worst and re-solves them, judging the result on how closely the whole cluster matches the source image overall. The error-seeking threshold controls how much of the calculated mural gets revisited — 0.25 means the worst quarter of it.

Two weights steer it: recursive denoising (MSE) favours raw colour accuracy and reduces speckle, while edge preservation (SSIM) favours structural similarity and protects edges and shapes. Raise SSIM when detail is getting smoothed away; raise MSE when the result looks noisy.

Overlays (experimental)

Overlays place a second thin block on top of the base one — rails, redstone dust, vines, glow lichen, etc — to reach colours and textures the base palette cannot manage alone.

Minecraft has rules for how an overlay block can be placed, and for how it may change when adjacent to a similar block. The converter checks those rules when it places an overlay, so the preview shows what you will actually get in game.

Every allowed overlay multiplies the size of the palette, so calculation gets considerably slower and uses a lot more memory, particularly with Floyd-Steinberg and Atkinson dithering.

Building it: datapack or Litematica

The finished mural built in a Minecraft world, seen from a distance
The finished mural, built in game.

Datapack

Exports a zip you drop into your world's datapacks folder. Reload, run the generated command(s), and the mural places itself. This works in vanilla Minecraft with no mods, but does require operator permissions to run the command.

The mural builds relative to where you are standing, so position yourself first.

Litematica schematic

Exports a .litematic file for the Litematica mod. Drop it in the schematics folder and load it in game.

This is the better choice for survival: Litematica shows you a "hologram" of what to place and gives you a full material list up front, so you know exactly how much of everything to gather before you start.

Ready to build something?

Open the Mural Maker