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

To a degree, these are unfortunate characteristics of current consumer-grade Fused Filament Fabrication (FFF) printing. You’re simply not going to get prints that look like cast or machined parts. 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, so features have been added to most slicers to compensate for the differences between the slicer’s view of the world and reality. 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, they are work-arounds. Any mis-match between your slicer settings and actual printer or filament characteristics can result in the slicer creating gcode commands that push just a bit too much or too little filament.

  • Push too much and the result is excessive filament oozing that has to go somewhere. This is what contributes 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 using these settings, it’s easy to wind up chasing 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 setting your slicer to the physical characteristics of your printer and filament as closely as possible so our slicer has an accurate model of the real work as possible. 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.

Perfecting prints

PrusaSlicer ships with a selection of filament profiles that have been tweaked for a variety of filament brands and types, as well as some generic types. These profiles will provide settings that provide reasonable results for most filaments, but aren’t based on your hardware or environment. If you want 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.


If you are calibrating your filament settings for a Prusa i3 Mk3-series printer, read up on the PrusaSlicer system preset notes for the Mk3-series for the extrusion multiplier adjustment.

Fortunately, this process is straightforward:

  1. With a pair of calipers with sufficient resolution (0.02mm or better), 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 Filament Settings->Filament Diameter.

  2. Look at your slicer settings or view a sample gcode file in a tex 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 3. 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 of exactly this thickness for perimeters. Slight variations are made for external walls, and for overlap between walls. However, the variation is small enough not to be significant for our purposes.

  1. 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.

  2. 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 wall 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.

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

At this point, you’ve adjusted the slicer to closely match the physical properties of your filament.

Linear advance

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


As of this writing, Prusa is about to release updated firmware that will upgrade Marlin Linear Advance from version 1.0 to 1.5. Prusa is committed to providing backwards compatibility, so there should be no need to change profiles immediately, although migrating to the new approach is recommended. This will change the range of values entered to configure LA, and will require new calibration prints.

Prusa is hardly the only company to support LA, but they have embraced it in a way that I don’t see from many other printer manufacturers. Interestingly, PrusaSlicer doesn’t provide a coast (stop extruding early) feature. With LA, it’s not really needed. If you calibrate LA properly for each filament, or use a brand that matches a Prusa profile, extrusion rates should be even across an entire extrusion.

  • 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. 114 The effects of changing Linear Advance

There are several LA calibration prints, including Marlin (the Mk3 uses v1.0) and Prusa’s (IMO) less efficient method. Use either of these methods to identify the best LA value for your filament, and set the appropriate value in Filament Settings->Custom G-Code->Start G-Code. Near the bottom, you’ll find a line that looks similar to:

M900 K{if printer_notes=~/.*PRINTER_HAS_BOWDEN.*/}200{elsif nozzle_diameter[0]==0.6}18{else}30{endif} ; Filament gcode

Replace the LA value (30) with the new value.

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.

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. 115 Minimizing z-seam appearance

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.

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

Last edited on Apr 04, 2021. Last build on Apr 03, 2021.