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
- Drop in a photo. Portraits and high-contrast subjects work best.
- Set the grid size. A standard baseplate is 32×32 studs.
- 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.
- Nudge the colour count down if the parts list has colours you would rather not go hunting for.
- 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.