Filament calibration

Spend some time in any 3D printing discussion and you’ll see new users with several common complaints:

  • Zits and blobs on the exterior wall of prints

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

  • Uneven top surfaces

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

  • Stringing between vertical parts

To a large degree, these are unfortunate characteristics of current consumer-grade FFF printing. You’re simply not going to get prints that look like cast or machined parts.


These notes are based on my experiences with the Prusa i3 Mk3 printer. If you are using a different printer, please verify the hardware details are same. These pages may be a bit rough as I revise them and add new material. Please check back regularly for updates.

Most slicers include several features that are designed to mitigate some or all of these problems, including:

  • retraction

  • retract/de-retract filament speeds

  • wiping

  • z-lift/z-hop

  • coasting (Cura)

and likely others I can’t think of at the moment. It’s important to remember that these are work-arounds to hide these imperfections. In a perfect world with a well calibrated printer and filament, you wouldn’t need these features. The printer would stop extruding instantly once an extrude command is complete, and start just as cleanly on the next extrude command. Unfortunately, we don’t live in a world of perfect physics, so these features have been added to compensate. You can get into problems depending on them to compensate for too many issues. The key is to minimize the need for compensation in the first place.

While we can’t hope to produce a perfect print, we can try to make each print as close to perfect as possible before trying to hide problems.

Perfecting prints

Calibrating your slicer settings to match your actual filament characteristics allows the slicer to produce prints that more closely resemble what you see in preview mode. We do this by adjusting our slicer settings for each filament based on measured physical characteristics.

The Prusa-provided profiles have been tuned for a handful of filaments, but if you’re using anything else, you definitely want to spend a few minutes creating and tweaking a filament profile for any that you use frequently. 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 the gcode file 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 people swear by using 1 perimeter, others by 3. After doing some research, I’ve settled on 2 as a good number that will reflect any filament inconsistency.

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

  4. Measure the wall thickness on each wall. You’re not trying to measure the variation of the printer between layers, so measure near the top center. You want the actual width of lines printed, not the worst-case, so don’t worry about measuring the entire cube height or in corners. 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.

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. Prusa is hardly the only company to support LA, but they have embraced it in a way that I don’t see in many other printers. Notably, Prusa doesn’t include a coast (stop extruding early) feature in PrusaSlicer. With LA, it’s not really needed. If you calibrate LA properly for each filament, or use a brand that Prusa has calibrated for you, extrusion rates should be even across an entire flat surface. If it’s off, you’ll see “dog bone” bulges in corners rather than neat squares.

Set LA too high and corners can look rounded. 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. 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 probably the most common source of complaints about part quality. While you can hide the seam, you cannot eliminate it completely. 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 use rear they’ll all align along the rear of the part. Any of those should help with visual appearance. With good calibration, the size and irregularity of the z-seam should be reduced.

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.

Fine tuning retraction

Retraction is the final frontier of calibration tuning. Ideally, we’re doing as little retraction as needed to improve final print quality.

I use the following retraction settings as a starting point:

  • 0.2-0.4mm retraction

  • 0-0.2mm z-lift

  • 50mm/s retract speed

  • 25mm/s de-retract speeds

The z-seam is still visible (you can’t eliminate it) but far less prominent. Fine stringing, irregular exterior walls and blogs are largely gone. As an added bonus, prints go faster without waiting for retraction moves.

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.

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.

Last updated on 20191126