How To Calibrate the Extruder Steps (Ender-3 / Ender-5 / CR-10)

After I setup the new Creality Ender-5, it was under extruding by a rather significant amount… 12% to be exact. This came as no surprise, my Ender-3 and CR-10 had both arrived with similar problems in the past, badly in need of a proper calibration to the Extruder Steps.

When our 3D prints are less than perfect, the Extruder Steps (or e-steps) are often checked as a last resort. There are plenty of other tweaks that can improve results, but e-steps should be the first suspect on every new 3D Printer. It’s responsible for how much plastic gets pushed in to the hotend, and the wrong setting can leave gaps, blobs and other surface defects.

On the upside, Creality does make it easy to check, change and fix the Extruder Steps. No need to connect the 3D Printer to your computer over USB, we can just dial in the correct settings right from the LCD control screen.

Calibration Tools

We just need a couple of tools, something to measure and something to mark. In my case, I am using Digital Calipers from Amazon and a sharpie.

  • Calipers / Ruler
  • Permanent Marker

Calibrate Extruder Steps Tools

Calculate Extruder Steps

To check if our current Extruder Steps are correct, we first need to tell the 3D Printer to extrude a specific amount of filament. We then measure how much was actually extruded, find the difference and calculate the correct e-steps based on that.

1) Measure

Using calipers or a ruler, measure out exactly 100mm in length from the extruder and mark it on the filament with a sharpie. It’s a good idea to make several additional marks at 110 and 120 too, just in case it extrudes more than we want and additional points of reference are needed.

Calibrate E-Steps Measure Filament

2) Extrude

Go ahead and preheat your hotend up to normal printing temperatures. From the LCD control screen, press the knob once to bring up the main menu and navigate to Prepare -> Preheat PLA or Configure -> Temperature -> Nozzle to set a specific value.

It’s a good idea to set the temperature +5° C hotter than you would normally print this filament. We don’t want any resistance at the nozzle to throw off our measurements, it should flow out nice and smooth.

Once the hotend is preheated, bring up the menu again and this time go to Prepare -> Move Axis -> Move 1mm -> Extruder. Turn the knob to the right until you reach our desired value of 100mm, then wait until it has finished extruding the filament.

3) Check

If our 100mm mark on the filament is right at the extruder, the e-steps are perfectly calibrated and we’re finished.

Otherwise, if the mark shows that it extruded more or less filament than we wanted, we will need to check how much. To do this, measure the distance from the extruder to our mark once more and see how much filament was actually pushed through the hotend.

If the 100mm mark is still visible…

The 3D Printer is under extruding and not pushing out as much plastic as it should be.

Subtract the new_measurement from the original_measurement to find the difference. In my case, I still had 12mm of filament left before my 100mm mark, so my calculations are…

100 - 12 = 88

If the 100mm mark is no longer visible…

The 3D Printer is over extruding, feeding more plastic than we wanted.

Use one of the additional reference marks we made and measure to that instead. Subtract the new_measurement from the reference_point.

As an example, let’s say we measured from the extruder to our mark at 120mm, and there was a length of 16mm filament between them. In that case, we would do…

120 - 16 = 104

Write down this value and save it for the next step.

Calibrate Extruder Steps

Before we can figure out the new correct value for our Extruder Steps, we need to first check and see what the current wrong value is.

From the LCD screen, push the knob and navigate to Control -> Motion -> ESteps/mm to view the original setting. Unless it was previously changed, the default e-step values from Creality are set as…

  • Creality CR-10: 93.0 steps/mm
  • Creality Ender-3: 95.0 steps/mm
  • Creality Ender-5: 92.6 steps/mm

Using the formula below, multiply the current E-Steps/mm for your machine by the desired amount of filament (100) we asked it to extrude. Divide that number by the filament it actually used (the value we wrote down in the previous step) and we find the correct Extruder Steps for our machine.



This is the math for my Creality Ender-5, which gave me a new E-Steps/mm value of roughly 105.2. That’s a significant difference from what was previously configured stock.

EEPROM Settings

Now that we have found the correct Extruder Steps for our machine, we need to set and store this value in the EEPROM. This is the board’s read-only memory where firmware settings are saved.

From the LCD control screen, navigate to Control -> Motion -> Esteps/mm. Press the knob to select it, then turn it to adjust the number until it matches our new Extruder Steps value. Press the knob once more to back out and make sure that it’s correct.

Since this will revert back if we power off the 3D Printer, we need to store the changes as well. Go back to the LCD control screen, scroll down to the bottom and look for an option such as Store Memory (Ender-5), Store Settings (Ender-3) or Save to EEPROM (CR-10). The option name changes a bit between models, but does the exact same thing.

Select that and our new Extruder Steps are now saved.

For 3D Printers that do not have EEPROM controls on the LCD menu, the e-steps can alternatively be set via the G-Code Start Script in your slicer software. This is specified as “M92 E105.2;” without quotation marks, and replace the number with your correct e-step value.

Other Thoughts

Having now purchased several different Creality 3D Printers, I think it’s safe to assume they almost always need to be calibrated. Given the low budget price point, we can’t reasonably expect each machine to be tested and tuned before shipment, which means this work falls to us as the consumer.

The problem is this isn’t necessarily obvious, especially to new owners buying the Ender-3 as their first 3D Printer. The g-code examples on the SD card are just smoke and mirrors, where the Test Dog prints fantastic because it uses ultra quality settings that can hide issues.

Related: How to Upgrade the Extruder (Ender-3)

In the long run, it’s a good idea to just upgrade the stock extruder with an all metal version. The plastic lever and brass gears will work for a while, but even a Stainless Steel 40T Gear will make a huge difference for a couple bucks.

62 thoughts on “How To Calibrate the Extruder Steps (Ender-3 / Ender-5 / CR-10)

  1. Thanks for your help! I am new to 3D printing and bought the Ender 5. Now switched to the MKS Gen L, TFT28 and BL Touch. Configuring the setup to learn how all those different components en setting are closely working with each other.

    1. Hi Ralph,

      No problem, glad it helped! For those that are new to 3D Printing, I generally don’t recommend any upgrades until you are very familiar with your machine. These are pretty phenomenal 3D Printers and should print great right out of the box. In your case however, all 3 of those are wonderful upgrades that won’t have much impact on print quality but rather just improve the user experience.

  2. My ender 5 did 88 MM out of the box when i told it to extrude 100MM.

    Thank you for tutorial. Funny how they are all broken the same from the factory 🙂

    1. Hey Frank,

      I’m guessing all of the Ender-5 3D Printers have the e-steps miscalibrated from the factory, doubt they even take the time to check. They make great budget machines, but definitely leave some stuff up to the customer to fix. Thankfully this is a pretty simple one and takes just a few minutes!

      1. With different materials that people use its probably best to pick a margin of error and have the machine under extrude, rather than over extrude by default. The majority of people won’t notice under extrusion until they try to do taller prints.

  3. When i go in the main screen or instalize EEPROM it still goes back to 93 and i need 100. When i try to save it it give a hard beep…. so this does not work on nu Ender 3 Pro 🙁

    1. Hi Max,

      I believe “Initialize EEPROM” pulls in the settings from memory, so that would overwrite any changes you made. You would want to use the Save EEPROM or Store EEPROM option, although it sounds like your firmware may not have the option to write changes.

      If that is the case, just use the instructions from the yellow box where I made a note about an alternative method. You can add “M92 E100.0” to your Start G-Code in the slicer software, or whatever your desired E-Steps value is. This won’t permanently store it on the machine, but it will set the value before starting the print job.


  4. Sounds easy to do but not so much. I can find all the settings and indeed change the temp of the hot end with no problem. Once the hot end is heated, I can go and tell it to extrude 100 mm of filament. I’ve done it both ways; press the knob, it sounds like it wants to do something but then reboots and don’t press the knob, it does nothing. So, not quite sure where to go from here. Running an Ender 5.

    1. Hi Stewart,

      This is actually some kind of firmware problem with the Creality Ender-5. I had the same problem on my own machine, but thought it was a glitch. I have since seen others complain about it on /r/Ender5 recently so it seems to be an issue from the factory.

      With that said, it doesn’t make it impossible, just a bit more of a hassle. From what I could tell, it would reset when scrolling the knob too fast (likely overloading the board with a queue of too many instructions). When I took it slow and just extruded about 25 to 30mm at a time, it never reset.

      So far I haven’t seen any exact answer for the reason this happens on the Ender-5, it doesn’t occur on the Ender-3 or CR-10. Definitely give it a try going slower and see if that works, otherwise you could potentially just use a G-Code file to extrude 100mm filament instead as a workaround.


      1. I’ve found that on my Ender 3, if I forget to “preheat” the nozzle (the set temperature is “0”), E movement is totally ignored. A useful feature, but surprising if you’re unaware of it.

        1. Hi Chris,

          This is a Marlin featured called Cold Extrusion Prevention (#PREVENT_COLD_EXTRUSION). Definitely quite useful as it can help mitigate problems, but it does raise some questions once in a while.

          The issue Stewart was describing though seems to be limited to the Ender-5, as I have never experienced it on the Ender-3 or CR-10 before. Basically if you scroll the dial knob too fast, something on the stock board can’t keep up and it reboots the 3D Printer. It’s not a huge deal as you can just slowly increase the desired value in increments, but my Ender-5 definitely rebooted several times when calibrating the E-Steps for this article.


        2. They must of fixed that or part of it. If I preheat PLA conf (a menu item in control), the nozzle heats by just selecting preheat PLA / Preheat PLA end from the prepare menu.

      2. This is exactly what I had with a 2nd hand 5 Pro I bought last week. Stripped/rebuilt the hot end, checked all wires at least twice, finally worked out the issue accidentally. Wish I’d found this before the event, Google was not my friend that day.

        1. Hi Paul,

          I’ve done the same thing more times than I can count. 3D Printer is half disassembled before realizing it was some simple 5 minute fix. I’m glad the guide helped and you’ve got it all sorted out now at least. It’s worth the effort in the end, even if it sometimes takes a while to get there.


  5. I’m getting conflicting information from my printer about this. I was under extruding before I upgraded my extruder block to the aluminium one. Now I don’t get brittle prints, but the constant “thunk-thunk-thunk” of my stepper motor is telling me I’m over extruding and the filament measurements tell me I’m under by a significant amount ( 37-43mm ). I’ve switched out the motor and adjusted the steps down to no effect. It prints well until the nozzle becomes clogged by the over extrusion and quits. Any idea what’s going on here ? Any help would be appreciated.

    1. Hi Larry,

      Just to confirm, when you say “extruder block” what are you referring to exactly? Did you upgrade the extruder to something like this?

      The “thunk” sound doesn’t necessarily mean that you are over extruding, you could have a partial clog in the hotend that is partially blocking the flow of filament. Are you using the stock hotend or have you replaced it with something else (V6, Micro Swiss, etc)? I would probably disassemble the hotend and check it out for any problems. Could be the PTFE tubing needs to be replaced or something along those lines, but feel free to shoot over more details and I will try and help narrow it down!

  6. Hi, sorry for my English, it’s a bit bad.
    I have an Ender3 and yesterday I was looking to adjust the extrusion values (nothing had changed since I bought it). By default I had movement -006.0 and steps / mm 93 and I extruded 109mm to the 100mm mark. I made the caluclos and went on to extrude 98mm …. After this, I don’t know what happened that extrudes me 50mm by telling him to extrude 100mm. (The value that previously appeared in -006.0 is now +000.0). The only way to extrude 100mm is to put the passive / mm at 232, and this makes it sound a lot when doing the retraction (it looks like a barking dog :() and I don’t know if it will be good for the engine. The cure retraction values I have not varied 6mm and 60m / s. Can you please help me? I have “Initialize EEPROM” already several times with the same result

  7. Hi, thank you for this guide, I followed it and I noticed that the marked spot at 100mm does go up into the extruder, but after the extrusion is over it lowers itself back out to around 8mm past the bottom of the extruder. Does this indicate some other problem like the filament isn’t being held in place after extrusion where it should, or is it an automatic setting that pushes filament backwards after extrusion? Should I still measure that 8mm difference as a difference in correct extrusion?
    There’s no tension on my spool to cause my filament to drag backwards after extrusion so I’m wondering if it’s a deliberate step by the printer.

  8. Thank you for good information. It helped! I figured out the problem, but had no good solution how to use the display for setting and testing, instead of connecting the laptop. I have a new Ender 3 Pro, and the flow setting was 93, as you describe. But with that setting, i got just 40 mm filament. Made a calculation and set it to crazy 235 steps / mm. But after saving to EEPROM, it was now feeding over 200 mm. But with new settings and savings into EEPROM, 98 steps/mm became perfect, feeding 100 mm filament.
    Odd! I got the impression that the value 93 shown from beginning was not the “real” working value from EEPROM. It must have been some bug in the software value.

    You can just imagine how poor models the Ender made by feeding just 40 mm instead of 100. I tried a lot for several days, almost becoming crazy. Finally I found that when starting to print a job, I got access to the TUNE menu, and changed different values while printing was going on. With the flow value 145, it started to work good. I think that TUNE menu can be good for an ongoing job.
    Thank you for a good description.

  9. 35!!! thats all that was being used up for 100mm! Do you kno2 how long it takes to adjust from 28.6 steps all the way to 264.57 at .01mm a notch? either way… I am up and running! thanks a lot Ralph!!!!

  10. Hey thank you so much for this now I’m able to get good quality print but can you pls clear me how to calibrate for over extrusion

    1. Hi Rahul,

      If you’re trying to calibrate the extrusion (e-steps) and it’s over extruding, just make an additional mark to use as reference. I only used 100mm in the guide, but had a second mark at 120mm in case of over-extrusion. You can then measure from that point and figure out how much plastic was actually extruded.

  11. So I have the CR-10V2 and I’m getting the hard beep when I go to save settings. Does this mean I have to save it in my G-code or has anyone else found a solution for that one?

    1. Hi Dylan,

      Unfortunately I don’t have the CR-10 V2 but I assume the hard beep means the settings aren’t saved (if you aren’t sure, you can power cycle the 3D Printer and see if the new value is still present). If saving to the EEPROM isn’t a viable option, you can definitely just set it via the Start Script G-Code instead. This command will be executed before each print and remain the default value, temporarily overwriting the e-steps in memory until a reboot.


  12. Thanks, this saved my day! I struggled several days with my Ender 3 Pro severe under extrude and did finally this test. When asked 100mm, this one gave only 38mm… Hard rolling on knob and now it gives great print quality. No wonder if print was horrible, from 93 to 244,73 is some leap…


  13. Im pretty thankful for this Tutorial.
    But I was first puzzled because it seems you got that one Formula wrong.
    This doesnt seem to be right. 🙂

  14. I installed a new Creality grey metal extruder on my Ender 5 last night and followed these instructions for doing the calibration. They were very easy to follow. I ran into a couple of things that might be helpful to others. You suggest selecting the 1 mm increments when moving the extruder axis. I used the 10 mm increments and it made it much easier. I also noticed that my stock setting for E-steps/mm was 93, not 92.6. After running the calculation and making the adjustments it fed exactly 100 mm of filament on the next test. Thanks for the great tutuorial.

    1. Thanks for the feedback, you make some great suggestions. I just added a second Ender-5 last week and noticed this, few small changes have been made since I bought the first one.

      This included a slight adjustment to the default E-Steps, some options renamed on the menu, etc. The reason I suggested 1mm increments is because the early models would actually power cycle if you went in large increments or scrolled too fast. This was a confirmed problem in the Ender-5 community, and my first one reset nearly a dozen times before the E-steps were finally calibrated. They have obviously fixed and improved some things since then, where I will make a few small updates to reflect that.

      Otherwise, glad to hear that this helped get yours dialed in. I’ve made it a point to put the gray metal extruder and a 40T stainless gear on every Creality 3D Printer I purchase moving forward. Seems these are included now on the Ender-5 Plus, but it’s a must have for the base models in my opinion.


  15. Hey Brett,
    Really helpful guide – thanks heaps. My Ender 5 Pro was set to 93 as you mentioned, and I updated to 101.72.

    Do you know how to change the extruder distance back to 0 from 300 mm? If I use the knob, it reverses the extruder 300 mm. Makes sense, but wondering if there is a workaround instead of resetting to factory or removing filament and using the knob.

    Many thanks,

  16. I read it all, but you skipped the step I was seeking.
    I measured, marked, set, as described. So, how do you trun on the extruder? When I click Extrude 100mm, nothing happens.

  17. I heated the nozzle and bed and I adjusted the extruded setting to 100 but nothing happens. I expected it to push melted pls out of the hot end but it just sounded like the extruded was stripping out the pla as it tried to feed it into the Bowden tube toward the horned??? Please help me understand what this means or what I am doing wrong. This is so frustrating to see the preloaded Gcodes print fine but watch everything else fail miserably

  18. Hi Brett

    I’m just started with 3D printing.
    I have a Ender 5 plus (it has a touchscreen interface).

    I want to calibrate the extruder like you descriped but i can’t find the settings to change the Estep value. Can you help me?

  19. Thank you. That really work. I calibrate my Ender 3 this way and now I print really good and I am so happy.
    The true is default e-step wass 93 mm, and now i change to crazy 230 mm.
    Now I print with nice quality.

  20. Just though I would have a go now that I have installed the SDK mini E3 V2.0
    I was just 3mm out, so made the measurement, extruded, did the calculation, entered it, extruded again and bingo. Exactly 100mm extruded.
    Very clear easy to follow.

  21. Thanks, this has solved a 9 month problem. I had not gotten a good solid print since I bought Ender 3 in Jan 2020 and now October. I tried flow at 150%, dehydrating filament, new Bowden tube, new metal filament thing at top of feed motor, new filament. I thought something must be wrong when I did this formula and had the steps for 93 in EEPROM and had to change to 232.5….I was thinking this cant be right, but to my disbelief, that solved it. I was thinking how can a factory setup be that far off?

    1. Hi Rex,

      I’m sorry you went through so much hassle with this, but I am glad to hear that this solved it. It really is amazing how misconfigured the e-steps are straight from the factory. The worst part is, the example g-code is dialed in to poorly calibrated machines, so the test prints look perfect and everything else comes out awful.


  22. I’m wondering if the factory calibrates esteps with no restriction. Meaning no nozzle installed. This would make sense why it’s always lower than what we use with the nozzle installed.

  23. Thank you for the write up. This helped us get our 3d printer up and working. We have been using it to create an Arduino controller for our 360 product photography. In no way are we 3d printer guys, but we needed to print a few parts to interface with our rotators and we took a dive into the deep end and we are loving it!!!

  24. Whoop! I was ready to throw my Ender 3 out the window after weeks and weeks of failed prints, but the tests coming out perfect. This solved it with a whopper of under extrusion at ee/steps of 232.5.

    Thank you so much!

  25. Quick question: I was reading the instructions on teaching tech and it said something about detaching the extruder from the hot end. The wording was really weird but it seems like it might be saying if I have an Ender 5 Plus with a bowden extruder I should pull the bowden tube out from the hot end so the filament just feeds out into the air so there’s no resistance. Would that be a good idea? Obviously I would prefer that because then I still have that 100mm of filament but I wanted to get your opinion first.

    1. Hi Sean,

      The idea behind it makes sense, but personally I have always calibrated my e-steps with the exact setup I use to print. Making those changes seems like it would not be entirely accurate, where that resistance factors into the overall calculations. It’s like running a dyno on a sports car’s engine, where it determines the horsepower from the motor, but that’s not what you’re getting at the wheels. If I ask for 100mm of filament, I want that pushed through the hotend, not just the extruder when it is unimpeded by resistance.

      I could of course be entirely wrong, but I have never encountered any problems tuning via this method.


  26. Glad I found this guide, what a life saver, found my Ender 5 pro to be under extruding by 61%

    Made the required adjustments and its printing superbly now, so thank you very much 😀

  27. Hi, I am having a weird issue where I am only extruding about 20mm with the E in mm3 turned on and almost no movement with it turned off. I tried initializing EEPROM but am still having the same issue. Any advice?

    1. Hi Michael,

      You definitely want to turn off mm3 (volumetric mode). That never should have been a menu option, let alone a default on some Ender 3D Printers. It has caused many new owners tons of problems. As I understand it, mm3 uses the volume of extruded plastic instead of the length of filament, and while this has some niche applications, it’s never been considered a standard or widely used.

      Once you have that disabled, you can start troubleshooting the actual extrusion issue. I would set your e-steps back to the default of 93.0 for the time being. Check the extruder itself as well, the cheap plastic ones they use are prone to all sorts of problems. Cracks in the plastic, low tooth count brass gears that wear out fast, etc. I strongly recommend those $5 aluminum extruders and an upgraded 40T Stainless Steel gear. This costs less than $10 total and will be a massive upgrade.

      Once you’ve actually got this extruding, you can go ahead and calibrate your e-steps to dial them in.


  28. Hi,

    Thanks for the guide! I did this check on my CR10s Pro and it was spot on 100 mm from the factory.

    Does this mean i shouldn´t change the flow factor or are these two unrelated?

    It seems to be slightly overextruding when I print things that should fit together, reducing the flow seemed to help but I don´t know how to accurately find out the extact flow I should use.


    1. Hi Patrik,

      You’re the first person I’ve ever heard mention perfect e-steps from the factory, that’s quite the luck.

      Calibrating the e-steps is precision tuning the hardware to push the exact amount of filament you expect. Flow rate is more of a compensation tool that can be adjusted in real time, where every single spool of filament is different. Even with perfect e-steps, you may find that you’re under-extruding or over-extruding if the filament isn’t exactly 1.75mm. You can increase flow rate when filament diameter is less than 1.75mm, or decrease it for filament larger than that.

      In a nutshell, e-steps don’t factor in the size of the filament, only the length of it. If you’re pushing 100mm of 1.65mm filament, you’re going to get less plastic than 100mm of 1.75mm filament, where flow rate can then be used.


  29. Many thanks for this tutorial. I was having under extrusion issues and I wanted to calibrate e-steps. All other tutorials I found had me connecting my ender 3 to my PC and using something like pronterface. Well I spend about an hour trying to connect with no luck. I finally stumbled on your tutorial. Who knew it would be so easy to do right in the ender 3 interface. My new e-step value is 111.1. Haven’t tested a print yet with this value but fingers crossed! Thanks again!

    1. Hi Matt,

      You’re welcome! I’m glad to hear this made things a bit easier for you.

      The e-steps are saved in EEPROM (small chunk of memory on the board for modifiable settings), and while you can adjust this by sending G-CODE commands over USB, that’s the most time consuming way to do it. The majority of 3D Printers can change the e-steps right from the LCD screen, or you can even put “M92 E111.1;” in your slicer’s start script instead.


  30. I’m a little confused as the why we need to use that math. If l do this and underextrube by 10mm, why not just add 10mm to the factory setting and call it good.
    I ran one test and came up 7mm less than 100mm. My factory setting is 93mm on my ender 3. I changed it to 100mm ( 93mm + 7mm), tan a second 100mm test and came out perfect. No math involved aside from the addition of the missing 7mm.

  31. Thank you for the tutorial, If I want to achieve prints in the correct spec (0.5mm) how would i go about setting up the x and y to get this calibrated correctly on an ender 5 pro.

    1. Hi Kurt,

      You’re talking about getting dimensionally accurate parts correct?

      There are a number of factors that go into this, from e-steps to the belt tension, you don’t want any slop in the motion or extrusion systems. However, material shrinkage often goes overlooked as a culprit. Even if your 3D Printer is perfectly calibrated, you have to account for the plastic shrinking as it cools. PLA is about 2-3%, whereas ABS can average more than 10%. PETG has the lowest shrinkage rate of the 3 filaments.


  32. Hello Brett can you please email me or look me up on line I have a few questions about cr touch and needs some help

Leave a Reply

Your email address will not be published. Required fields are marked *

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top