6.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
z-lift or z-hop
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.
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.
6.5.1. A word about “magic profiles”
Early on in my 3D printing experience I 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 tweaking different settings to achieve the same result. 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 printer or filament. 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.
6.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:
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:
Before making a lot of changes to your printer setup or slicer settings, make sure your filament is dry.
6.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.
6.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.
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.
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.
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.
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.
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.
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.
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 Notes on setting the extrusion multiplier in PrusaSlicer.
6.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.
For more details on calibrating Linear Advance see Calibrating linear advance with PrusaSlicer.
6.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.
18.104.22.168. 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 in PrusaSlicer can help.
6.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.
6.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 firstname.lastname@example.org.
Last edited on Sep 24, 2021. Last build on Apr 22, 2022.