Given that I have a 3D printer and a five-year-old son, it was inevitable that I would eventually print some LEGO-compatible bricks.1 I knew that bricks were a popular “look what I can print” demo, but after I tried out a few of the popular printable LEGO-compatible models  , I found that none of them were designed accurately enough to reliably interlock with genuine LEGO bricks, and none of the libraries included support for any shapes besides the basic rectangular brick.
To solve this problem, I’ve written a LEGO-compatible brick generator that is more feature-rich than any other. It has support for customizing the following brick aspects:
- Length, width, and height
- Shape: brick, tile (smooth-topped brick), wing, slope (brick with an angled face), curve (brick with a curved face), or baseplate.
- Size: LEGO or DUPLO
- Hollow or solid studs (the little bumps on top of the bricks)
- Horizontal rod holes
- Vertical axle holes
- Notched sides on wings so that the wing can be attached to a plate.
- Slope/curve length/angle
- Curve style: convex or concave
- Double-sided bricks (studs on both the top and bottom)
- Roadways: smooth sections on the top of a brick
These characteristics can combine to create millions of unique bricks. You can generate anything from this vanilla 2×4:
to this extensively customized brick that you’ll never be able to buy from LEGO:
This assortment of bricks contains examples of all of the available customizations:
But this is still just a tiny fraction of the possible permutations.
Here are a few bricks I’ve printed. I haven’t gone crazy with customizations, mainly because what I print is dictated by what my son asks for, and he’s only been requesting wings, wings, and more wings so he can build spaceships.
The script is available on GitHub, and I’ve published it on Thingiverse as well for easy customizing. (It’s by far my most popular Thingiverse model.) Download the script, print your own bricks, and send me a photo.
1. At the request of the LEGO corporation, homemade bricks should be called “LEGO-compatible bricks,” not “LEGO bricks.” FYI.
37 comments on “Print your own LEGO-compatible bricks”
Awesome, thanks for sharing your hard work! Can I ask what printer you have, or what to look for in a printer to make these blocks at good quality, I.e respectably good ‘snap’ when connecting with actual Lego blocks?
I have an Orion Delta 3D. I don’t know what to look for specifically, but on whatever printer you try it on, you’ll want to play with the stud_rescale parameter to get the studs to print at just the right size so they’ll give that satisfying snap.
Awesome work! And thanks for sharing on Github. How’s the fit with original Lego blocks? Would you recommend any other 3D printers than the Orion Delta 3D?
The fit with real LEGO bricks is acceptable to my six-year-old son, but not satisfying to me. That’s entirely dependent on the printer though.
I’ve only used the Orion Delta, so I can’t recommend any other printers.
Thanks Chris, much appreciated :)
I don’t have a 3-D printer, but I need about 15 special size Lego window frames. I am building a 1:25 scale model of my own house, but the standard Lego windows available are too small for most of the windows on my model.
Do you produce Lego-compatible bricks for people commercially?
I don’t, but you might have some luck on Shapeway’s community forum: http://www.shapeways.com/connect?li=nav
That sounds like a fun project though; would you mind posting a photo if it?
I’ve always wanted a sailboat hull with a detachable keel. Could you print something like that?
Cut this print lego compatible rail road tracks?
No, there’s no railroad track brick support, but there are a number of LEGO traintrack projects on Thingiverse: http://www.thingiverse.com/search?q=lego+train&sa=
Hi. I have really been dying to get some custom made pigeons to put on buildings in my cityscape? Would you be able to produce some 5-10 as an order? Thanks!
I’m not able to, but you might have some luck on Shapeway’s community forum: http://www.shapeways.com/connect?li=nav
Thanks for the lead. I’ll check that out!
What is the cost difference or savings between printing your own and purchasing the lego blocks?
It’s maybe a few pennies cheaper, but the time commitment and the lower quality don’t make up for the price difference. If you can easily buy the replacement piece you need, you’re likely better off just buying it.
you are awesome for doing this! srsly.
any idea/thoughts/leads how i could get/make/design 2×2 by 2×2 angle brackets with arbitrary angles of my choice instead of just the half-pi standard?
Sure, I wrote up an OpenSCAD script to generate angle plates: http://github.com/cfinke/LEGO.scad/blob/master/LEGO-Angle-Plate.scad
This is the default output: a 90º plate with both sides 2×2.
But you could make the angle anything. Here’s one with an angle of 45º and different size sides:
Here’s the underside of one with an angle of 100º, a 2×3 base, and a 4×1 overhang:
Depending on the size of the overhang, you’re limited to about 112º before it starts to get chopped off. This script doesn’t do plates with negative angles (the overhang jutting up from the base with the studs on the “bottom” of it), but it’s not hard to imagine that it could be modified to do so. Also, both sections of the plate are the standard 1/3 brick height. I think the real LEGO angle plates have the overhang as thick as a baseplate, but I didn’t have one handy to measure. I’ll find one and update the script if necessary.
Actually manufacturing these is up to you — you could print them yourself (somehow) or order them from Shapeways or another print-on-demand service. They *should* work, but maybe do a test run before ordering a gross. :-)
Hello Mr. Finke, I really appreciate your work since it could help me imagine new set of LEGO-compatible bricks. You wrote on this page that the fit with LEGO bricks is acceptable to your 6-old son, but not satisfying to you. Why do you think so? Is it too hard or too easy too assembly or disassembly? Before I can verify your dimensions with my own prints (the MakerGear M2 I will use seams to reach as good accuracy as your Orion Delta), I would like to understand where your bricks show some defect. I thought the genuine LEGO bricks could have some subtle taper angles on their sides, on the sides of their studs and maybe elsewhere… Thank you.
I would like to print some of the space lego from the late 1970’s and early 1980’s, the sets sell for a premium on eBay today and it would be amazing to have them printed again as lego no more make them. How does copyright work with LEGO designs, do the copyrights expire after X number of years? Is there anyone printing the 1970’s and 1980’s space lego currently?
According to LEGO’s legal department:
As I understand it, as long as you don’t post designs online that claim to be genuine LEGO bricks (thus, the “LEGO-compatible” disclaimer I used), you can create and print any brick designs you like for your own use.
Hi like what I have seen you have done. Since I am in the UK, could you give some details on the Orion Delta 3D printer. I don’t know what and it’s consumables. How long to print an item. Really looking at printing tools, head gear, food stuff, swords, sheds etc. Have you tried any of these sort of things. Thanks for the information and work you done will be checking out the links.
I love it. Have you created a project to print heads with custom faces (such as from a JPG or something so that I can print faces of my family onto some lego heads and snap them onto lego bodies)? Also, how long would you printer take to print one head?
No, my printer can only print one color at a time, so custom faces are out of the question. You might have luck printing faces onto stickers correctly sized to fit exactly on a blank yellow LEGO head.
First : Very good lib thanks for your effort in This
Working on my first custom made lego compatible servo block.
Checking dimensions I of the blocks I noticed that you have a
horizontal_hole_z_offset = (brand == "lego" ? 5.8 : 5.8 * 2);
where on “lego bricks dimensions” google search found the measurement should be 5.6.
Is there a specific reason for your library to use 5.8 ?
I based all of my numbers on physical measurements of the bricks I had in order to confirm the numbers I found online; it’s possible I mis-measured or typo-ed that number. I will check today and update the library if it’s wrong; thanks for the heads-up.
I re-measured four different bricks from different sets and got 5.8 for the height of the center of the horizontal hole each time. You’re right that the various sources online disagree on this value, but I feel confident that 5.8 is correct.
Wow! What a cool dad! I am new to 3D printing so wanted to ask what programme one needs to use with your GitHub code. It is 3D-printer specific i.e. You import it into the software that comes with your 3D printer? Or is there a more ‘universal’ Programme?
The code is for a program called OpenSCAD: http://www.openscad.org/
You may find it easier to use the Customizer at Thingiverse: http://www.thingiverse.com/apps/customizer/run?thing_id=615256 There, you can choose your parameters, and Thingiverse will create an STL file that you can download. Your printer should have instructions on how to get it to print a model from an STL file.
Christopher, this is awesome!!! Thank you for dedicating so much time to making this happen! I have a Mirco M3D 3D Printer http://www.printm3d.com. Your code printed a 2×2, 1/3 height, plate piece almost perfect! The top and studs were perfect, the size was perfect, but the bottom did not have enough space between the inner wall and the center circle to attach to normal LEGOs. So I am going to have to increase the space by lowering the size of the walls. I will post the new values for the Micro M3D and some pictures when I get it figured out. Again, thank you for the hard work!!!
So I changed this variable
wall_thickness=(brand == “lego” ? 1.05 : 1.5); // wall_thickness=(brand == “lego” ? 1.45 : 1.5);
And I got a pretty good fit. One side is not holding tight, but the other side is.
This could be interesting for people looking for extremely hard to find pieces (e.g. Lego 47675/47676) that run for $20-$30 dollars a piece.
Thanks for posting.
Great with the stud_rescale option to fit the studs. On my ultimaker3 however the bottom holes do are too narrow. Do you have any already have plans to incorporate a hole_rescale parameter?
I have seen the wall_thickness hack above, but I think a stud_rescale-like solution is better. Possibly with linking effective_hole_size = hole_size * stud_rescale * hole_rescale, so that they fit themselves perfectly?
It’s tricky, since on my printer, the bricks only fit together if the studs are rescaled and not the holes (and the holes aren’t one single object that can be rescaled, they’re just the absence of the other objects on the underside of the brick). I don’t have a satisfactory solution for this.
Is it also possible to design and print corner slope elements (convex and concave) like these: https://www.bricklink.com/v2/catalog/catalogitem.page?P=3675#T=C and these: https://www.bricklink.com/v2/catalog/catalogitem.page?P=99301#T=C ???
And would it be possible to create elements with combinations of slope angles like a 3x2x1 element, that has a 45 degree slope on one side, and a 33 degree slope on the other side? These bricks are very important for complex roof geometries. It’s strange, that Lego does not manufacture them…
It’s not possible with the current version of the code, but I’ll add it to my todo list.