MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now


Parametric Auto-Rewind Spool Holder

by VincentGroenhuis Dec 1, 2018
Download All Files

Thing Apps Enabled

Please Login to Comment

Anyone else having the issue that the rewinder pulls too hard and pulls the filaments out of the MMU2? Just about every time my selector moves to start a new filament on a MMU print, the previous one gets sucked out by the rewinder far enough that it is no longer engaged by the bondtechs on the MMU. I wonder if I went overboard removing friction and snags from my feedpath and now there isn't enough friction to keep the filaments from getting pulled out.

Two possible causes:

1) Your PTFE tubes are too short or have to large diameter. Please use 2.0 mm ID as supplied by Prusa and don't cut it too short.

2) Hub dimensions do not match your spool. If the hub blades are pressed in too deep then there is too much force on the filament.

Hey mate, Been playing witht he customizer for a few hours tonight and cant for the life of me work this out ,

So i have 5 printed and working great on the printed half moon shape axles, and i want to change the printed axles to the MMU2 axles that come with the original kit , the issue i have is i dont want to print the entire hub again , i just want to print the spring with the extension on it so it fits into the spool holder stands, if you get me ?

any help would be great cheers

If you set "Use Flat Side Insert"="no" then the hole will be round and then you can try to find a way to attach it to the round axle.
The UniversalAutoRewinder SpringRound style is hard to implement here as the springs need to be printed flat on the printbed, so it cannot have features sticking out in both directions.

This is a beautiful and compact design. Thank you so much for your contribution to the community!

How much work do you think would be involved in trying to combine this re-winder with a drybox like this one? https://www.thingiverse.com/thing:2352833

I'm trying to find an elegant solution for keeping spools dry while printing, but also somehow handling auto-retraction.

UltraDry Spool Holders
by gcalin

The are some mods by the community to work with certain types of dry boxes, check the links on the main page.

Any tips for for more powerful springs? I’ve printed in PETG and am using bearings but they often have a hard time rewinding new 1kg spools. If the spoils are 1/4 empty or so, they work 100%.

Seems odd, the rewinders should work fine even with 3kg spools. Not being able to do so might be caused by friction somewhere in the system. Are the bearings parallel to the surface?

Of course you can make the springs more powerful using the customizer. The two relevant parameters are springBladeWidth and springBladeThickness. Just play with the values and examine the results.

Thanks for the tip about rejiggering the width & thickness. I might give that a go. There is definitely some friction in my PTFE tubes leading into the MMU, but the spools feel pretty smooth.

What material are yours printed with?

Mostly PLA, sometimes I experiment with PETG springs!
Friction in PTFE tubes does not matter at all, that is handled by the extruder motor and not by the rewinder spring.

The image of the black spool and hub that is low profile? What settings did you use to get it to do the low profile. I've been messing around with the settings but can't seem to create that same low profile version.


Set second spool width+diameter to the dimensions of your spool, then set 1st spool width to a ~ 5mm smaller diameter and ~15mm smaller width so that the hub blades do not stick out and you get low profile as desired, verify with assembly output.

Have test that I'll start printing. They look correct though. Is there a way to just have the spring inside the hub? Like the length inside or is it too much resistance? I guess printing would be an issue too.
The reason I ask is I made a remix for the Spanner spool boxes. Prusa spools are the exact width to fit the box. No extra root to have a spring outside. So, pretty much any other spool will work, but not Prusa. Unless, you remix the box wider.
These work great for just single spools too. I'm using it constantly on single. Those spanner boxes the spools love to keep rolling forward and unspooling filament inside.
Once I get the final testing on the remix I'll added to a remix here so others can use it with your auto rewind.

Spring inside hub means that there is no longer a mechanism that prevents the spool from sliding off the hub while slipping. Same issue as in the original auto-rewinder design. When the spool touches the box then there is added resistance which limits the effectiveness of the system. The parametric auto-rewind spool hub was therefore designed with the philosophy that the hub/adapter must keep the spool in place. If I remember correctly, someone indeed remixed the spannerhands box wider to include the rewinding mechanism, but I haven't seen it on Thingiverse yet.

Makes sense and in the box there is like 1mm clearance on either side. So, I'm sure it would rub the edge quickly.

I'll use the current boxes for non-Prusa spools and if it works well maybe make wider ones. They will work on my 3kg spool holder fine. Just not enclosed.

Thanks again for all your help.

Thanks! I'll give it a try.

Comments deleted.

This is great! SO far so good!

I have a snag with smaller filament spools, however. I am unable to produce a working STL for a 21mm spool ID. Namely Amazon Basics & eSun.I like the filament well enough, but I am unable to produce a working "hub" that I can use.

A 21 mm ID spool means that you cannot use 608zz bearings. Fortunately the rewinder also works with no bearings, so we'll leave them out and let it roll directly on the axle. I looked at the parameters and made a few slight modifications in the code. So use v1.10 (or newer) with the following parameters:

setHubSpringCount=3 (ignore warning)

Hopefully this works for you!

Comments deleted.

OH NO THERE IS A v1.10?!?! I'm on 1.07.... how compatible is it with the params only? Can I copypasta the params block I'm using?

Never mind - i'll just diff the files.

Line 645 has an if block indentation missing.

Took some surgery, but I think I got it..... Thanks!

Glad that you got it! Thanks for the notice about indentation, it is fixed in the next release.

Hey everyone. I've 'convinced' Vincent to turn on Tips for his hard work. If Vincent's hard work and time has benefited you, please consider giving a Tip. https://www.thingiverse.com/VincentGroenhuis/about#tip

He'll tell you he doesn't want or need the tips, but I say he deserve it and if you're able we should give. Forget about the work and time he's invested into this rewinder, think about the design it's self. It alone is worth a tip.. :-)

Good! Made use of the tipping function!
This project saved my MMU2 from the garbage. What a finicky pile of trash its been up to now. Thank you!

It is a great honor to receive my first tip from you! To express my deepest gratitude for it I created this little thing for you: https://www.thingiverse.com/thing:3338467

Universal Auto-Rewind Spool Holder

Holy smokes Vincent, you are one seriously talented individual. That is a thing of utter beauty.

I'm not sure if it will fit in my 21 cup serial containers, but I think I'm going to have to print it any way... :-)

Remarkable iteration. Thank You once again; people are going to love it.

Thank You @VincentGroenhuis for this fantastic solution. I can't image how much time and work this took to create.

Now for my issue. :-) I'm using your solution inside a 21 cup cereal container, so I need it to be very narrow.

My Settings to reduce width: hubBackPlateThickness=1.5 mm, springExtraRim=0, springBladeThickness=1.1, springBladeWidth=5

I also insert the adapter and shaft opposite the spring side, which doesn't seem to improve or increase my problem, but it does allow for a slightly more centered spool.

My Problem: I can't get the spring to generate enough torque to spin a full or even 3/4 1kg spool back. I've tried PLA, PETG, and ABS, all printed 100% Infill.

Any suggestions?

PS: I should add, I have ~600mm of bowden tube on my MMU2... :-) (Which really should not be a problem, seems like a torque/material issue I think)

The spring is too weak, you say? That is odd, as a 1.1mm thick spring (three print lines) is quite stiff, even at 5mm width. How many revolutions can you wind and unwind by hand? Can you identify friction sources where moving components make contact? E.g. spring pressed against hub, spool touching frame. Or is the spool slipping too quickly?

I think I may have found at least part of a solution. Removed the Prusa bearings, popped the seals, cleaned and lubricated with some EWL oil. It has help enough to make things work, but I'm still looking for more torque. ;~}

Have you tried to make the spring thicker, e.g. 1.4 mm?

I have not; great suggestion. Any concern of material memory (spring not maintaining tension after long periods of sustained tension) going thicker?

PETG is definitely better than PLA in maintaining stiffness, for any given thickness.

Nice design, is there a way to export the parts separately ?

Yes, set "output" to the name of the part you need, e.g. "hub" or "spring"

Nice ! I am new to parametric design. thank you very much !

Sorry to ask for help again, i cannot find it (i use openscad)

There are two ways to set parameters in OpenSCAD: in the editor or in the customizer.
Editor: uncheck View -> Hide Editor and the text shows up on the left of the screen.
Customizer: first go to Edit -> Preferences -> Features. On the bottom of the list, check 'customizer'. Then uncheck View -> Hide Customizer and the customizer should show up on the right of the screen.

not scrolling through 130 comments... went through a handful, and didn't see my curiosity answered:

Why are all the default parts that you get from here as a single group, and why do they not slice? When they are all in a single group, they are spaced so they can not fit on a normal 200x200 print bed, or even my larger 200x300 print bed... rather annoying. SO i use the 'split' function, and arrange them as I need to... But regardless if i do that, OR leave them be and try to slice them with Prusa's slicer... they come up as 'having no layers' and it refuses to slice... sure i could go into the customizer and just make a custom one, but the ones that are there by default through the download are the sizes that I actually need... so short of opening them up in some other program and trying to separate them, what's up? lol.

Why didn't ya just space them closer together? or at the very least, export them as individual parts? it just makes a ton more hassle....

Good lord. Just import the full array into your slicer, split the model, and delete the parts you dont want.

When I did that I got a phantom part in the list that had no geo - when I deleted it I had no slicing issues.

Try <ctrl + f> (windows) or <command + f> in your browser to search the comments instead of being obstinate.

Yes you and the others are right, OpenSCAD generates a few invisible components. It is not easy to fix but it is on my to-do list. Glad that you were able to remove those invisible parts and proceed with slicing.

I had the exact same issue with Slic3r. When I try to slice, it just tells me that there are no layers to slice. I managed to fix it by right clicking on the group of objects, then selecting "Fix STL through Netfabb" BEFORE splitting the objects. Once they're "fixed", I split the objects and arranged as needed.

I didn't see any option of 'fix stl through netfabb' with the slicer. Or is that in the customizer? I didn't use the customizer at all so idk. lol.

I meant clicking within Slic3r... Oh, I wonder if that's a feature exclusive to Slic3r Prusa Edition (or maybe your version is outdated?)... Alternatively you can go to https://service.netfabb.com/ and repair the file there. Haven't tried that method before but I'm sure it's straightforward. You'll need an Autodesk account.

Strange. I just checked myself and the provided STL's slice without any problems. It even did not need any repairs. I am using Slic3r Prusa Edition 1.41.2. Which software did you use?

I'm also using Slic3r 1.41.2 PE.
No idea why it does this.

@VincentGroenhuis I ran into this problem also, but only after splitting the group (S3D and S3RPE). I believe there is a failure in the spring generation and when split, there are 2 or more 'invisible' components. If I remember correctly if you removed the "extra invisible components" it slices fine in S3RPE.

It works ! Thanks !

Would it be possible to visualize those invisible components? Once we know the exact location in the spring, we might be able to find the root cause.

I can't seem to get the "invisible components" to visualize.

I managed to reproduce the issue. The slicing error only manifests itself after splitting the original STL, as the 'invisible' component(s) have no volume. I fixed both STL's through netfabb's online service and it should now work. I also put a note in the main instructions how to fix generated STL's when the same problem occurs.

Anyway, the root cause is in OpenSCAD, probably in the export function which does not render a specific detail properly in the spring. I now suspect it is the attachment point of spring to rim, due to polygonization a spring facet might intersect a rim facet. Or wat do you think?

Thanks to @HikariNoKitsune @mza1979m and @RJ_Make for reporting this issue!

Personally, I didn't bring the issue up because it was so easy to fix. I think the note in the main instructions is great (if people read them.. :-) )

Hi Hikari, the default diameter of the hub, spring and protector is 100 mm and the customizer places them in a rectangular grid. A few mm of clearance is needed between the parts, that's why the size is just over 200 mm. It would be hard to auto-arrange more compactly within the customizer itself, but I see you found the 'split' function in the slicer already. You could also set the spring diameter to 95 mm to get the exported STL fit.

Export as individual parts: just set the "output" parameter to the name of the part you need. "Having no layers": no idea, can you post a screenshot?

I'm sorry, but I feel as if either A) you didn't understand what I had mentioned in the comment, or B) didn't fully read it...

I'm not using the customizer. I'm clicking the "download all" button, and using what was uploaded originally by the looks of it. Which is fine, because it fits my spools just fine. The problem is that the files that had been uploaded, has TONS of errors in it, so the Prusa Slicer can't actually slice it if you split it or if you leave it alone.

So what I ended up doing, was using the compact version because I didn't have enough time to sit here and import the non-compact version into Fusion360 and export them back out as a fully solid multiple parts... But the compact's spring is sliiiightly too weak for me. The bearings I had used weren't the smoothest so they didn't really allow it to spin too freely... So I put the spool upside down and used a rod to keep the thing from untangling like usual. Once I got home, I took the bearings apart and cleaned them up, so now they spin decently free... they weren't really good bearings to begin with, so I'm not expecting them to last very long before I gotta just crack down buy new ones.

So, with the knowledge that the 'spring' is kinda weak, i'm hoping these newly loosened bearings will help it out, which they do seem to as i'm doing some tests right now. But also probably just gonna say 'screw it' and beef up the spring with fusion 360 anyway just so that it has a constant tension on it :D

That part is what makes me wonder about A and B... Because I had clearly stated that it

EDIT: Now that its actually printing and its been able to 'pop' a few times to keep itself tight; with the 'refreshed' bearings, its working MUCH better. It actively keeps an ok amount of tension and visually 'rewinds' now! Awesome!I'll def be printing a few more of these for other spools so that I don't have to keep swapping them back and forth. Awesome design!

Tons of errors in the STL file, in Prusa Slicer? I cannot reproduce it. I asked a screenshot (a video is even better) and I still need it to get a clue when and why the "no layers" message is appearing. You may be right that I did not answer all of your original questions, but I also don't know everything.

Anyway, good to hear that you got a functional rewinder with the cleaned bearings! To explore all options I recommend to download OpenSCAD (it's free), adjust the parameters (in text file itself or in built-in customizer) and hit F5. Once you are happy with the design, hit F6 to render and export a STL.

Edit: Issue resolved, see other comments above

Very nice design... Do you think this could be modified (or used as is) in such a way to make it function on spools that are positioned horizontally within an airtight container? I have my spools individually placed inside round containers on their sides and they rotate on this:

Simple & Smart Spool Holder

The rewind mechanism itself works fine when positioned vertically with spring at bottom. Someone (you?) needs to design a matching stand though.

What does the number of print traces refer to in this comment?
"Spring blade thickness; use 0.7 (two print traces) for soft spring, 1.1 (three print traces) for stiff spring"

it's the width of a 'line' from a 0.4mm nozzle.

Yes exactly. The lines should be slightly overlapping so that they fuse together.

Is it possible to only create an stl of one or two of the components, rather than the stl being of the whole assembly?

Yes – just set the output parameter accordingly – it can have any one of the values "assembly,print,printAllExceptSpring,spring,hub,adapter,protector,axle,spacer".

Oh I see. Thanks. This just gets more awesome by the minute!

Which parameter would I adjust to use the stock mmu 2.0 axels rather than the printed one? I need the inner circle of the spring to be round instead of partially flat. Thanks!

Set the "useFlatSideInsert" parameter to "no"

So, there are no assembly instructions. No clue what the rings are for.

I've also used coal pers to measure the inner diameter and the width, and the center cylynder is too small... It doesn't provide any friction and the spool just slides along the plastic and the cold doesn't turn. No clue how this is supposed to work

The fingers in the hub should touch your spool and provide just enough friction to "grab" it for a few rewinding revolutions.

Put output to "assembly" and you'll see how the pieces work together. Otherwise share a screenshot of the "assembly" with your numbers, maybe we can see the problem there.

Where does the 2nd spacer go?

look at output=assembly. One spacer (I think of them as a 'clip') goes on the axle first, followed by the protector and the spring/hub, then the second spacer/clip goes at the other end. Screenshots show both of the clips in yellow.

Ah!, Thanks, i saw the one on the opposite end, but i couldn't see the one on the protestor side. Thanks very much for this design, it is great! I'm having a blast toying with the OpenCad file. This is my 1st experience with that software, it's very interesting.

it's Dave Jackson's, not mine, just helping in the comments :) yeah, openscad can be fun. It works better for some people's brains than a CAD-style graphical tool.

Hi Tedder and Zeke13, this design is by VincentGroenhuis, and I think it's awesome. Like Tedder I am just helping out in the comments where I can.

Thank you all for helping each other out during my holiday. I love this community!

I've iterated sizing and such. The biggest problem I'm having is that the adapters don't have spring fingers, so they don't give 'drag' on spools like the bare cylinder does.

The fingers in the hub push the adapter towards the hub backplate. If all dimensions are correctly set then the 2nd spool is clamped (with some force) between the adapter rim and the hub backplate, giving enough friction. If this is not the case then we have to look into it.

A small piece of masking tape between the adapter and the spool should help. Otherwise, you would have to reprint the adapter to have a more interference fit to the spool.

Made my own "adapter with fingers".

auto-rewind adapter with fingers
by tedder

after failing to add fingers to the adapter, I made my own 'scad with fingers, see screenshot. It isn't perfect- I can't figure out how to move the sticking-out part of the finger on Z without some magic values. It'll work for me though. Crossing my fingers on the print.

yeah, it seems like it'd be helpful if the adapter had fingers or bumps. I've been fussing with modifications to the axle, not sure I wanna go down the path to modifying the adapter though :)

HI by some reason i broke the second spring in a short time.
It broke at the outer part where its actually connected to the holder.

what i noticed was that the spring was at full tension and the spool holder was just slipping. then the spring broke after some time.
i printed it in PLA with 10% infill, any idea what i may need to change to prevent it from braking.

Did you turn off "Detect thin walls"? The spring should be printed with two print traces (check in slicer). If the spring still breaks at the connection to the outer rim, then the spool might be too tight. Did you use the correct dimensions? A wider spool (even with same diameter) cannot be used as it would bend the hub fingers too much.

PETG is more flexible than PLA.

i tried it with PETG but i noticed that the spring is then not strong enough to turn the spool back.

Set springBladeThickness=1.1, this will make the spring stiffer/stronger.

i had two broken springs. What i think is (at least one) reason is the direction the spring is tensioned. If it contracts during use all seems ok but if it expands it breaks where the spring meets the axle.

Yes, I am sure that Vincent does say somewhere that the spring should always be set to contract in normal operation, or it could break.

Yep, i read it shortly after writing this comment....

Has anyone remixed this for Atomic Filament and/or 3D Solutech rolls? I am having trouble understanding the customization.

What are the width and inner diameter of your spools? It is best to measure these yourself, just to be sure to get the right dimensions.

Great design mate, but wondering did you place some supports when you sliced the parts in the hub, to stop the fingers from moving during the print?

I just spit and printed the hub as a test as i used your customizer for the Esun spools i use and the finish is off as it moves (as you would expect) as the hub grows in length. used PETG


No, I never had issues with moving fingers during printing. If Z-hop is disabled, enable it. I only print hubs in PLA which is a bit stiffer and generally easier to print. You could consider increasing the thickness of the fingers in the customizer to reduce the vibrations. Hope this helps!

Hi vincent, great design. I am having the same problem as PeterMorphett. Z-hop equivalent in Splic3r PE is enabled, I have SpringBladeThickness = 1.1 as you suggested, but the fingers are so long they still move.I'm using Tech Outlet PETG T-Glass, printing on a Prusa MK3 with the latest firmware. I am trying to print a hub for a Prusa Spool (88mm wide), with the spring inside the hub to keep the overall size down. After two failed attempts both above 75mm (5+ hours), I managed to get a completed print by pausing the print at about 60mm height, and carefully wrapping some masking tape around the hub, and pressing the fingers against the masking to help hold them in place. By great fortune, the print continued successfully after the pause which I didn't expect.

I have no experience of OpenSCAD yet, although I do like the way you can use the variables to modify the design. So I've had to import a CSG copy of your design into FreeCAD which I am used to using. I have added two support rings to the hub with,

Outer Diameter = 49.0mm
Inner Diameter = 48.1mm
Height = 0.2mm

I placed one support ring at 50mm and a second at 75mm above the print bed. Below 50mm the movement of the fingers is minimal with PETG.

I will set off a print of this modified hub in the morning to see if the print will complete successfully without problems.

I hope these support rings should be strong enough to to keep the fingers in place, but should easily break when the fingers are pressed into the hub. If successful I hope you will consider adding them to your design, when using PETG or needing a very wide hub.

Hey, that is an inventive workaround! The SpringBladeThickness only changes the thickness of the spiral spring. The hub blade thickness is gradual and controlled by two different parameters: SetHubSpringBladeInitialThickness (at the bottom) and SetHubSpringBladeFinalThickness (at the top). By default these are auto-calculated based on blade length (when set to zero) and specifying a value manually overrides it.

Apart from that, I fully agree that adding thin support ring(s) at one or two heights makes printing the blades much easier for certain printers such as yours. I will consider including it in the next revision!

Added Support rings worked. This hub for a Prusa 88mm Spool printed in PETG without stopping in just over 4 hours. Support rings at 50mm and 75mm above bed.

What's the option to turn the support rings on? Looking through the config and nothing is jumping out. Prusa spools are probably the widest I've seen. I managed to print 1 hub without the rings but you can see the head push and pull the fingers as it lays down filament once you get halfway.

Not implemented yet, give me some time please :)

Ah, that's why nothing jumped out. No worries. Thanks for working on it.

V1.08 is now out and has hub spring supports enabled by default! Not tested yet, but it slices fine and should work.

Worked like a champ. I printed a short and very tall one and both came nice and smooth. No artifacts on the finger on the way up like when it was free standing.

Thanks a ton!

Outstanding! I'll download 1.08 and run it locally and give it a test. I found a wider spool than Prusa. Robo3D, not much longer 91mm but super small hub (32mm). I'll make a 1 off for this spool. I've had it forever and just need to finish it off. I won't be getting their filament again. Back then it was slim pickings on local filament available.

I'll keep you posted.

Yay! Looks good, mate!

Wondered why the spring was stiffer and no change in the fingers. Haha!

Unfortunately, the ring size I gave above did not print, as it was too narrow. Actually only 0.45mm, which is the width of the filament laid down. Since I had already printed over half of the hub (4 hours), I let it continue and used the masking tape trick again.

I have tried and tested the following ring dimensions,

Outer Diameter = 48.0mm
Inner Diameter = 46.0mm
Height = 0.2mm

which do print correctly.

I need another 3 Prusa 88mm hubs (5 plus a spare), so I will print another one tomorrow, with the rings this time, to see if the print will complete without external aid.

hello ! What size spools do your STLs fit ? Thanks !

Diameter 53mm and width 55mm! For example Fillamentum uses this size.

what is the best filament to print the spring?

Comments deleted.

PETG should give most rewinding revolutions after using it for a while, but any other rigid material should also work fine (PLA, ABS etc). The spring is heavily overdimensioned for a typical MMU2 setup.

Thank you, do you know if anyone has remixed it for a Sunlu reel? I can’t seem to get the customizer to load keeps getting an error.

Don't know, but you could download the .scad file and open it in the OpenSCAD software which is available for download for free.

I seem to be missing something somewhere I think. The spring seems to full build tension when being used and in the correct direction, but when the MMU changes and releases tension, the spring doesn't unwind to take the slack up. Any assistance with maybe where I need to look for problems?

Sounds odd, there is definitely something wrong. Try loading/unloading by hand like in https://youtu.be/1Cki6mBVA8s?t=28 , how many rewinding revolutions do you get? How is the filament guiding organized, is the filament path from spool to MMU relatively straight? Could you send a photo or video of your setup?

Looked at it again, I think I printed the hub just a bit too wide and it's rubbing the frame perhaps. So, when it pulls, the line undwinds, but when the slack comes back I think friction may be more than the spring has to make it wind. So Im, going to reprint it a few mm shorter and see what happens.

Yeah, the hub must be able to roll freely and not touch the frame. Setting hubSpringTopOffset to 0 makes the hub 3 mm shorter without changing the length of the hub spring blades. It is OK to shave off one or two more mm by reducing the 1st spool width, but further reduction may cause too high tension in the hub spring blades. In that case you can use the spool adapter, or adjust a bunch of other parameters. Alternatively, you could also make the frame a little bit wider by scaling its X axis. Good luck!

Hi, good project, compliment.

I don't understand one thing about this rewinder. There is a limit in how much filament can be pulled?

There is no limit! The spool just slips on the hub when the spring is fully loaded.

That's good, thanks for quick reply

Great design! I’ve printed a few already. Quick question, now snug should the spool holder be to the spool itself?

Not snug at all. Default clearance is 0.5 mm which gives a loose fit.

Just commenting to say THANKYOU !
Finally a wall-mount MMU2 spool system that works!
I've cut all the PTFE tubes on my printer to about 2" long, and the springs take up the slack nicely on unload.
I have lots of the Prusa 22mm bearings so have been using them. They are always a firm fit in the spring side of the hub, and loose on the other. I've not reviewed the OpenSCAD code yet to see why that may be.
I have printed several hubs in PETG, and a few in ABS. The bearings are much tighter in ABS, I assume because of shrinkage.

Thanks! You are right about the bearing holes. I see are multiple plausible reasons why the bottom bearing gap is a tighter fit:

1) Elephant feet: 1st layer (and sometimes 2nd as well) is squished, resulting in smaller dimensions. It can be compensatet for in most slicers, but the spiral spring does not like elephant feet compensation so I turn it off here and cut the ridge with a knife. The leftovers cause friction. It could be remedied by chamfering the bearing edges, I'll put it on the to-do list.
2) In small-diameter hubs, the spring gaps divide the bearing perimeter in about four parts. Due to printing side-effects the perimeters bend more inwards in full circles than in shapes with small arcs of same radius. This effect could be compensated for with an extra parameter. Also on my to-do list.

Tighter in ABS: yes, shrinkage is the culprit. If you know the shrinkage factor then you may compensate for it by scaling in XY directions by 103% or so.

Such an amazing design, lets see how it holds up. It looks and functions so nice on initial setup.

Sounds like you made a happy start with your new setup. Time for some fabulous prints!

I have broken 2 springs when the rotation loads the spring to the outer ring. This only happens with new, heavy spools. I don't quite get the tension when I configure it to where the spring loads toward the center, but looking at the design, it seems that is the correct direction of rotation. I'm using PLA. I figured PETG would be more flexible and not provide as much tension, so I would like to know if anyone has a better suggestion, or am I wrong about PETG?

Oops. The spring has to be wound around the axle itself, like in the second photo. Loading the spring to the outer ring causes excessive stress on the blade near the axle when overdriven. So you have to flip the hub around. An alternative is to increase the spring blade thickness from 0.7 to 1.0 mm (three print traces, use 1.1 if your slicer creates gaps). Spring constant is then (1.0/0.7)^3=3 times bigger, matching the weight of heavy spools better.

I also added a note in the main text of the thing to get the orientation correct. Using PLA should be fine, so let's see why is the tension too low in your case. Is the actual blade thickness 0.7 mm, or much smaller? Setting it to 1.0 or 1.1 (or adjusting slicer settings) might help.

My actual printed spring is .82-.86 mm thick. I'll play around with it. I'm about to do one with the inner spring just for fun! It is for the Verbatim BVOH spool which is quite wide with a small diameter.

Someone else also noticed the small hole in the base of the frame in the second photo. I do not use this hole; if you were using it then the hub/spring has to be installed the other way round. I just made the description more clear about this point.

I don't quite get the tension when I configure it to where the spring loads toward the center

How many rewinding revolutions do you get at most when installed in the correct way?

Could also be that your spool fit too tightly on the hub. It was designed with 0.5 mm clearance all around plus a very weak controlled force from the hub's blade springs.

Hello Vincent,

Just a quick question; is it per design that the secondary spool adapter yields a 1 mm smaller diameter than the set diameter in the parameters?

Pls see attached settings and measurement in Meshmixer

Yes! This clearance makes it easy to slide the secondary spool over the adapter.

Very quick reply :-) !

Just checking since I was not sure what your reasoning was. One could also argue that the adapter could fit a bit tighter in the spool itself and that the adapter should rotate around the hub - just like if one would not use any adapter. Thx.

Adapter may or may not rotate, both is fine. The hub springs will press the adapter+spool towards the backplate (with spring), so all parts have mutual friction.

It would be waaaaay to hard to set the adapter diameter precisely right for a tight fit (due to measurement errors and variation in manufacturing), so that was never considered in the design.

If some sort of direct friction between adapter and 2nd spool would be needed then the adapter would have been designed with integrated blade springs, like in the hub. One could already use the hub generator itself for that by setting its axle diameter equal to 1st spool diameter. That would create possibilities for interesting multi-spring configurations. Resonance, anyone?

You are grasping the reasoning behind my initial question. With the spring blades, you designed some 'controlled friction' with the spool - if no adapter is used. Once an adapter is used, this design intent is gone - hence my initial question. Yet I also see that due to extrusion variances, materials, spool production variance, etc. a perfect fit adapter is mission impossible. Hence your suggestion of a spring-ish type of adapter reads great to me - even though its maybe over-engineering :-)

If you look closely in the assembly view, you can see that the spring blades in the hub make contact with the adapter (or 1st spool) at an angle of approx. 45 degrees. So besides the controlled direct friction, the spool (or adapter) is also pushed downwards against the backplate causing a different way of controlled friction. This also holds for the 2nd spool with adapter as it cuts off the bottom two millmetres of the adapter. :)

Hallo Vincent,

I have already made some of your spoolholders, very good design. I made one without customizer and the other one with, but I have a problem there, I set the first inner spool diameter to 55.8 and the second to 51 and for te width I set 45 and 69 gor the second. It made a adaptor for the difference in spool width, but not one for the difference of inner diameter! Do I have to change some other settings?

Swap spools so that second has larger diameter than first. Set adapterDiameterDifferenceThreshold to 4 or lower to force full adapter generation, since your width difference is 4.8 mm. The resulting adapter walls might be a bit thin, but it should be printable.

Hi Vincent,

Great design!

Quick question, the printed examples show the top of the spool holder has a smooth face that covers over the top of the spring fingers. I have not been able to generate any STL with customizer with this face.

I have found that without that face (and small lip above the spring fingers) it is somewhat difficult to load a spool and requires a bit of force.


You are right, some photos show older iterations and in the current scad file the hub springs extend all way to the top.
What reference spool width and height are you using? Are you able to press the hub springs all way in the hub? If a part always sticks out then there might be an inconsistency in the scad file (holes not deep enough?) and I will look into it.

Ah, the spool you use for the example has a solid center all the way through where as the spools i have tend to have lips only. Attached a pic of one for reference

Don’t know whether I understood it right but couldn’t you just use a smaller diameter for the hub and use an adapter by default?

Good point, will probably will have to, it would solve the problem because it will then make the filament spool have a complete tube center.

Having that small lip on the top of the hub like the earlier designs had would alleviate the need to use the adapter because it would help guide the hub and make it easier for the hub springs to overcome the edge that these filament spools with just 10mm lips at the edge seem to have.

I used the following:
output = hub
referenceSpoolInnerDiameter = 54
referenceSpoolWidth = 63
secondSpoolInnerDiameter = 58
secondSpoolWidth = 65
hubSpringEnable = yes
hubFlushWithReferenceSpool = no

The springs move freely all the way into the hub with no resistance, just seems like there might be some resistance with the spool inner face catching on the flat tops of the springs which makes it a little resistant to popping on smoothly. The outside edges of the spools tend to be a little more rounded than the inner faces so maybe that is what is causing it.

This top face that sits above the finished springs would probably solve the issue (indicated with red arrow in attached grab). I might sketch up a quick shim to stick on the top of mine to confirm it

Just released V1.03 with your extra parameter: hubSpringTopOffset
You can set it to -3 (or more negative) to generate a smooth face on top of the hub.
Let me know if there are any issues, I had to modify a couple of formulas and I'm always afraid to break things ;)

Works perfectly! Tested on a bunch of spools that don't have solid centers and no issues at all popping it on and off the spool. Cheers!

Thanks for the feedback! I updated the design and hubSpringTopOffset is now set to -3 by default so that future hubs are generated with flat top surface.

Legend, ill get a new print going now!

Comments deleted.

Hi Vincent,

Thank you very much for sharing this great design. I am really stunned that you made this entirely parametric and I have printed one version for Fillamentum spools in the meantime. Now that I have the printed design in my hands, and looking at the amount of different spool sizes I have and the number of potential combinations for a 4 or 5 different color print, I am realizing that I need to print many of these - or at least a lof of adapters.

If I understand your logic correctly; you want the adapters or 'hubs' to fit just tightly enough to keep some grip on the spool yet still loose enough to allow it to slip on this once the spring is fully 'charged' and when normal spool unwinding takes place.

I am wondering if a true universal spool holder will work, whereby that spool holder will firmly 'grab' the spool, and that when unwinding the spring will be ratcheting in a grooved drum - or alike - and that the spring hooks into one of the groves the moment it no longer unwinds such that it keeps the spring under tension and allow the spring to unwind the moment filament unloading is taking place.

Examples of universal spool holders:


I am not sure if this will work - just a thought.

Keep up the good work!

En bedankt voor 't delen van dit fantastische ontwerp!

universal filament spool holder axle
by HardyP
Quick Change Universal Spool Holder

Dankjewel! The spring blades in the hub take care of the "spool grabbing" friction. The trick is that the inwards inclination of these spring blades push the spool (or adapter) towards the backplate with the spiral spring. So no need to have a tight fit, the default clearance between hub, adapter and spool of 0.5 mm should work fine. You will see yourself when you print a hub with adapter. Just enter accurate dimensions of your spool(s) in the parameters and let the design generator do the work.

And yes, I have considered a design with big threaded rods and cone-shaped nuts. It is certainly possible, with its own trade-offs. For example, it is hard to make it super compact as the spiral spring would not easily fit within a threaded bolt and the universal nuts would stick out at both ends in case of a small-diameter spool. So the complete MMU2 setup with five spools (inline) would probably be a lot wider than in the currently presented design. We will see if someone is able to remix the OpenSCAD design with such threaded connections. Otherwise, you can surely find a good hub/adapter arrangement such that you can print all desired color combinations with a minimum number of adapters?

Yeah I guess that with 5 spools in a row the cones to keep the spools in place will take some space indeed - although a cone width of maybe 1,5 to 2 cm would be enough.

I already grasped the idea of the hub dimensions and friction and the version I have printed is working great.

Anyway I am looking forward to see this design further being enhanced and maybe also new designs from you emerging.

Wow, what an upgrade. Just started printing it to see how it works.

I assume the diameter of the adapter should be chosen as large as possible to make the adapter press-fit into the spool. Rotation should happen between the hub and the adapter and not between the spool and the adapter.

Why does the scad code generate 2 retaining rings? A spare one?

Just one suggestion for improvements: In my experiments with stands working with your prior design, I found, that it improves the stability of the stand significantly if the arms of the stand are tightened againts the axle. I just put a thread on one end of the axle (other end already locks into the stand) and printed a thumbscrew.

Thanks! No, the adapter does not need a press fit in the spool. The hub and adapter both have a rim and the spool is squeezed inbetween, that should give enough friction. It does not matter whether the adapter itself rotates with the hub or with the spool.

Two retaining rings: one for each side, to keep the whole thing with bearings and protector centered on the axle. If you use only one ring then a bearing might fall out or the protector would be loose.

Stands: true, I acknowledge that threading and locking it makes it more stable. This of course depends on the structure of the stand, some are stiffer than others. Nice that you are able to make a thread and thumbscrew. Pics? Are these printable? If you post your make, then I'll add a link to it so that other users can easily find it. If you have OpenSCAD code for it then it would be even better, as I could add an optional parameter to add a thread with specified length and a nut and acknowledge your contribution in the code.

Sorry, have no experience with OpenSCAD. I‘ll post a Fusion 360 file once I have successfully printed your axle with threads.

Btw. what infill are you printing the new design with?

Don't remember, but very low. Like 5%-10% gyroid infill and two or three walls.


First print finished.

A few things to change (for me):

Even for a 53 mm wide spool (prob. 80% of my spools) the auto-calculated axle is too long to fit in a Rubbermaid 21 container. I've planned to use these at least for PVA and TPU but less hygroscopic filament would benenefit as well by minimizing dust on the filament. And I could use the base without the container as a stand either.

Max. length for the axle to fit into the container is around 100 mm. The one printed is 108 mm. Have to shove some 8-10 mm from the design. Would like to keep the 100 mm spring.

So 3 options:

Just make the axle shorter. Would need a rather thin arm on the holder. Probably not ideal.

Make the spring thinner. It is currently 12 mm. So no chance to save 8 - 10 mm just from the spring. Would only work in combination with a shorter axle but would impact stiffness of the spring. Probably not ideal either.

Make the rounded shape on the spring-blades shorter especially the outer ones. Have to look into the scad file, whether this is achieveale easily. Maybe in combination with a slightly shorter axle. Probably set as a user editable parameter as not everybody needs it.

Or go back to the compact internal spring design. :-(

2 other things for improvements:

Due to the space issue I have with the 21 cup container, there is no way to use a threaded axle with thumb screw. A simpler solution to prevent the arms of the stand from bending outwards would be to simply make a v-shaped slot into the bottom of the axle perpendicular to the axle where it sits inside the arm. The arm of the stand then needs a correponding v-shaped fillet that goes inside that slot. Would work as well with older designs but would not improve stability of course.

The retaining rings slide very easily on the axle. As length of axle, length of hub all is calculated automatically, there is only one optimal position of the retaining ring to hold the assembly together tightly. Why not make a notch into the axle at the calculated optimal position, where the retaining ring snaps into. You still can pry it open in case you need to disassemble the holder but it needs a bit of effort and doesn't happen by accident as it does now.

Well let's dig into OpenScad. But I'll bet you present a solution while I'm still trying to understand the code. ;-)



Axle too long: do you mean the hub? The length of the axle can easily be overridden with the axleSetLength parameter.
If the hub is too wide: did you consider setting a narrow reference spool with smaller diameter, and use adapters for all your actual spools? This way the spring-blades will not extend beyond the spool width, saving a lot of space. Customizing the spring blade contacter shape is also possible using the advanced parameters, but should not be needed.

Besides this, it is possible to save ~8 mm on the spring side: set hubBackPlateThickness=1.5 mm, springExtraRim=0, springBladeThickness=1.1, springBladeWidth=5, leave out spring protector (or integrate it in your axle stands or reduce thickness to 1mm). Not tested by me, but see if this works out for you.
Retaining rings: thanks for noticing that these are quite loose. I will think about reducing the clearance in the next version. For now, to generate tighter spacers you can also set axleDiameter to 7.9 or 7.8

did you consider setting a narrow reference spool with smaller diameter, and use adapters for all your actual spools? This way the spring-blades will not extend beyond the spool width, saving a lot of space.

Ahh, that is a real good tip. Will try this first. Given the rased part if the spring blades is ~15 mm that should be more than enough saving.

Concerning the retaining ring: While reducing the clearance of the ring with give a tighter fit, I still think a grove in the axle at the right position where the retaining ring snaps in would be the best solution. 0,5 mm would probably already be enough to lock the retaining ring in place.

One thing I forgot in my suggestion list: The spring protector works nice as long as it is fixed with the axle to the spring. But take out the axle and the protector will easily slide of and the center of the spring follows the protector where ever gravity decided to send both. ;-) I like the locking mechanism that attaches the spring to the hub. May something similar could lock the protector to the spring.

Made a sketch how it could look but my post gets flagged moderation when I attach it. Stupid spamfilter ...

Seems the calculated length of the axle is wrong if the reference spool is narrower than the adapter. Axle then is calculated according to the length of the reference spool but should be calculated according to the length of the adapter. Of course the length of the axle can be set manually.

Thanks for reporting the incorrect axle length calculation bug! I've fixed it and also added two new parameters:
axleGrooveForSpacer = [yes,no] (default no, but if set to yes then the axle has grooves as you suggested)
spacerClearance = -0.1 (to make it tighter).

At the moment I don't see a need for a spring-protector clip attachment. You don't have to take the axle out often, even not when swapping spools. But it is certainly possible.

Thanks. I‘ll do a second print tomorrow with a smaller diameter hub and adapter. Do you know what the width of the reference spool vs. witdh of adapter should be to make the hub flush with the adapter? I assume ~15 mm less than adapter width = spool width.

I agree with your point about a spring-protector attachment . Not needed once the holder is assembled. Still 3 pins on the protector with matching holes in the spring would help during assembly/disassembly. Easier to design and attach than my stick/ball design below.

Setting hubFlushWithReferenceSpool = "yes" does the trick, you should be able to verify it in the assembly view.

Spring protector: Thanks for the 3d rendering of your idea. Personally I don't think it is a good idea to attach it to the rim of the spring, because the protector does not have its own bearing. Depending on the spool stand/axle configuration, the protector might be squeezed between the spring and the stand (or spacer) and then the protector would encounter friction when forced to rotate.

Should have read your explanation on the first page before asking. Thanks for your assistance.

The parameter overrides the set length for the adapter width if set to yes? Or adjusts the length of the hub accordingly? So I‘ll set hub width or adapter width to the width of my spool?

Spring protector: There is either friction between the protector and the spool or between the protector and the spring. Do you think there is a difference between one or the other?

Friction between protector and spool is impossible, there is a big spring inbetween so these two things do not touch.
The protector has a small elevation near the axle. If that side is pushed against the spring then it should only touch the spring near the axle and not at the rim.
Anyway, you have to check yourself that the hub is rotating freely with as low friction as possible. With a 100mm big spring it is fine to have a little bit of friction somewhere though. You can even leave the 608zz bearings out, the auto-rewind system only needs one full rewinding revolution for a standard MMU2 setup.

Yes you are right. Spring-protector attachment would have negative effect. So lets ditch this idea.

One last thing: Would it be possible to add another advanced parameter slotsInAxleDistance (distance slots to end of axle) that when set to a value greater than zero create V-shaped slots in the axle, see attached picture? Would add stability to the arms of a stand with matching rims.

Looks like you already made a design with V-shaped slots yourself. I doubt if there are others who would benefit from the V-shaped slot feature, as there are no compatible stands available for download (yet).

I doubt if there are others who would benefit from the V-shaped slot feature, as there are no compatible stands available for download (yet).

Stay tuned ... ;-)

Added it to your code, so I do not have to redo it in Fusion with every change of the axle length. Feel free to integrate it into your branch.

Fantastic! That is what the community is for. I've immediately published V1.06 with credit to you. I set default slot height to zero for backwards compatibility, and added a note in the main text to indicate its availability. Let me know when your parametric stand generator with matching rims is ready and I'll integrate it as well! :)

Thanks, though it is a tiny addition in compare to your work.

Currently printing. Parametric yes, OpenScad no. I still get faster results with Fusion 360. ;-I

did you consider setting a narrow reference spool with smaller diameter, and use adapters for all your actual spools? This way the spring-blades will not extend beyond the spool width, saving a lot of space.

Ahh, that is a real good tip. Will try this first. Given the rased part if the spring blades is ~15 mm that should be more than enough saving.

Concerning the retaining ring: While reducing the clearance of the ring with give a tighter fit, I still think a grove in the axle at the right position where the retaining ring snaps in would be the best solution. 0,5 mm would probably already be enough to lock the retaining ring in place.

One thing I forgot in my suggestion list: The spring protector works nice as long as it is fixed with the axle to the spring. But take out the axle and the protector will easily slide of and the center of the spring follows the protector where ever gravity decided to send both. ;-) I like the locking mechanism that attaches the spring to the hub. May something similar could lock the protector to the spring.

Just a rough sketch what it could look like:

Comments deleted.

I apologize if detailed elsewhere, I unfamiliar with customizer. Didn't even see it was there. I am building a spool for the standard colorfabb 2.2k. w 100mm, d 53mm. I would enter 100 into ref. spool D and 2nd spool w. Bump the spring blade width up to 11 for a larger spool. create thing and wait?

It should work, but please double-check the parameters you enter. If colorfabb spool has inner diameter 53 and width 100, then you have to enter 53 for the ref spool D and 100 for ref spool W. If this is your only spool then set 0 for the 2nd spool D.
You should also check the assembly view if it looks consistent with what you expect.

Would ABS work for the whole thing or just the spring maybe?

First of all, nice design. Thanks for sharing!

I printed the compact re-winder with PETG but I just don't know how to assemble this. Especially not sure what the clip is for. Is there an instruction for assembly for dummies?

Could you post a photo of the parts which you just printed?

Or check the video of the original rewinder, the new one functions in the same way. The axle clips/spacers are just to hold the hub and spring in place.

Is there a recommended material?

Any rigid material should work. I usually use PETG for the spring and PLA for all other parts. The compact black example is all PLA, including the spring.

I went in and did the custom dimensions for my spools using the customizer on this site, however, it generated the entire assembly as one part, and even included a piece of what looks like a spool...am I doing something wrong here?

Ah, found it. I missed the dropdown menu at the top of the page when customizing. Set it to 'print' and gave me the separate files :-)

Wow Vincent. This is a very special upgrade. I'll definitely be printing out 5 of these for testing - got my fingers crossed that these will be compatible with my axle stands, but I suspect you've thought about this. Very impressive work.

OpenSCAD outputs the total width of the holder in the console, in case you want to know! And set the axle length to match your setup. Then it should work (hopefully).

Thanks. Might be a good idea to publish STL's of a 120mm shaft and a 106mm shaft for those who may have designed axle stands to reuse the MMU2 or MMU1 spool holder hardware. I love parametric designs but they are beyond the capabilities of surprising numbers of people.

STL's are spool specific, so I doubt if publishing that would be very useful. If you can design custom axle stands yourself then you should be perfectly able to use the customizer.

Anyway, you can easily set the axle length to 120 (or 106) in the customizer. The default value of 0 results in automatic calculation, any nonzero value is defined by user.

For clarity - You're correct in assuming that I know how to do this (and did so immediately). Openscad is my preferred 3d modelling tool so I'm excited this is what these are modeled in. But since your initial release was designed around the MMU2 axle shafts, and since there may be hundreds of people who printed axle stands designed for that specific length, I think it would be a courtesy to those people to provide an STL compatible with those, because some of the things that you and I find easy to do are not easy for mere mortals.

Thanks for the clarification! I now agree with you, so I've just uploaded a 120mm axle which should be compatible with MMU2 axles.

Wow. When you say you are doing an upgrade, you really mean it! Nice work and thank you for sharing.

I posted a remix for .5kg eSun spools AFTER I printed it and made sure I did the customization correctly. It fits great! I used a drop of super glue to fix the clips to the axle.

So you glued the clips and now the spring is broken... can you still remove the clips?

Amazing work Vincent well done. I will have to give one of these a try later in the week (Work trip early part of the week I hate it when I am away from my printer!)

Have a good trip then! Let me know if you manage to adjust the axle to your Under Shelf Spool Holder.

A really nice idea but do you have .stl files? With .scad I can't work.

Sure, I will upload a few STL files. You could also use the customizer on this website to generate it yourself.

HI, sorry, new to customiser. love the design. Trying to adapt it to a hanging design with only one side supported. Is there any way to get separate stl files generated? I keep having to print the entire design when right now all I want to print is the hub for trial. I tried importing the whole stl into fusion but that is ungainly.

Yes, in the customizer you can set "output" to "hub" (or any other part) to get the STL of that specific part!