Spring Making / Wire Bending Machine




About: Software developer during day, hardware maker at night.

Well, this machine is not only about making springs. It is a wire bending machine capable of bending 0.8/0.9/1 mm wire into any 2D shape. But yeah, the coolest thing I was able to make with it so far was the spring. How cool is that?

The main goal was to make it quite precise. Other DIY wire bending machines are not very precise and their bends tend to have quite a big radius. I like to work with nice sharp bends!

The second goal was to make it as easy to build as possible with commonly available parts and components. All the structural parts are 3D printed and all the metal parts are available in most of the hardware stores.

Why I build this? Check out my other creations. I am a passionate free-form electronic circuits artist and this awesome machine will ease my job when doing repetitive tasks or when there are a need identical parts.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Watch the Video!

I've tried to record the whole build to help you understand it. It's always better to see the build in action. Continue with steps below to collect all the material and start building step by step!

Step 2: Gathering All the Required Parts and Material

3D printed parts (GitHub)

  • Bender
    • Tool Head
    • Motor Frame
  • Feeder
    • Motor frame
    • Bottom frame
    • Wire guide
    • Idler gear carriage
    • Idler gear spacer
    • Feeding gear spacer
    • Bending plate (template)
  • Straightener rollers (2x)
    • Bed frame (2x)
    • Top gears frame (2x)
    • Roller (14x)
  • Spool holder

Screws & bolts

  • 3x16 wood screw (16x)
  • M3x10 hex-socket bolt (4x)
  • M3x12 hex-socket bolt (18x)
  • M3x20 hex-socket bolt (6x)
  • M3x40 hex-socket bolt (4x)
  • M3 nut (10x)
  • M3 washer (14x)


Bearings & Other

  • Welding Machine Feeding gear V-grove (30mm diameter)
  • Small steel spring 4x6mm
  • Bearing 3x10x4mm
  • Bearing 6x15x4mm
  • 6mm steel rod
  • 2mm thick small sheet of steel for bending plate (optional)
  • Wood board for a base (minimal size - 450x100mm)

Step 3: Printing Plastic Parts

All the STL files for the plastic parts are available in the project's GitHub repository. Download them and start printing. I always design the parts to omit the need for using supports so the post-processing is much easier and parts are cleaner.

I was printing with 0.15mm layer height, 3 perimeters and 40% infill with Gyroid pattern setup. It does not matter if you use PLA or PETG. The parts will not get hot so PLA is just fine. See you in 2 days! (That's the print estimated time)

Step 4: How Does It Work?

While you are printing the plastic parts let's have a look at how the wire bender works and what components it consists of (from right to left):

  • Spool holder - it holds the spool of wire for the machine to process.
  • Straightener rollers - set of 7 rollers to make the wire as straight as possible. Working with straight wire is crucial. That's also why there are 2 of them in a row.
  • Feeder - you can find a similar mechanism in your 3D printer. A set of gears that pull the wire from the spool, through the rollers and pushes it to the bending head. The feeding gear must have enough drag on the wire so it will not slip thus making the machine inaccurate. More on that later.
  • Bender - by rotating the pin on its head it bends the wire into programmed shape.

It is all controlled by a single Arduino UNO with a CNC shield. Arduino takes a commands from computers and translated them into movements of the stepper motors. Like any other CNC machine.

Step 5: The Bender

You are about to build your own Bender! Don't worry. It won't destroy your liqueur bar. To start, take the wooden base and screw in the base for both bender and feeder motors. Use 3x16 wood screws. It's important to install both frames because their position needs to be precise to each other as shown on the layout image below.

Continue with installing one of the stepper motors into the bender motor frame and fix it with four M3x10 screws. Orientation does not matter. Now press the bender head onto the motor shaft. They match each other. Pretty simple, huh?

Step 6: The Feeder

Unlike the Futurama's Bender this one needs a wire to make it happy, so let's build a wire feeder. The frame is already installed so the first step in building the feeder is to build a carriage for idler gear which will press the wire against the feeding gear. Press the plastic spacer inside a 6x15x4mm bearing to make the hole for an M3 bolt. Insert the M3x20 bolt. Press an M3 nut into the carriage and screw the bearing with the bolt. Make sure the bearing can spin freely. Press a second M3 nut into the motor frame (from the motor side in the left bottom corner) and screw the carriage through the small bracket with M3x20 bolt. Do NOT tight the bolt too much, the carriage has to move freely. Lift the carriage up and put a spring into the hole beneath it.

Take the second stepper motor and press it into the motor frame. Do not screw it yet, another plastic part is still needed. Press the feeder gear spacer onto the motor shaft and install the feeding gear.

The feeding gear I am using is taken from a MIG welding machine. Similarly to my wire bending machine, the welding machine needs a wire to operate. So it is a perfect fit. The gear has two grooves on the side. One for the 0.8mm wire and one for 1mm wire. The grove bites into the wire and pushes it through the machine without damaging it. I was previously experimenting with gears with teeth used in 3D printer extruders. But the teeth were leaving visible marks on the wire.

Feeder and bender are connected with a bending plate - 2mm thick metal plate with a small grove on the back which feeds the wire straight into the center of the bending head to make a perfect bend. There is a 3D printed plastic bending plate, which works fine if used. But gets worn out quickly and needs to be replaced frequently. So use it if you cannot make the identical part from the metal. Otherwise, use the plastic version as a template.

Do you have your bending plate? Good. Take wire guide plastic part and press four M3 nuts into holes on the back of it. Now screw the bending plate on it with M3x20 bolts. Place the wire guide on the front of the feeder motor frame and fix it to the motor with four M3x12 bolts. Now adjust the bending plate position. It has to be in the exact center of the bending head. Lose the four bolts on the bending plate and adjust firmly the bending plate into the center of the bending head. Tight the bolts again.

The feeder is ready. If you have straight wire, you can use the wire bender right away. Otherwise, you need a straightener.

Step 7: The Straightener Rollers

The wire is usually supplied in the form of a spool. To bend a wire you first need to straighten it. It's true. Straightener consists of 7 rollers (4 on the top and 3 on the bottom) which can be pressed against each other to make a proper tension on the wire. It also prevents the wire from twisting while bending.

Start with assembling the rollers. Press the 3x10x4mm bearing into the plastic roller housing. Insert M3x12 bolt from one side and M3 washer from the other side of the roller. The washer will prevent the wheel from rubbing on the frame. Screw all the rollers to the bed and top frame. Insert top frame with 4 rollers onto the bed frame. There is a set of V grooves to make the proper contact. Press two M3 nuts to the bottom side of the base frame and insert two M3x40 bolts from top to the bottom. This bolt will adjust the tension on the wire. It can be loose right now.

You can save some money on the bearings for the rollers. Print a Straightener_RollerNoBearing part instead of Straightener_Roller. But the performance will be much worse.

To achieve even better results, use 2 straighteners in a row.

Step 8: Spool Holder

The spool holder is just a simple cylinder that holds the wire and lets it unwind from the spool. Attach it to the end of the machine with the use of four 3x16 screws.

Step 9: Wiring It Up!

First, the wire for bending has to be supplied to the machine. I am using 0.8mm or 1mm brass wire in a form of 5m or 25m spool.

Wire comes from the spool first through the set of straightener rollers. Just press the wire inside the rollers. Then it goes through the feeder. Adjust the position of the feeding gear so that the grove you want to use is flush with the surface of the wire guide. Press the lever on an idler gear and push the wire all the way through the feeder up to the bending plate. Release the lever and let the idle gear to press against the feeder gear. Now you can roll with the feeder gear by hand to push the wire to the bending head. Gently adjust the tension on the rollers by tightening the bolts. The rollers should not spin freely but the wire has to move smoothly. Unwind some of the wire to make sure you start with a nice and straight one.

Second, the controller electronics has to be wired to the machine as well. I am using classic Arduino UNO with CNC shield with two A4988 stepper motor drivers. Feeding motor is connected to the Z-axis and bending head motor to the X-axis. Drivers are set up for the highest possible precision - ale the 3 jumpers under the stepper drivers are inserted. Everything has to be powered with a 12V 3A power supply.

Step 10: Running the Code

Everything is wired up? Good. You can finally try to run the machine. I am using GRBL in combination with cncjs. It is designed to run a milling machine, but it works perfectly for any kind of CNC. GRBL is a firmware that has to be flashed into the Arduino UNO. Check out the project page for instructions. It provides a command-based interface to communicate with the machine over the USB (serial). But instead of typing some commands manually to the console, there is a nice cncjs web client for it. Install the GRBL on the Arduino and cncjs on your computer.

When ready you can connect to your machine and start trying moving with the head and wire manually by pressing Z+/- or X+/- buttons.


; 1 degree = X0.1
; 10 mm = Z10

Above commands defines the calibration. Simply said it is a set of values defining how to translate a number given in code to the movement of the motor. For example, if you set to move Z-axis by 30 it actually means it will push the 30mm of wire through the feeder.

Setting bender head Zero position

Movement of a bending head is defined from a well-known fixed position of the bending head. In my case, it is the position where the bending pin on the head is facing left. See the picture below. It's wise to mark this zero position on the head to be able to reset the head to the very same position. There is no such need for defining zero position for feeding gear because it always moves relative to the current position.


G1 Z1
G1 X2
G1 X-6

This is an example of the bending program. It is a sequence of instructions on how to move the motors. It's hand-written.

G91 - use relative coordinates (required before any Z-axis movements)
G1 Z1 - feed 1mm of wire
G90 - use absolute coordinates (required before any X-axis movements)
G1 X2 - rotate the bending head to position 2 (this number has not units)
G1 X-6 - rotate the bending head to position -6

If you repeat above steps 100 times you get a spring bending code. You can find more source files to begin with below.

Step 11: That's All!

No, wait. It's not. This machine has few limitations or rather simplifications to make it easy to construct by anybody. It can bend only in one direction because the bending head cannot skip the wire to the other side. It can only make 2D shapes. So stay tuned because I want to make some upgrades.

Don't forget to share your creation! Like this article. Also, consider supporting me on Patreon or by buying some of my products in my Tindie store.

I am Jiri Praus.

Instagram, Twitter, YouTube


Metal Contest

Second Prize in the
Metal Contest

Be the First to Share


    • Furniture Contest

      Furniture Contest
    • Reuse Contest

      Reuse Contest
    • Hot Glue Speed Challenge

      Hot Glue Speed Challenge

    38 Discussions


    Question 10 days ago on Step 10


    Great bender. Well done.
    Do you have a circuit diagram?

    Ham It Up

    5 weeks ago

    Excellent project! Very creative design!


    6 weeks ago

    Máte to pěkné, ale podle mně je na pružinky rychlejší i jednodušší soustruh... a vlastně na to nepotřebujete ani elektriku a můžete si takhle udělat i mašinku na točení rukou :) (samozřejmě, chápu, že Váš koníček je elektronika... :) )

    Jinak jsem koukal na Vaše věci, všímám si, že používáte ostré ohyby. Je to něco netradičního: Já pro změnu jsem spíš pro organické tvary a plynulé ohyby, ale je na Vás, jestli je také chcete zapracovávat, je to Vaše tvorba :)


    Question 6 weeks ago

    I was waiting for this instructable for a long time. Is there any gcode generator for these kind of machines, like slicers for 3d printers?

    6 answers

    Reply 6 weeks ago

    :D OMG what!!! :D i will start learning how to generate gcode immediately :D can you advise any online source for learning purposes?

    Thanks for the reply :)


    Reply 6 weeks ago

    For this machine there is only a need to learn a few limited G-Code instructions.
    For the guy above who doesn't like metric, issue a G20 for SAE or a G21 for Metric.
    For movement you only need G0 to G1 each will move the X-Axis (rotate the head in this case) by some distance. The G0 is movement at the fastest rate the machine can do, the G1 is where you can specify a speed. G1 X5 F5 would move the head 5 units at 5 units per minute... so you can control the speed.

    If you put in G1 Z10 F5 then the wire would feed out 10mm at 5mm per minute. Or if you set the machine to G20 (SAE) it would go 5 inches at 5 inches per minute.

    Other than that... G90 says move in absolute mode... so if you had kicked out 5mm of wire and issued a G0 Z1 command... it would suck 4mm of wire back into the machine. (Or try to.) If you issued a G91 then the same G0 Z1 command... it would be read as... "From where you are now...kick out another 1mm of wire."

    Since there is no spindle or coolant... and no other axis to interact with... those are pretty much all you need to play with for whatever you want to do.

    Great machine... but I would have calibrated the head so that the rotation angle is known... then issuing a G0 X90 would give the proper rotation... and you could possibly have an easier time calculating head movements.


    Reply 6 weeks ago

    You are so great! Can I use your explanation in the article?


    Reply 6 weeks ago

    Of course. If I can be of any help let me know.
    You may be interested in my YouTube page as well.


    Reply 6 weeks ago

    Wow! Thanks for sharing a bit of your knowledge here, this is a good start for people like me (non-engineer, hobbyist, etc.).


    Tip 6 weeks ago

    Looking at your device, the head could be semi-automatically homed. It won't hurt a stepper to stall, so you could command a G1F3X90 for example... (X being large enough that it will cause contact, F being large enough that it isn't a hard crash.) the head would slowly rotate to the point where it could not any more... going click...click... click... and end up at a known position. Then... rotate the machine back a known amount to the zero point. From there use a G10L20X0Z0P0 to set that point as the new home. (I used G-Code for LinuxCNC... but I think the Gerbal set uses the G10L20 command.)

    Yup... it does: https://github.com/paulusjacobus/Gerbil/wiki

    Hopefully this is helpful.

    1 reply

    Question 6 weeks ago

    I checked your link for the welding wire feeder, and it does not look the same. There is a1.0/1.2mm or 0.8/1.0mm option, and options for VGroove, UGroove & Knurled. Which version(s) did you order?

    1 answer

    Answer 6 weeks ago

    Thank you for pointing that out! The one I am using is from a local store, the one I've posted is a little different but that is the only one I have found online. But I wanted to give you an easy to buy option. I have the one I've linked home as well, it works the same just needs a different spacer. Order V-grove. I've updated the item on the list.


    6 weeks ago

    Can you make a device you can attach to a drill thats quicker & more simple to use? I do, not, have the brain power you do, to build, let alone operate this device. Got any "Spring Making Devices For Dummies"?

    2 replies

    Reply 6 weeks ago

    This machine is not just about the sprign making, you can bend wire into various shapes. You can make square spring if you wish :D


    6 weeks ago

    That is cool. I was going to build one and then I saw the dimensions were metric. My son has convinced me that there is no need to build anything with metric dimensions.

    2 replies

    Reply 6 weeks ago

    I think you are closing a lot of amazing doors in front of you. But you know, it is everyone's choice to make.