3D Printer Calibration Guide to Improve Print Quality

Marcello De Lio

Last Updated:

Disclosure: This post may contain affiliate links. We may receive compensation when you purchase via my links at no cost to you. See our disclosure for more information.

3D Benchy calibration test print in green pla filament on a voxelab aquila x2 3D printer

Whether you just got a new printer or want to upgrade your finished prints, 3D printer calibration is essential for producing high-quality 3D prints.

A cheap printer that’s properly calibrated can produce incredible print quality that rivals more expensive machines. On the other hand, an improperly calibrated printer will produce ugly or failed prints.

Below is our complete 3D Printer Calibration Guide

Check Your 3D Printer’s Frame

Tightening the bolts on an Anycubic Vyper 3D printer
(Source: DaFr0n via Reddit)

Checking the build quality of your machine is the first step in the 3D printer calibration process. Look around and ensure that nothing is bent, loose, or broken.

Loose belts and a wobbly frame are common sources of 3D print ghosting, rippling, and echos.

First, turn off the power to the printer and unplug it from the power source.

Look around the machine and check all the nuts, bolts, screws, and fasteners. They should be relatively tight.

Do not overtighten any fasteners, as they can cause cracks in the frame. Screws should be tightly fit but not forced to the fullest. It’s best to tighten bolts and screws manually to avoid over-tightening.

Checking the build frame of a Anycubic Vyper 3D Printer

Most importantly, check the screw that holds the heating cartridge in place. If the screw is loose, the hotend could loosen and fall out, which is a major fire risk.

Ensure the frame isn’t bent and the supports are straight. Check the top and side rails with a level to ensure they aren’t tilting to either side.

Your printer might look straight, but it’s best to double-check with a level.

Knob belt tensioner on an ender 3 v2

Continue your inspection by checking your 3D printer’s belt tension. The belts should be tight, without slack, but not overly tightened.

Tap or pluck the belt with your fingers to check the belt tension. The ideal tension is similar to a guitar string.

Check that the Bowden tube is fully inserted at both ends. It shouldn’t move if you pull on it slightly.

Inspect all the electrical connections. Ensure that they are plugged in correctly.

Finally, make sure your printer is set to the proper voltage. Most FDM printers provide the option for 220V and 110V power. Make sure you turn the switch to the correct setting for your region.

If everything looks good, you turn on the printer.

We’re going to check that the endstops are working. In the menu options, select “auto home.”

The print head and the hotend should move into the home position. If not, you may have a problem with the wiring or endstop alignment.

Firmware Upgrade

The display on the Anycubic vyper displaying the front page for the vyper v.2.4.5 upgraded firmware

It’s highly recommended to upgrade the firmware before printing.

It’s common for 3D printers to ship with the safety features disabled. You risk creating a fire without proper safety features like thermal runaway protection.

We still recommend updating the firmware even if you’re confident that your printer has the safety features enabled.

Updating the firmware is a straightforward process. On new 3D printers, it’s as simple as uploading the firmware file to your SD or microSD card and restarting the machine.

We recommend upgrading to Marlin firmware. Marlin firmware is reliable and precise and comes with many great safety features.

TH3D has a great firmware installation guide for several popular 3D printer models.

It’s a good idea to regularly update your printer’s firmware for better print quality, new features, and safety enhancements.

Bed Leveling

A level bed on an Ender 3 V2

3D printer bed leveling is perhaps the most essential calibration step to achieving better print quality.

Manual bed leveling is a tedious and repetitive task. But it is crucial to getting high-quality prints.

The other suggestions on this list won’t work without a properly leveled bed.

3D Printer bed leveling on an Ender 3 V2

So take your time, and make sure you do it right.

Here are the steps to manually level the bed:

  1. Clean the build surface using isopropyl alcohol (IPA) to remove dust and filament residue.
  2. Set the printer to the home position using the “auto home” feature in the menu.
  3. Disable the stepper motors.
  4. Bring the nozzle to one of the corners.
  5. Place a sheet of paper between the nozzle and the print bed.
  6. Adjust the bed height using the bed leveling knobs until there is a slight resistance when you try to move the paper.
  7. Repeat the steps for all four corners and the middle of the build surface. You’ll need to repeat the steps several times, as adjusting one corner affects the bed leveling of the other corners.

Once all four corners are level, we recommend printing a bed-level corner squares test print from Thingiverse. After printing the test print, the squares should be a uniform thickness without holes. The filament should be slightly squished.

Extruder E-Steps Calibration

Close up of the extruder motor on the Voxelab Aquila X2 extruding red filament

Calibrating the extruder e-steps ensures that your extruder motor feeds the right amount of filament. If your e-steps aren’t properly calibrated, your finished prints may have gaps, warping, zits, blobs, and stringing.

To calibrate your extruder, you’ll need a permanent marker and calipers.

Here’s how to calibrate e-steps on your 3D printer:

  1. Connect your computer to your printer using a USB cable or WiFi if you have a WiFi-enabled printer.
  2. Open your slicing software. We recommend Simplify3D because it allows us to send G-code directly to the printer.
  3. Set the printer to relative mode using the “M83” command.
  4. Load non-flexible filament into your 3D printer (e.x. PLA, ABS, or PETG).
  5. Preheat the nozzle to the normal printing temperature.
  6. Using your calipers, measure a 120mm filament segment from where it enters the extruder and mark the point using the sharpie.Measuring 120mm of filament while performing E-step calibration
  7. Extrude 100mm of filament through the printer. If your printer uses Marlin Firmware, click on “Prepare > Extrude > Move 10mm.” Use the knob to set the extrusion to 100mm. If your slicing software has an extrude tool, you can use it to extrude 100mm. Otherwise, send the G-code command “G1 E100 F100” to the printer.
  8. Once the printer is done extruding, measure how much filament you have left.Checking how much filament remains during calibration of the extruder motor
    1. If your printer is calibrated correctly, you should have 20mm remaining to the mark you made earlier. If you have exactly 20mm of filament left, you can move on to calibrating your extrusion flow rate.
    2. If you have more than 20mm remaining, your printer has a problem with under-extrusion.
    3. If you have less than 20mm of filament left, your printer has an over-extrusion problem.
  9. Locate the previous E-step settings from your 3D printer. To find it on the Ender 3, go to “Control > Motion > E-steps/mm.” If you can’t access the e-step value, connect your computer to the printer using a USB or WiFi connection. Send the code “M503” to your printer using your preferred slicer software. Find the line with the code “echo: M92.” You’ll find the current e-step value at the end of the line.
  10. Now we need to do some calculations to determine the new E-value.
    • 120 – [remaining filament from the extruder to your sharpie mark] = [length of extruded filament]
    • [E-value found in step 10] x 100 = [steps taken]
    • [steps taken] / [length of extruded filament] = [the accurate E-value]
  11. Set the E-steps value to the number you calculated in step 11.

Congratulations! You’ve now calibrated your extruder e-steps.

Extrusion Flow Rate

Now that we have the right amount of filament going in, it’s time to check that we have the right amount of filament being extruded.

You’ll need calipers and the Flowrate Calibration test print from Thingiverse to calibrate your flow rate.

Now you’re ready to calibrate the extrusion flow rate:

  1. Download the Flowrate Calibration test print from Thingiverse and import it into your slicing software.
  2. Use the following slicer settings for the test print:
    • Layer height: 0.2mm
    • Line width (wall thickness): 0.4mm
    • Wall line count: 1
    • Infill density: 0%
    • Top layers: 0
  3. Slice the file and print it on your 3D printer.
  4. Using your caliper, measure the four sides of the print, and record the measurements.
  5. Find the average of all four sides and use the calculation below to determine the net flow rate:
    • New flow rate (%) = (0.4 ÷ average wall thickness) × 100
  6. Now that you’ve calculated your net flow rate update your slicer settings. In Cura, you can update the flow rate by clicking on “Material > Flow.”
  7. Save the new profile.

To ensure your 3D printer is perfectly calibrated, you can repeat the steps until your average wall thickness equals 0.4mm.

Stepper Motors

Checking the dimensions of a 20mm cube to calibrate the stepper motors on a 3D Printer

We’ve already calibrated the extrusion stepper motor, but it’s a good idea to calibrate the stepper motors responsible for movement along the X, Y, and Z axis.

The stepper motors control the belts responsible for movement along each axis and are directly responsible for the dimensional accuracy of your prints. If the stepper motors aren’t calibrated correctly, your 3D-printed parts may be squished or elongated along the miscalibrated axis.

The calibration process is similar to calibrating the E-steps, but instead of running a line of filament, we’ll use a 20mmx20mmx20mm cube to run our calculations.

Follow the steps below to calibrate your axis steps accurately.

  1. Print the 20mmx20mm cube from Thingiverse
  2. Use a ruler or the digital Vernier Calipers to measure the axes you are calibrating. This value will be your (Actual Axis Length).
  3. Navigate to the e-steps section of your printer’s menu. You’ll find it on printers with Marilin firmware, such as the Ender 3 at Home > Control > Motion > steps/mm. Record the value next to the axis you are trying to calibrate as the (Original Steps/mm)
  4. Plug your variables into the following formulas to obtain your new steps/mm value.
    1. (Original steps/mm) X 20mm = (Steps Taken)
    2. (Steps Taken) / (Actual Axis Length) = (New Step/mm Value)
  5. The number you obtained is your updated E-step value. Go back through your menu and change the original axis step/mm value to the new value (New Step/mm Value).
  6. Repeat steps 3 to 5 for the X, Y, and Z axis.

That’s it! You’ve successfully calibrated the X, Y, and Z-axis stepper motors.

PID calibration

Close up of the nozzle, heating cartridge, and thermistor in the print head of an Ender 3

PID is essentially how your 3D printer maintains a balanced temperature on the print head and build surface.

Print temperatures can fluctuate during the printing process. The fluctuations are most notable on new printers or at the start of a new print, as your printer “learns” how to heat the nozzle for consistent printing temperatures.

The calibration process is automatic. We recommend updating your printer to the latest firmware version for the best results.

You can find the PID settings on Marlin firmware under “Control > Temperature > PID Autotune.”

In the PID Autotune settings, you can set your normal printing temperature. After adjusting the value, your printer will run through a few cycles of heating the nozzle.

During this time, the temperature will rise and fall over repeated cycles. Once the temperature stops rising, the calibration process is complete.

After the calibration completes, make sure you save your PID settings.

To check that the PID settings are saved:

  1. Write down the P, I, and D values.
  2. Turn off your 3D printer and turn it back on.
  3. Navigate to your PID settings and check that they are the same. 

PID calibration is essential if you move your printer to a room with a different ambient temperature. For example, if you move your printer from your bedroom to a colder basement, you’ll want to re-calibrate PID.

Nozzle Temperature Calibration

Close up of the print head on an Ender 3 V2

There’s no ideal printing temperature for your filament.

3D filament manufacturers have a suggested nozzle temperature range for the filament, and it’s a good place to start.

But, several factors can influence the best nozzle temperature, including different filament materials, manufacturers, colors, printers, ambient temperature, and more.

The best way to find the right printing temperature is to print a temperature tower test print from Thingiverse. The test print has several layers printed at different temperatures.

When the print is completed, inspect it to see how your filament performs at different temperatures.

As a general rule, it’s best to print a temperature tower for each new filament. One PLA filament may print best at 200ºC while another prints best at 215ºC. Even color differences can affect ideal print temperatures from the same filament brand.

Adjust the Z Offset

Close up of the extruder nozzle on an Ender 3 V2 Pro after bed leveling

Leveling the bed solves takes you 90% of the way to getting an excellent first layer. While bed leveling ensures the nozzle is the correct distance from the bed, adjusting the Z offset helps compensate for differences in build surface and filament type.

You can think of Z offset as a fine-tuning for bed leveling.

Before adjusting the Z offset, it’s vital to ensure the print bed is clean and manually leveled.

The easiest way to adjust the Z offset is through your printer’s display:

  1. Navigate to the Z offset settings. In Marlin firmware, it can be found at “Control > Motion.”
  2. Auto-home your printer or disable the stepper motors.
  3. Move the Z-axis to position 0.0. If you disabled the stepper motors, move the hotend to the center of the bed volume.
  4. Place a sheet of paper on the build plate under the nozzle and then manually move the Z height (Prepare>Move Axis>Move Z) until you can feel a slight resistance on the paper but can still move it. Note: You might get a negative value, which is perfectly fine.
  5. Write down the ending value. The number you arrive at is your Z-offset. In our case, the Z-position was -1.25, but yours may be different.
  6. Toggle through the menu to change the Z offset value (Control>Motion>Z Offset).
  7. Update the Z offset to the number you wrote down in step 5. Toggle back to the Control menu and select “Store settings” to save the new Z offset.
  8. Turn off the printer and wait 10 seconds before turning it back on.
  9. Auto home the printer again. Use the same piece of paper to ensure that the offset is correct and that the paper can move with slight resistance.
  10. If the Z offset isn’t correct, repeat steps 2-8.

You can also update the Z offset in the G-code or slicer settings.

Dialing in Retraction Settings

Two 3D prints side by side. The one on the left has stringing issues while the one on the right doesn't

Retraction tells your printer to pull back filament between layers before traveling over empty spaces. Using the proper retraction settings is crucial for minimizing 3D printer stringing.

Unfortunately, there’s no easy way to calibrate retraction other than trial and error.

The two main settings to calibrate are the retraction speed and retraction distance.

To start, download the Basic Retraction test from Thingiverse. Print a test print with a retraction distance of 5mm and a retraction speed of 40mm/s. If you don’t see any stringing, you’ve found your ideal retraction settings.

If you see strings between the pillars of the test print, you’ll need to do some further calibration. Make sure you only make changes to either the retraction distance or retraction speed. If you adjust both simultaneously, you won’t know which setting makes the difference.

Try adjusting the speed up or down in 5mm/s increments. Anywhere between 30 and 60mm/s should be sufficient.

You can also adjust the retraction distance in 1mm increments. Anywhere between 2 to 7mm should work.

It’s important to note that the above retraction numbers are for 3D printers with a Bowden tube. 3D printers with direct drive extruders should have a retraction distance between 0.5-2.0mm and a retraction speed between 20-100 mm/s.

Calibrate Printing Speed

Close up of a 3D printer making a small print

As the name suggests, the printing speed is how fast the printer nozzle moves while printing. Like print temperature calibration, the optimal print speed varies between filament diameters, materials, brands, and colors.

You can calibrate the print speed by using printing a Speed Test Tower from Thingiverse.

The tower prints several cubes at different print speeds. By analyzing the appearance of each cube, you can find the ideal printing speed.

You’ll want to find the sweet spot between quality and speed, as faster print speeds result in quicker print times.

Another similar slicer setting is travel speed. Travel speed is the speed that the print head moves while not printing. A faster travel speed can lower print times and reduce stringing. But increasing the travel speed too high can lead to ghosting, layer shifting, and other problems.

We like to leave the travel speed at Cura’s default settings. But feel free to play around with it if you want to decrease your print times.

Article by

Marcello De Lio

Ready to Improve Your Results?

Dive deep into the world of 3D printing with our exclusive newsletter. Get insider tips, hands-on reviews, and the latest news to improve your 3D printing.