Retraction, Huh! What is it good for?

Retraction is the technique of sucking molten plastic back up into the heated extrusion nozzle of a 3D printer. Like squeezing the edges of a toothpaste tube to suck back in some of the toothpaste you accidentally squeezed out. The printer does it by turning the extruder motor in reverse.

I’ve been fighting a losing battle with retraction since Boxing day (December 26). Not a single print worth displaying on my blog has emerged from my printer since then. So I thought I should blog about that!

Writing is so much easier than 3D printing. Maybe it’s because I’ve been reading and writing for something like 45 years. I’m sure printing will get easier.

No Toys => Not Happy

My Xmas present haul this year was noticably lacking in toys. Just because I’m nearing 50 doesn’t mean that a toyless Xmas satisfies me. So I decided to use my big toy, my MakerGear Mendel Prusa 3D printer, to make myself some smaller toys.

I like Lego, and especially Lego minifigs. On Thingiverse several people with much more 3D modelling skill than me have posted STL files for double-sized minifig clones.

Overarching Ambition

Weldingrod1 very cleverly laid out a single plate of many parts, which would make four whole minifigs in one batch. ‘Cool’, says I.

Download file -> Netfabb -> Slic3r -> Pronterface -> Marlin non-gen6.

Oops. I’ve never tried to print anything with as many ‘travel’ moves as this. A travel move is when the extruder moves from one place to another without extruding any plastic. Like when moving from one part to another.

That is where Retraction comes in.


While extruding plastic within a contiguous part, the plastic flows out continuously, with only the rate changing (for complex reasons I only partly understand). When the nozzle wants to jump across a gap to a new part, a cobweb-like thin strand of plastic tends to follow the nozzle across. Messy.

The solution is to retract the filament back up into the nozzle just before jumping across the gap. Then, on arrival at the other side, we have to advance the filament back to where it was before we extruded it.

When this works, it stops stringy cobwebs forming, and allows printing to continue uninterrupted on the other side of the gap. As you will have guessed from my ‘losing battle’ comment earlier, this is not what is happening for me.

Problems with retraction

Here are the ways I’ve noticed retraction failing so far in the last week:

  • Tool little retraction:- strings form across jumps. Ok, I understand this, and I can change the retraction distance in Slic3r to decreas the strings.
  • Too much retraction compensation:- after the jump, a big circle of plastic forms as the nozzle extrudes more plastic than it needs to start the next segment. This causes a buildup of excess plastic and often a layer offset later on as the nozzle bounces off solidified plastic from lower layers.
  • Too little retraction compensation:- after the jump, the nozzle starts moving again before any plastic comes out, leaving a gap. This is not such a problem, unless the object has very thin walls, but it offends my sense of correctness.

What causes bad retraction?

If I knew the answer to this, I’d have posted ‘before and after’ photographs of something elegant that I’d produced with my printer. So you can guess this is going to be about theorising more than step-by-step instructions.

I’ve played with the ‘Retraction Distance’ setting in Slic3r. Larger distances seemed to make things worse. Reducing to zero gave me no blobbing on starting segments, but nasty stringing all over the place.

I’ve tried reducing the amount of plastic being extruded, both by lying about my filament diameter and by changing my E-steps per mm settings in the firmware. Neither seemed to affect the blobbing from retraction compensation.

I’ve played with different firmware versions, assuming there might be bugs in the retraction code that had been fixed in later versions. This got me into dark and murky waters. The V1 beta of Marlin has numbers in its config file whose purpose eludes me completely, and which are probably magically designed for the Ultimaker printer. I don’t know how to set them for my MakerGear Prusa. The defaults are way too fast and really aggressive in direction changes.

Compensation mismatch

You’ll notice that the last two bullet-pointed problems above (too much compensation, or too little) seem to be a mismatch between how much the filament is retracted before the jump, and how much it is advanced again after the jump.


One possible culprit here is ‘ooze’. Ooze is the natural tendency of the molten plastic in the hot-end of the nozzle to want to drip out. Possibly encouraged by expanding as it heats (though that is just a guess on my part; I don’t know if molten PLA is compressible). I know my natural PLA is prone to ooze, because I can see string starting to extrude out of the nozzle well before I get to my target printing temperature, and before I turn on the extruder.

I understand skeinforge has settings for calibrating the amount of ooze for a given temperature and plastic composition. I really don’t want to have to use skeinforge if I can avoid it. Slic3r doesn’t have anything ooze-related in its graphical user interface that I can see, and I haven’t looked into its command line interface.

So I haven’t tried to solve my retraction issues as an ooze-based effect. Maybe that needs to be my next step?

Extruder missteps

This was my favoured theory for quite a while, perhaps because it didn’t involve going back to skeinforge’s incredibly ugly user interface.

What if the extruder can’t retract as fast as it can extrude? Marlin seems to come with a default that says that the feedrate for extrusion is 3000 whatsits (possibly mm), and the feedrate for retraction is 7000 whatsits. That doesn’t seem right – it can suck plastic back up against gravity and the pressure in the hot end more than twice as fast as it can extrude it?

Maybe the extruder is missing steps while attempting to retract way too fast for my combination of hot-end and extruder motor. Or maybe the much-vaunted acceleration feature of Marlin is trying to over-accelerate the extruder motor. Yet I have a feeling that if I slow the extruder down too far (how far is too far?) I’ll get overlap with other problems like excessive ooze.

Other possibilities

If the filament retracts too far, maybe air gets into the heater chamber and starts pressurising the plastic even more? I’d expect little puffs and bubbles, which I’m not seeing.

What if the pressure in the nozzle chamber acts as a limit on how fast the plastic can be retracted back into the nozzle? That’d result in the extruder missing steps, I guess.

Just thinking out loud

My problem is that I don’t understand what reasonable values might be for my extruder stepper. And there are lots of values in the configuration.h files of both Sprinter and the different versions of Marlin. And I don’t know what most of them do.

I can see I have written twelve pages of trials and experimental results in my hand-written log book since my first attempt to print the founding members of my Bizarro-World Lego-ish Army of Toy Supremacy. And I have a large pile of two- and three-layer pieces of aborted prints.

Somehow I have to see that as a success.

Many thanks to the kind folks who have encouraged my construction notes and explanations of things that I do (mostly) understand. Knowing that others are succeeding keeps me determined to succeed too.

This entry was posted in 3d printing, Software and tagged , , , , , , , , , , , . Bookmark the permalink.

8 Responses to Retraction, Huh! What is it good for?

  1. set your retract distance to 0.72mm, retract extra distance to 0 and the retract speed as high as you dare (I use 900mm^3/s = 130mm/s). Set your travel speed as high as you dare too (I use 300mm/s). With these settings, my retract and reload sounds like a ‘click’ rather than a conventional movement.

    If you still get strings with these settings, reduce your hot-end temperature by 5c. Repeat as necessary. If your infill starts to look like rows of dots instead of solid lines, you’ve dropped temperature too far, or your idler tension is wrong.

    • BrazenArtifice says:

      Thanks Triffid Hunter,

      I’m trying your suggestions as I speak. Though it may take a while for me to track down and reverse all the other changes I’ve made, since I was moving in exactly the opposite direction (slower rather than faster).

      I’m so glad my vague memories of high school chemistry inspired me to keep a comprehensive log of my thought processes and the changes I make!

      Thanks again for the magic numbers.

  2. Justin Cole says:

    I check back here all the time, I am about to check these settings as well. Awesome blog by the way.

  3. Joe says:

    The reason it can retract so much faster than it can extrude is because extruding and retracting take the same amount of force to move the filament up and down the filament tube, but extruding requires much more force to push the molten plastic through a tiny pin hole. This is why you can retract much faster than extrude.

  4. Pingback: How to: Calibrating Retraction with Marlin, Pronterface and Slic3r |

  5. Pingback: Calibrating Retraction with Marlin, Pronterface and Slic3r | DIY India

  6. Pingback: Ultimaker 2 Tips an Tricks | Codethink

  7. Pingback: Grazie, graziella e grazie a sto... Hot End (PARTE 2) - La Stanza Del Casino

Please leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.