NUT JOB | Nut, Bolt, Washer and Threaded Rod Factory

by mike_linus, published

NUT JOB | Nut, Bolt, Washer and Threaded Rod Factory by mike_linus Dec 1, 2013

Featured Thing!

51 Share
Download This Thing! Customize Order This Printed Tools & Utilities

Thing Info

158577Views 48706Downloads Found in Parts
Report Thing


Generate your own nuts, bolts, washers and threaded rod by simply typing the required parameters into customizer. Great for replacing metal equivalents in many applications such as the ROLLER RING | Universal Filament Spool Holder http://www.thingiverse.com/thing:176442.
Includes options to generate WingNuts for easy hand tightening and removal. Now includes socket cap, socket button and socket countersunk head types with support for socket, phillips and slot drives.
You can also join threaded rod to form unlimited lengths by creating a custom extended joiner nut.
Uses the PolyScrewThread library from http://www.thingiverse.com/thing:8796

NEW Updated version 6/3/2016: added extended options to control number of facets on nuts, square sockets (or any number of facets) and socket depth control.


Type the required parameters into customizer. Defaults are for a 8mm diameter bolts, rod, matching nuts and wing nuts that work well together (at least with my printer settings) without cleanup or modification. Please be patient rendering and compiling longer components as the rendering is very calculation intensive.
Some default parameters such as the nut outer diameter are deliberately slightly larger than the bolt diameter to produce a snug fit that can still be hand tightened. Some have suggested a 0.8mm difference works well. This may need to be altered depending on individual printer variances, slicing tools, filament etc. Some cleanup may also be required around socket openings depending on first layer print preferences.
I suggest printing a matching bolt and nut and adjusting as necessary. Note: slow print speeds and solid fill are recommended for best results. Printing more than one at a time to improve layer cooling works well.
Use a brim of about 2mm for printing threaded rod and it should be stable up to about 150 mm in length. You can extend the length by creating nut joiners. For example, an 18mm nut height will join two rod lengths very strongly.

More from Parts

view more

Thing Info

158577Views 48706Downloads Found in Parts
Report Thing

A part of these Groups

View All

Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag. Print Thing Tag

All Apps

Customizer is the easiest way to take great 3D printable designs and make them your own. Make your OpenSCAD designs infinitely more valuable by empowering the community to customize them.

App Info Launch App
Customizer Thing App

This App connects Thingiverse with Makeprintable, a cloud-based mesh repair service that analyzes, validates and repairs most common mesh errors that can occur when preparing a 3D design file for p...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Thank you very much - exactly what I needed to make this:


Much appreciated.

Dowel, nuts and bolts for Minifig TP Holder

I would like to learn if/how can I use this to generate a standard M3, 25mm long countersunk bolt+nut. It is late and after staring at this for a few minutes I cannot figure it out ...


I'm trying to make a 63-3 x 45mm rod. Customizer times out on any diameter greater than about 40mm, and OpenSCAD running locally just seems to hang, going back and forth between "not responding" and doing nothing, at roughly 20 second intervals; I've let it run for about 40 minutes or so. It's using 25% of my processor time under Win 7 and the other 75% is idle according to Task Manager. The PC has 4GB of memory, OpenSCAD is using about 600M, there's 2GB "available" and 1.4GB "free". Any help will be appreciated, thanks!

I went ahead and clicked "Create" in Customizer regardless of the "script timed out" error, Customizer did in fact make the parts - maybe that error is only for the preview.

Preview could be the culprit. It is a very different process to rendering and has caused issues in the past with different graphics cards and the number of elements. Rendering is really all that matters for the final result.

Perhaps the advanced preferences in OpenSCAD might help. Some of the calculations are definitely CPU intensive, but it completes OK on my PC. I am using the following settings.

Turn OFF Rendering at 8000 elements
CGAL cache size 104857600 bytes
PolySet cache size 104857600 bytes

They may not be optimal but they seem to be working OK for me (W10 16GB Intel 4600 Graphics). The item you mentioned would likely require at least 10000 elements which could be the issue. I you limit it, it should at least respond, although the object may not be complete.

I apologize for being importunate, but I'd like to reiterate my request for "threaded tube" option. I pretty much never need to print a nut, but I have a frequently-recurring need for threaded holes in printed parts, so currently I make a nut and then slice off the outer hex shape with a boolean. Maybe I should just make a slightly oversized rod and use a negative of that in a boolean operation to form internal threads - will that work, or is there some other difference between bolt and nut threads?

Hi Julia

The threaded tube option is available. Just generate a nut with the number of surfaces you want for the resolution of the cylinder eg. 64 faces is commonly used for a cylinder


Haha, awesome solution, thanks!

Thank You Mike!

Thank you for this. Having my extruder calibrated (https://www.youtube.com/watch?v=YUPfBJz3I6Y) I found that a gap of 0.8 between the bolt and nut fits really well (not too tight, not too loose).

You are welcome. I have added your suggestion to the instructions :)

I'd like to adapt your library to work with my (mcad nuts_and_bolts replacement)[http://www.thingiverse.com/thing:1259672]. I've been playing around a bit, but I'm not sure how the thread algorithm works. I'd like to do a better approximation of the M series thread than the hack that I'm using now.
Can you point me to some documentation of how yours works so I can wrap my head around it better?

Thanks again for the sweet library.

nuts_and_bolts - MCAD replacement (nuts, bolts, washers, T-Slots)
by txoof
txoof - in reply to txoof

By the way, you can get a HUGE performance increase if you remove the "intersection()" call inside the screw_thread module.

I just now realized that the thread library comes from this thing: http://www.thingiverse.com/thing:8796

I'll shout out to the creator for more help with the post above as well.

Poor man's openscad screw library
by aubenc

Really outstanding thread library. Very, very elegant! I'm really keen to give this a play. Thanks for sharing!

Very nice. Thank you. To print out a M2, M1 screw with 2 cm length what would be the correct values ?

Nice job Mike!

Thanks for sharing your hard work.

Phenomenal job on this one. So versatile and useful. A drive type of none would be useful feature for creating a toolless bolt that you can tighten with just your fingers.

Actually, you have that option already. Just select socket head, slot drive, slot width '0' and 'include' texture :)

Perfect. Thanks!

I don't know how much work it took to create this but it sure has saved me a lot of work. Thank you for publishing this.

Prints up beautifully also. Smooth operation between screw and nut.

Really Nice ! Good Job & thanks for sharing !

I love this! however I have a question. Would it be able to customize the nut a little more?
What I mean by this is. I created a wonderful screw by your customize but I wanted to create a nut very similar.
My head of the screw has a round top because in your model you can specify the amount of sides and I want to create a nut with a round head. obviously in most cases this is a nonsensical design because you can hold on to it to tighten it. But I wanted to glue this within a tube so the nut needs to be round. Are you able to add a side option to the nut as well? I suspect it is similar code as your nut :)

It is actually on my todo list - hopefully I will get some free time soon :)

yeah!!!!!!! thanks so much :)

New version released with the features you wanted. Enjoy :)

yeaaaaaaaaaaaaaaah!!!! thanks so much :) :)

hi, may you create an very simple version of this customizer where we can chose (for ex.) m1-m24 and the lenght
that would be really great because i'm a noob at english so i have a quite few problems to use this one :)

agreed! one that used standard conventions like m1-m5 would be a god send for the laymen like us

I need a bolt and nut to fit a DSLR camera / flash mount. I think it is a 1/2-20 . . . I haven't had any luck searching for it, but wondered how I might customize "This Thing" so that it would do the trick.

if you're talking about the bolt under the camera, that's a "c-style" mount, which is a 1/4-20

When i update "thread_step" it's fine for bolt but it doesn't update nut thread, any work-around? It also would be nice for nut to have the same setting like "head_diameter" and "head_height"


Thanks for making the scad file available. For some reason the customizer has been having major problems today, but I was able to run the scad locally and get just what I wanted to make some adjustable feet for my printer. This is a really useful design, many thanks!

great work!
For some reason when I try to download the file from customizer, it gives me a json error:

<JSON::ParserError: A JSON text must at least contain two octets!>

Any ideas?

This is one of the best. Thanks for sharing.
One thing I would like is a Wing Bolt similar to the Wing Nut.

It´s god to see screws and Nut, what side is it, metrisch or zoll ?
i would like to have a collection, in M5 and M6. can you tell me a price? i don't have until now a Printer
kindly regard thomas [email protected]

i will print them for you if your in the uk

The settings are all in metric. Unfortunately I cannot offer a printing service for you, but there are other sites that will do this for you such as 3dhubs.com.

Fantastically useful, in particular for its non-standard thread angle, which makes support-less printing easy. One feature I'd really like to see is a third nut option to just make an internally-threaded tube rather than a hex nut or wingnut. I need this component frequently for doing threaded bosses or holes in parts rather than nuts per se, and having to manually crop the hex shape off each time is a nuisance.

Thanks for your great work and for sharing.

New version released with the features you wanted. Enjoy :)

Thank you so much!

Hi Julia

Thanks for the feedback. I have a couple of enhancements I will be adding shortly, including the option you suggested. Stay tuned.


Great, Mike, thanks! If I may add another request: round threads, as widely used on bottles and jars.

This is the most useful app. I have come across in the past year. I have printed dozens of nuts and bolts. So versatile and strong .
Thank You ...

Wow! about the best thing i have found on thingiverse to use THANK YOU

I just printed off a nut and bolt. I can't believe they actually work and without any cleanup. Thanks for making this, it's incredible.

This comment has been deleted.

This is one of the absolute best customizer apps. Strike that, it is the best. i use it to print parrot toys for them and they think you are the best for this work. Thank you from the bottom of our human and feathered hearts.

Phenomenal model!!!
I know you have it set up to work with customizer now. Have you thought about setting it up so it can be called as a module from OpenSCAD? I don't know enough about customize to know if both can be made to work but it should be doable.

I have a project where I needed to put two different threads on different parts. I simply took all the up front variables and made them module parameters - I now from my model call nut_job(type="rod", ....) with just the parameters needed for that particular rendering. Then the part can be easily translated to fit where I want it in the model.

How small do you think these will print?

It depends on the printer, but anything smaller than 4mm diameter gets a bit tricky on my printer. If you keep the thread step at 2mm, step shape at 45 degrees and print multiple at once to improve cooling between layers, you can push the limits.

I'm not sure why, but when I download the .scad file and try to make a hex screw longer than 29mm (the length is the only setting i changed), the rendered screw is completely messed up. This does not happen in the customizer, though, so I'm not sure what is causing it. I am using the latest OpenSCAD release.

I just tested using the latest version of OpenSCAD on a 45mm bolt without any issues on a windows pc. Have you tried using another computer or altering the advanced preferences on OpenSCAD?

Ok, I just checked and it's only the preview mode that's messed up. When I render it looks correct, thanks. The only difference is that I'm running on linux.

The preview mode looks like this: https://i.imgur.com/2ybyxHK.png

OpenSCAD preview mode is bit buggy for example, difference calculations where the object subtracted has the same dimension value as the object it is subtracted from, often causes display anomalies. In some of my designs I have added small values eg. 0.001mm to fix display anomalies when using preview mode (f5) to render with OpenCSG, rather than the full CGAL render (f6). Customizer also uses an older version of OpenSCAD.

How about a acorn nut to round out the collection.

Mar 28, 2015 - Modified Mar 28, 2015

amazing!!! keep up man! with this, you have saved one my important project

Is the washer that is in the picture, in the downloaded files? I've re-downloaded several times and opened all .stl files, but cannot find the washer anywhere. Anyone have any ideas why I'm not seeing it?

Great upload by the way! Massively useful files! Thanks for the time spent on these.

I have added a sample washer :)

This comment has been deleted.

This is awesome! Just wish I could customize it to do SAE instead of metric.

If you need to you can look up a table of SAE thread pitches expressed in mm. Example: http://www.newmantools.com/tech/pitchconversions.htm

Awesome, thanks for the suggestion! I will have to give that a shot! Trying to build bolts for something I can't find the hardware for, but it is all standard.

This comment has been deleted.

Very nice! Thank you.

This comment has been deleted.
This comment has been deleted.
This comment has been deleted.
This comment has been deleted.

Hi mike_linus,

Thanks for the cool customizer! Can I also ask that you extend it for Robertson (Square) heads? Red Robertson is the most common size for general use. But Green is also used in smaller screws.

There is a nice chart on wikipedia:

Thanks again

Would it be possible to extend it for https://en.wikipedia.org/wiki/Torx Torx heads?

I will add it to my 'to do' list :)

This comment has been deleted.
This comment has been deleted.

Especially when using the customizer
Thank you very much :-)

This comment has been deleted.

Would be nice to be able to print insulated mounting HW for T0-220 and similar semiconductors.

Hi Jerome

You will need to change the variable values at the start of the openscad file eg.

/ [Component Type] /
type = "bolt";//[nut,bolt,rod,washer]

To generate a nut, change the value to:

type = "nut";//[nut,bolt,rod,washer]

You can change any of the key parameters by changing the variable values in the top section of the file and pressing f5 to regenerate. If you use customizer, these values are displayed as selectable options.

I hope that helps.


Mike, you're my new hero !
you've done a very pro and intuitive work ... I've also found the way to change a nut into a wingnut !
Thank you so much and take care !

Hello Mike.

I am a beginner on Openscad.
I have just opened your "scad" file and only see a single bolt without any other objects (nuts, wing, rod, ring, ...), even if i click on "display all"
Is it normal ?
Am i supposed to "unlock" the other objects in the code to see and modify them ?

Independently on your answer, i would like to thank you for your marvelous idea (and obviously i am not alone to do it) !


This comment has been deleted.

wow needed this!! thx

WHERE SHOULD I SEND ALL THE MONEY I'LL BE SAVING??? Wow this is fantastic! Thank you for this!!!

This comment has been deleted.

Great work ! - Is it possible to define for UNC threads?

I have had a look at doing this but it gets a bit messy trying to support all the older standards eg. British, UNC. I suggest using a conversion table If you need an older thread type.

This comment has been deleted.

I was able to use your bolt and nut to embed in a larger C clamp design for clamping a lamp on a table. Thanks!

I used these on a recent design. Thanks!

Only suggestion I would make is to make it so the wings on the wingnuts could be re-sized. They were a tad big for my design as the bolts were fairly close together. I made it work but it would be awesome if I could make the wings a bit smaller.

I have added adjustable wing sizing on wing nuts :)

You rock!

wish there was a way to make small bolts and screws work :/ printer just cant seem to get to a fine enough detail for the threads

We're looking at some lazer/epoxy printer models for fine detail stuff. There's one on the market that is quite affordable, but the "ink" is not so affordable. So it would be perfect for the screws and other tiny bits. here's an example on youtube: https://www.youtube.com/watch?v=snOErpOP5Xk This tech is pretty new but expect it to really take off in the next while. It's efficient, high detail, pretty plastics, and very compact for the home market. It's just pricey for the photosensitive polymer "inks." Teamed with a cheaper filament printer, you would be quite versatile.

There are some techniques to try to print smaller objects. The main issues are cooling and the thread step angle. Most printers struggle with a step angle less than 45 degrees, but you can improve results by optimising cooling. Even for ABS, cooling fans can be used effectively on small objects. Also try slowing the print speed and printing multiple objects at the same time. This ensures there is plenty of time for cooling between layers and the print head does not spend too much time directly over the object, effectively overheating it.

I hope that helps - good luck :)

thank you for sharing this project

This comment has been deleted.
Feb 5, 2015 - Modified Feb 5, 2015

Standard bolt, nut and wing nut printed great on FlashForge Creator Pro with PLA, 0.2 mm layer height (first layer .35 mm), 210°C extruder temp, 70° first and 60°C others print bed temp, 20% infill. The nut is a bit loose though, I'll try reducing the outer diameter to 8.8 mm.

Thank you very much for this models and the scad file!

New Year update. Phillips and Slot drive support added.

Mike :)

I just released an update which includes optional surface texturing on socket heads and control over the number of facets on hex head bolts.

Mike :)

Thanks for this great tool, Mike. I downloaded OpenSCAD and used it to customize bolts for a plastic construction toy that had lost several parts. It worked great! Any chance that you could add the ability to inset screwdriver sockets in the hex heads? A Philips head option would be a great addition to this already useful toolset. Thanks again!

I just released an update with phillips and slot drive support. You can add the drive support to any head except hex at this stage.

Mike :)

Thanks for the feedback. I will see what I can do - the holiday project list is growing!

So freaken cool...thanks for making such a nice customizer!

You're welcome - thanks for the feedback :)

Hi Mike, great design :D I have used this a few times and love how easy it is to use. Is there any way you can change the HEAD on the ROD/HEX section to include X/inputted head facets? One application for this set, I wanted to make a thumbscrew, and have more than 6 facets on the head, and turned to your app - wishing this feature was there :)

Thanks again!

Thanks for the feedback. Is the preference for controlling the number of facets or providing surface texturing? I will see what I can do, time permitting.

Well both would be preferable, but if I had to pick then surface texturing.

I have updated the code as follows:

  • included ISO262 metric references to assist in generating ISO compliant threads.
  • improved the wingnut algorithm to better support unusual nut sizes.

Enjoy :)

Could you possibly make a version with customary measures, instead of metric ?

Oct 5, 2014 - Modified Oct 5, 2014
mike_linus - in reply to robotsinc

Sorry, unlikely to have the time. I suggest converting. "treybert's" comments below have some good tips.

Very useful thank you!

I wish customizer would work for me , all my pc's wont load it

Have you tried opening the OpenSCAD code directly in OpenSCAD and manually modifying the parameters? At least that will get the job done and help isolate the problem.

I don't have that, ill look for it ,I take it that its opensource and a free download?

It is open source and free - great software and well worth the time to get to know. Here is the link. http://www.openscad.org/

I suggest having a read of the first few pages of the user manual and you should be good to go (Customizer is just a set of scripts that run on top of OpenSCAD).

thanks great info, ill have fun tonight reading and tinkering

Jun 19, 2014 - Modified Mar 24, 2016

A very excellent generator. I just used it to make a 3/8-16 bolt with a through hole for a tripod time lapse rig I've been working on.
I stumbled through the metric to sae conversion a little, mostly because the terms are different.
So to save anyone else the trouble, all you need to change is
thread_outer_diameter (major diameter)
thread_step (pitch or TPI or threads per inch)
step_shape_degrees from 45 to 30
inch:mm conversions for threads can be seen here: http://en.wikipedia.org/wiki/Unified_Thread_Standard

hey Nice work mike_linus .. printed your model using UM2.. both the nut and bolt fits perfectly!
Can you tell me what profile have you used? Also about the entry and exit angle. I tried creating the same model in solid works using the parameters given in the customizer.. but couldn't get the correct fit after printing. rajimut

Hi rajimut. Not sure what 'profile' you are referring to. The design is written in OpenSCAD and the source is included.

mike_linus: I recently made use of a comment that was invaluable. If you generate the threads as repeatable sections, i.e. make a ten turn thread as 10 x 1 turn, then OpenSCAD caching massively increases compile speed.
Please see http://www.thingiverse.com/thing:311031http://www.thingiverse.com/thi... instructions, it is an invaluable lesson to any developer.

OpenSCAD ISO metric thread library / functions (updated)
by TrevM

Thanks for the tip. I am using the third party polyscrew library http://www.thingiverse.com/thing:8796http://www.thingiverse.com/thi... which is where the enhancements would be best exploited. Hopefully they are watching this thread.

Poor man's openscad screw library
by aubenc

Yes... "we" are watching :)
cannot tell how I did that OpenSCAD script, it's so long time ago... hopefully some day I will be able to polish a couple of details in another library that should be more easy to use and better coded.

this thing is awesome just one small idea any chance you can make an option to create all 3 at once instead of one at a time

Thanks for the feedback. Generating a nut, bolt and washer at once can be done, but would slow down compile times and add considerable complexity to the settings. I am not sure of the overall benefit except for some specific cases. Creating a "hollow" option is an interesting idea that I will look into, when time permits :), although depending on the material and use, you would need to be careful to maintain the strength.

Regarding the "hollow" matter... it's quite straight forward to do it at slice-time. It can be done by setting wall thickness value (or number of shells) together with infill = zero. At least this is how I do it.

Thank you very much!

Thanks for the feedback. I will see what I can do.

Nice work!

But it would be more helpful if we could have some presets for common thread piches etc.

Well done!! Love the wingnut!