Brick mosaic maker

CreativeTurn any photo into a brick mosaic you can actually build, matched only to colours still in production. Runs in your browser; nothing is uploaded.

Your file stays on this device. Nothing you open is ever uploaded. There is no server to upload it to.

What this does

Drop in a photo and you get a mosaic you can actually build. It splits the image into a grid, works out the closest real brick colour for every square, and then tells you exactly which pieces to buy and how many.

That last part is the whole point. Plenty of tools will show you a pixelated picture, and it is a pleasant thing to look at for about ten seconds. The hard part is turning that picture into a pile of bricks that genuinely exists, at a price you were expecting, in colours somebody will actually sell you.

How to use it

  1. Drop in a photo. Portraits and high-contrast subjects work best.
  2. Set the grid size. A standard baseplate is 32×32 studs.
  3. Pick your piece. Plates are studded and cheapest, flat tiles give a smooth photographic surface, and round tiles read a bit like a halftone print.
  4. Nudge the colour count down if the parts list has colours you would rather not go hunting for.
  5. Export the instructions, then copy the wanted list to price the whole thing up in one go.

Everything below is the reasoning, if you want it. You do not need any of it to build a mosaic.

Why the colours are restricted

Most mosaic generators match against every colour ever produced. That looks fine on screen and falls apart when you try to buy the pieces.

This tool only offers colours that are both still in production and attested on a 1×1 plate or tile in sets from 2018 onward. That is 51 colours. Restricting it further to the piece you actually chose matters more than it sounds, because not every colour is made as every part:

Piece Colours made Common enough to buy in bulk
Plate 1×1 46 of 51 41
Tile 1×1 48 of 51 41
Tile 1×1 Round 43 of 51 36

Five colours have never been produced as a 1×1 plate at all: Metallic Gold, Metallic Silver, Glow in Dark White, Warm Pink and Blue Violet. A generator that ignores the distinction will happily put them in your parts list, and you find out when the order cannot be filled.

Availability is also wildly uneven. White appears in 1,532 sets released since 2018, Black in 1,496. At the other end, Warm Tan appears in one, and Pearl Titanium and Warm Pink in two each. The median colour is in 155. Seven of the 51 sit below 25, which is the threshold where sourcing a few hundred pieces stops being a purchase and starts being a search, so those are flagged in the parts list rather than silently included.

The same colour is not equally available as every piece, either. White is in 1,532 sets as a 1×1 plate, 1,002 as a flat tile and 548 as a round tile. The availability figures shown to you follow the piece you picked.

Why matching happens in OKLab

Nearest-colour matching in plain RGB is the common shortcut and a bad one here. RGB distance treats a numeric gap as a visual gap, and those are not the same thing: human vision is far more sensitive to some differences than others.

Measured against this tool’s own default palette of 40 plate colours, across 32,768 evenly spaced sRGB colours, plain RGB and perceptual matching choose a different brick 36.6% of the time. Two examples from that set:

Input RGB picks OKLab picks
A sunset orange Orange Nougat
A moss green Dark Bluish Gray Green

The second one is the problem in miniature. Asked for a muted green, RGB returns a grey, because the numeric distance happens to be shorter. With a palette this sparse every decision is a large jump, so a wrong pick is not a subtle shift. It is a visibly wrong brick, in a mosaic where every piece is deliberate.

Matching is therefore done in OKLab, a perceptual colour space in which equal distances correspond much more closely to equal visual differences. The image is also averaged in linear light rather than on the gamma-encoded values, which is the same argument applied one step earlier: averaging the encoded numbers biases every tile darker than the light it represents.

What you get out

Build instructions as a PDF. An overview page with the finished dimensions and piece count, a full parts list with quantities and BrickLink colour numbers, then one page per 32×32 section with a letter code in every square. Sections are numbered so you can build a large mosaic a baseplate at a time without losing your place.

A BrickLink wanted list. The parts list as XML, ready to paste into BrickLink’s Upload Wanted List page, which prices the whole thing across sellers in one go. Quantities are exact and match the printed parts list, so the two documents can be checked against each other. There is no hidden margin for spares.

What one costs to build

Piece count grows with the square of the width, which is the single most useful thing to know before starting:

Grid Pieces Baseplates Finished size
32×32 1,024 1 25.6 × 25.6 cm
48×48 2,304 4 38.4 × 38.4 cm
64×64 4,096 4 51.2 × 51.2 cm
96×96 9,216 9 76.8 × 76.8 cm

Going from 48 studs across to 96 does not double the cost. It quadruples it. Sizes assume the standard 8mm module, and baseplate counts assume 32×32 plates.

Limitations

Photographs with soft, low-contrast lighting lose definition at low stud counts. Faces below about 32 studs across stop being recognisable, because a face needs roughly that many samples before the eye reads it as a specific person rather than a person-shaped arrangement.

A design is only as buildable as its rarest colour, so watch the flagged rows in the parts list. One awkward colour in a 2,000 piece order can cost more than everything else combined, and swapping it for a common neighbour usually costs nothing visually.

The tool does not yet merge runs of 1×1 pieces into larger plates, which would reduce both cost and build time on flat areas of background. Nor does it let you override an individual stud by hand. Both are planned.

Frequently asked questions

Is my photo uploaded anywhere?

No. The image is decoded and processed inside this browser tab and is never sent to a server. Watch your browser's network panel while the mosaic is generated and you will see nothing carrying the photo leave.

Why do some colours show a warning?

Because a colour being in production is not the same as being easy to buy. We flag colours appearing in only a handful of recent sets. They are technically available but slow and expensive to source a few hundred of.

Why are metallic colours excluded by default?

Metallic and pearlescent pieces change appearance with viewing angle, so a single RGB value does not describe them. Left in the palette, the colour matcher picks them for ordinary warm tones like sunset orange.

What size mosaic should I build?

A standard baseplate is 32×32 studs. 48×48 covers four baseplates and is a good balance of detail and cost; below about 32 studs across, faces stop being recognisable.