5.5. Fighting Stringing Part 1: Calibrating filament settings

Stringing is one of biggest frustrations in 3D printing. In these notes, I’ll summarize simple steps to reduce stringing by calibrating slicer filament settings.

If you spend time in any 3D printing discussion group, you’ll find users wrestling with several common complaints:

  • Stringing between vertical parts

  • Zits and blobs on vertical printed surfaces

  • Ugly z-seams created when the nozzle is moved to the next layer

  • Irregular exterior walls when printing parts with multiple internal infill variations

  • Uneven top surfaces

In a perfect world, you wouldn’t need these features. The printer would extrude precisely the amount of filament needed for a segment, stop extruding instantly once the extrude command completes, then start just as cleanly on the next extrude command.

Unfortunately, we don’t live in a world of perfect machine physics. We have to live with inherent limitations of consumer-grade Fused Filament Fabrication (FFF) printing. You’re simply not going to get prints that look like cast or machined parts.

Most slicers include several settings to work around these problems. You’ll find settings for:

  • retraction and de-retraction length

  • retract/de-retract filament speeds

  • wiping

  • z-lift or z-hop

  • coasting (Cura)

and likely others I can’t think of at the moment. For all their sophistication, these features are work-arounds. Many of the problems these features address are due to a mis-match between your slicer settings and actual printer or filament characteristics. If your slicer settings don’t reflect the real world, the slicer will generate gcode commands that push just a bit too much or too little filament.

  • Push too much and the result is excessive filament extrusion that has to go somewhere. This icontributes to unsightly blobs, strings and seams.

  • Push too little and you can get under-extrusion, leading to gaps and weak adhesion.

While we can try to compensate for these mis-matches with slicer settings, it’s easy to chase our tails, compensating with one setting for problems created with another. The key is to minimize the need for compensation in the first place. The most effective way of doing this is to match your slicer settings to the physical characteristics of your printer and filament as closely as possible. If our slicer has an accurate model of the real world, the generated gcode will be more accurate. We do this by adjusting our slicer settings for each filament based on measured physical characteristics.

Note

These notes are based on my experiences with the Prusa i3 Mk3 and Artillery/Evnovo Sidewinder X1 printers. If you are using a different printer, please verify the hardware details are similar.

5.5.1. A word about “magic profiles”

Early on in my 3D printing experience I quickly encountered mention of unicorn-like “magic profiles” which promised to transform my 3D printing experience. Too often, these were promoted by YouTube personalities who pushed their profiles with little or no explanation of what went into them. After unwrapping several such sets it became clear that most were altering a small set of parameters, often by simply tweaking different settings to adjust the same print paraemters. While a profile might yield a good print with a specific filament on a specific printer, results would often be less-than-stellar with another type. Without understanding why a specific profile worked, I found it impossible to work without looking for another “magic profile”. It soon became clear that there are no magic profiles. There are profiles that match your filament and printer, and there are those that don’t. If you are trying something new, you need to add the “magic” to your settings to match your specific needs to get the best results.

5.5.2. Filament and moisture

Most filaments are hygroscopic to some degree, meaning they will absorb moisture form the air. Even a fresh spool of filament may have absorbed some moisture if the bag seal was not tight, or it was mishandled during production. Even PLA can absorb moisture under the right environmental conditions. Here’s an example of PLA filament that was printing well on one day, only to turn into a stringy mess when printing the same gcode after a few days of exposure to humidity during unusual weather:

The effect of moisture on PLA filament

Fig. 5.44 The effect of moisture on PLA filament

In many cases, simply drying filament out will restore it to previous good print quality. Here’s another print with the same spool after being dried out in a food dehydrator-style dryer for a few hours:

The result of drying PLA filament

Fig. 5.45 The result of drying PLA filament

Before making a lot of changes to your printer setup or slicer settings, make sure your filament is dry.

5.5.3. PrusaSlicer presets

PrusaSlicer ships with a selection of filament presets that have been tweaked for a variety of filament brands and types. If you’re using one of these filament brands, start with the closest matching filament.

If you’re using another brand or type of filament, start with the closest available preset, then spend some time on fine tuning as described below. The best preset in the world can’t identify everything about your hardware or environment. Even weather can affect print results. If you are chasing any quality problems, you definitely want to spend a few minutes creating and tweaking a custom filament profile for any filaments that you use frequently.

5.5.4. Calibrating your extrusion mutliplier

The extrusion multiplier is a modifier that the slicer applies to calculations for extruding filament. This value is multiplied by the calculated extrusion amount to provide a slight adjustment to increase or decrease filament flow. Th is allows for minor tweaks for specific filaments.

  • In PrusaSlicer, it is set under Filament Settings->Filament->Filament->Extrusion multiplier.

  • In Ultimaker Cura, it is set under Material->Flow.

Calibrating your extrusion multiplier is one of the most effective fine tuning techniques. It makes sense if you think about it. Your slicer presets make assumptions about your filament and printer. If those assumptions are off by even a slight amount, the slicer is going to generate gcode that will push just a bit too much or too little filament to match your actual printer and filament. A slight tweak to the extrusion multiplier setting in any slicer can make the difference between a stringy mess and a crisp print.

Important

If you are using PrusaSlicer, be aware that Prusa includes some extrusion multiplier adjustments in the printer start gcode. This can cause confusion if you’re not aware of it up front. Read up on the PrusaSlicer system preset notes for the Mk3-series for the extrusion multiplier adjustment.

Fortunately, this calibration is straightforward. Any time you’re using a new filament brand or type, spend a few minutes tweaking your slicer settings to match your filament.

  1. With a pair of calipers with 0.02mm or better resolution, measure and average the diameter of the filament at several locations. At least 3 locations over a meter or more of filament are recommended. Enter this value in as your extrusion multiplier.

  2. Look at your slicer settings or view a gcode file in a text editor to identify the extrusion width being used for perimeters (the walls). Look at your slicer settings for the number of perimeters used on walls. If you are using 0.45mm perimeter extrusion widths and 2 perimeters, your cube should print with close to 0.90mm thick walls. This is your TARGET thickness. Some smart people swear by using 1 perimeter, others by more. After doing some research, I’ve settled on 2 as a good number that will allow the extruder flow to compensate for any filament inconsistency.

    Note

    PrusaSlicer does not produce walls that are exactly the number of perimeters times extrusion width thick. Slight variations are made for external walls, and for overlap between walls. I’m working on detailed notes for PrusaSlicer with more detail. For now, use PrusaSlicer with 2 perimeters, 0.45mm perimeter extrusion widths, and a 0.2mm layer height. The resulting walls should be 0.868mm thick.

  3. Slice and print a small cube (20mm to 40mm to ensure filament is flowing evenly for the walls) with 0 top layers and 0% infill using a 1.0 extrusion multiplier. This will give you a hollow -– but not vase mode -– cube when printed.

  4. Measure the wall thickness on each wall. You want the actual width of lines printed, not the worst-case variation between layers, so don’t worry about measuring along the entire height or in corners. Measure a few layers near the top center at least once for each side. Avoid corners and areas near seams. Average these measurements together. This is your ACTUAL thickness.

  5. Divide TARGET by ACTUAL. This is your calibrated Extrusion Multiplier for this filament. Enter this value in Filament Settings->Filament-Extrusion multiplier.

Print the same cube with the same settings using your new extrusion multiplier value and repeat this procedure as necessary. At this point, you’ve adjusted the slicer to closely match the physical properties of your filament.

For more notes on setting the extrusion multiplier, see:

5.5.5. Linear advance

Linear Advance (LA) is a feature of the Marlin firmware that maintains even nozzle pressure throughout an extrusion, from initial acceleration, through consistent motion at speed, to final deceleration and stopping.

  • If LA is set too low you’ll see “dog bone” bulges in corners rather than neat squares.

  • If LA is set too high, corners will look rounded off.

Here’s a test print showing the effect of changing Linear Advance at different levels. LA has been incremented from 0 to 80 in steps of 5 at each level from left to right.

The effects of changing Linear Advance

Fig. 5.46 The effects of changing Linear Advance

For more details on calibrating Linear Advance see:

5.5.6. About the Z-seam

The z-seam is one of the most common source of complaints about part quality. The seam is created when the nozzle is moved from one layer to the next, creating a break in the filament flow. With current consumer-grade FFF printing, gaps or blobs are often introduced during these moves. Here again, even a slight under- or over-extrusion can exaggerate the effect.

While cannot eliminate the seam completely, you can hide the seam:

  • If your parts have corners, you can use the nearest or aligned options to have the slicer create the seam for each layer in a corner.

  • If you specify rear, the seam will be aligned along the rear of the part.

Any of those options may help with visual appearance, and some experimentation will be needed to identify the best approach for any given print. Prints with no corners on layers, particularly rounded or spherical areas, may require post-processing.

5.5.6.1. The effect of filament calibration on the z-seam

Good slicer settings for your filament can also help considerably with z-seam appearance. With good calibration, the size and irregularity of the z-seam should be reduced. Here again, careful calibration of the extrusion multiplier can help.

Minimizing z-seam appearance

Fig. 5.47 Minimizing z-seam appearance

5.5.7. Fine tuning retraction settings

Retraction is the final frontier of calibration tuning. Ideally, we’re doing as little retraction as needed to improve final print quality. I’ve created separate notes on calibrating retraction settings.

5.5.8. The payoff

If you spend some time on calibrating your filament and retraction settings, the z-seam will still be visible (you can’t completely eliminate it) but far less prominent. Fine stringing, irregular exterior walls and blobs will largely be gone. As an added bonus, our prints go faster without waiting for retraction moves that require stopping and relatively slow extruder actions. At this point, any slicer settings you use are just making minor corrections to a print that is as near-perfect as we can make it.

Once you get these calibrations done, you should find that your issues with stringing, bulges, inconsistent corners and other common problems are minimized if not eliminated.

Contact and feedback

You can find me on the Prusa support forums or Reddit where I lurk in many of the 3D printing-related subreddits. I occasionally drop into the Official Prusa 3D discord server where I can be reached as bobstro (bobstro#9830). You can email me directly at projects@ttlexceeded.com.

Last edited on June 10, 2021. Last build on Jun 10, 2021.