What this does
Drop in a photo or a logo and this generator gives you a mosaic you can actually build out of LEGO® bricks. 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 an image. Logos, portraits and high-contrast subjects work best.
- Pick a size: one of the common sizes, which come in whole baseplates, the one suggested for your picture, or any width on the slider.
- 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.
- Touch up any studs that came out wrong with Edit tiles.
- Export the instructions, then copy the wanted list to price the whole thing up in one go.
Edit the mosaic tile by tile
No photo comes out perfectly at 48 studs across. An eye lands on the wrong shade, an outline breaks, a stray stud sits in a flat background. Press Edit tiles to fix them by hand before you buy anything:
- Paint with any colour in the mosaic’s palette: click a stud, or drag across several. The colours already in the mosaic come first.
- Pick colour takes a colour from the mosaic itself, as does Alt-click while painting.
- Undo and Redo step back and forward a whole stroke at a time, and Reset to generated puts every stud back, which can be undone too.
- Zoom makes single studs easy to hit on a big mosaic or a phone, where two fingers move the view.
Only colours from the palette are offered, so the edited mosaic stays buildable, and the parts list, the instructions and the BrickLink wanted list all come from it. The size, piece and colour count are locked while there are edits, because changing them makes the mosaic again from the photo.
Your edits are saved in this browser as you go, so a refresh does not lose them: next time, the page offers to open the edited mosaic, even without the photo. Only the grid of brick colours is kept, never the photo itself, and it never leaves your device. Reset to generated deletes it.
While editing, B paints, I picks a colour, Ctrl+Z undoes and Ctrl+Shift+Z redoes (Cmd on a Mac).
Choosing a size
The common sizes snap to what can be bought. LEGO sells baseplates in two sizes, 32×32 studs and a grey 48×48, and each common size is a whole number of them across: 32 studs is one 32, 48 is one 48, 64 is two 32s, 96 is two 48s or three 32s, and 128 is four 32s. Each card shows the baseplates and pieces for your picture, since the height follows the picture’s shape: a 4:3 photo 96 across sits on four 48s, and a 3:2 one on six 32s rather than four 48s with a third left bare.
One of them is marked Suggested, and it is measured for your picture. The mosaic is made at each size and its colour difference from the picture worked out. More studs always come closer to the photo, but pieces grow with the square of the width, so past a point each extra stud adds less detail than it adds cost; the suggestion is that point. For the 24 photographs of the Kodak test set it suggests 64 studs across for 21 of them and 96 for the busiest 3, and a logo 48 or 64, depending on how much edge its shapes have. It is a starting point rather than a rule: a portrait that will hang on a wall may deserve more. The measurement, with the same photograph at four sizes, is in How big should a LEGO mosaic be?.
Mosaics from a logo
A logo is the easiest thing to build here, and usually a better first project than a portrait.
A photograph is continuous tone, so reducing it to studs is a lossy translation and it needs a large grid before a face reassembles. A logo is already flat colour with hard edges, which is exactly what a mosaic is made of. It survives the translation close to intact and stays readable at grid sizes where a photograph has turned to mush, and that makes it far cheaper: piece count grows with the square of the width, so halving the grid quarters the bill.
Two things to watch.
Colour. A brand colour is specified exactly, and the palette here is 51 colours, the ones both still in production and made as a 1×1 piece. The odds that one of them is your exact hex are poor, so the matcher picks the nearest and the result sits a little off. Perceptual matching means it will be the closest colour visually rather than numerically, but on a flat expanse of one colour the shift shows more than it would inside a photograph, where the tiles around it hide the error. Look at the preview before you order anything.
Fine detail. Thin strokes, small text and tight letter spacing are the first things to go. A wordmark generally needs a bigger grid than the symbol beside it, so if the lettering is not surviving, consider building the symbol on its own.
Drop the colour count right down for a logo. It costs nothing visually, because the artwork genuinely does only have a few colours, and it keeps the parts list short and cheap.
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, and it narrows again once you pick a piece, because not every colour is made as every part. Some are never produced as a 1×1 plate at all, so a generator that ignores the distinction will put pieces in your parts list that have never been manufactured.
Availability among the survivors is wildly uneven, from colours in over a thousand recent sets down to colours in one. The parts list flags anything below the threshold where sourcing a few hundred stops being a purchase and starts being a search, rather than including it silently, and the figures follow the piece you picked rather than a single headline number.
The full breakdown, with all 51 colours and their set counts per piece, is on which colours LEGO 1×1 plates come in, which is where the data behind this tool is published.
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. How much darker, measured on the Kodak photographs and on five common downscalers, is in Pixel art downscaling: why most tools make it too dark.
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 section with a letter code in every square. A section is a 32×32 baseplate or a quarter of a 48×48 one, and 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 of 32×32 | 25.6 × 25.6 cm |
| 48×48 | 2,304 | 1 of 48×48 | 38.4 × 38.4 cm |
| 64×64 | 4,096 | 4 of 32×32 | 51.2 × 51.2 cm |
| 96×96 | 9,216 | 4 of 48×48 | 76.8 × 76.8 cm |
| 128×128 | 16,384 | 16 of 32×32 | 102.4 × 102.4 cm |
Going from 48 studs across to 96 does not double the cost. It quadruples it. Sizes assume the standard 8mm module. Baseplates are counted in whichever of LEGO’s two sizes fits the width in whole plates; where both do, the one leaving less baseplate bare, and where that ties, as at 96×96, the fewer: four 48s rather than nine 32s.
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. That is planned.