Ender 3 (Pro & V2 & Neo & S1) Acceleration & Jerk Configuration

While they’re often considered to be advanced settings, correctly configuring the acceleration, which essentially determines how quickly the printhead will speed up to its target velocity, and jerk, which we can describe as the speed at which the printhead will immediately accelerate to after a change of direction, is still a vital part of achieving the highest speeds and print quality possible with your Ender 3.

In this guide, we will take you through the process of calculating the optimal acceleration and jerk values for your Ender 3 in the most efficient way possible and applying the values you have found to your 3D printer’s configuration through a few different methods, which should help you complete the tuning procedure as conveniently as possible and get your values dialed in for a high-quality print.

Finding the Optimal Ender 3 (Pro & V2 & Neo & S1) Acceleration & Jerk Values

Finding the optimal acceleration and jerk values for your Ender 3 is all about trial and error, which effectively means that you will need to try the combination of a few different values until you find the ones that produce the best results where you’re obtaining the highest print quality possible with the lowest print times.

For this process, the first step you will need to take is to raise the X-axis and Y-axis acceleration limits of your Ender 3 to a point where the firmware won’t end up preventing you from using higher acceleration values during experimentation, as the firmware will automatically clamp the acceleration down to these limits in cases where the acceleration values in the configuration exceed them.

To raise the X-axis and Y-axis acceleration limits to 3000, which will be more than enough for our purposes of calibrating the acceleration values, all you will need to do is to send the G-code command M201 X3000 Y3000 to your Ender 3 through a G-code terminal (refer to the next section about setting the acceleration and jerk values with the LCD controller if you don’t have G-code terminal access), such as in the example below.

m201 x3000 y3000 gcode in octoprint


Next, to start calculating the optimal acceleration value for your Ender 3, choose one value that’s way too low (the L value) and one value that’s way too high (the H value), add them together, and divide the resulting value by 2 to find the average, which we will call the X value.

As an example, if you are unsure which values to choose for H and L, you can go with a L value of 200 and a H value of 3000, which, when added together and divided by 2, will give you the X value of 1600 as your first acceleration test value.

Afterward, configure your Ender 3’s printing acceleration to be equal to the X value you have found (1600 in our example) by referring to the next section, where we discuss different ways of setting acceleration and jerk values on your Ender 3 and run a test print where you can see the effects of this new value, such as printing a calibration cube or a 3DBenchy.

m204 p1600 gcode in octoprint


After your Ender 3 finishes the test print, you will then need to examine it for signs that will show you whether the acceleration value for the test print was too high or too low, as it will be necessary to find out the direction in which you will be adjusting the acceleration value for the next test, whether it’s going higher or lower.

If the acceleration value you’ve used for the test print ended up being too high, the primary sign you will notice is the appearance of artifacts that present themselves in the form of wavy patterns known as ghosting or ringing, along with issues such as overshooting corners and skipping steps (which can lead to dimensional inaccuracies and possibly layer shifting) that you might only notice in more severe cases.

3d printing ringing example
Source: FarO @ Stack Exchange (CC BY-NC-SA 4.0)

On the other hand, in a case where the acceleration value is too low, the primary symptom you will observe is a considerable increase in print times due to your 3D printer not being able to reach maximum speed most of the time, along with issues such as inconsistent extrusion that can take place in more severe cases.

Once you determine whether the value used for the test print was too high or too low, the next step is to either replace the H value with the acceleration value you have used (X value) if acceleration was too high or to replace the L value with the acceleration value you have used if acceleration was too low, recalculate the new X value with the same formula, run a new test print, and keep repeating this process until the H and the L values are very close to each other (~5% difference).

Following our example from earlier, if you used an X value of 1600 for your test print, and the results pointed toward the acceleration being way too high for a successful print, 1600 will now be your H value instead of 3000, and combined with the initial L value of 200, will give you an X value of 900 once you add them together and divide by two ((1600+200)/2).

If the results from your print afterward show you that the acceleration value is now too low, you will then need to replace the L value of 200 with your X value of 900 instead, and combined with the H value of 1600, obtain 1250 as your new X value ((1600+900)/2) for your next test print.

Repeating this a few times will eventually lead to H and L getting very close to each other, at which point you will find the final X value that will be the printing acceleration for your Ender 3 moving forward.

Now that we have the optimal acceleration value ready to go, it’s time to move on to configuring the jerk (or junction deviation) value, where we will practically be employing the same method of calculation we have used for finding the optimal acceleration value.

While Marlin Firmware offers two different ways of expressing jerk, known as classic jerk and junction deviation, with the latter replacing the former in some firmware configurations, the default Ender 3 configs for Marlin Firmware currently utilize classic jerk.

enabling classic jerk in marlin configuration


Regardless, to find out which system your Ender 3’s firmware is currently using, which will be necessary for our purposes, you can refer to the Configuration.h file to find whether the CLASSIC_JERK parameter is defined, which would indicate that your Ender 3 is using classic jerk, or send the M205 G-code command, where the appearance of X and Y values in the output would mean that classic jerk is active, and the appearance of a J value would point toward junction deviation being in use instead.

In the example image below, you can see both the X and Y values in the output (and the lack of a J value), meaning that the firmware, in this case, utilizes classic jerk.

m205 gcode in octoprint


Following the same method for acceleration value calculation, if the firmware utilizes classic jerk in your case, you can go with an L value of 1 and an H value of 20, which would give you an X value of 10 (rounded down) as your starting point where you can run your first test print.

m205 x10 y10 gcode in octoprint


On the other hand, in the case of junction deviation, you can use 0.01 as your L value and 0.10 as your H value, which will give you an X value of 0.05 (rounded down) as your starting junction deviation value for your first test print.

m205 junction deviation example in octoprint


Once your 3D printer completes the test print, you will need to decide whether the jerk value is too high or too low by examining the printed object, and when that’s done, calculate the next test value by utilizing the same formula we used when calculating the acceleration value.

In a case where the jerk value is too high, the primary symptom you will once again come across is ghosting (ringing) in a similar manner to the acceleration value being too high, together with issues such as overshooting of corners and the stepper motor skipping steps also showing up in more severe cases.

On the other hand, if the jerk value you’re using is way too low, the primary issue you will stumble upon is an increase in print times yet again, together with the degradation of print quality on sharp features, where they become rounded instead.

3d printing rounded corners example
Source: easycheese @ Stack Exchange (CC BY-NC-SA 4.0)

Following the classic jerk example from earlier, if we assume that our initial X value of 10 was too high, we would need to replace the H value of 20 with the X value of 10, which would give us a new X value of 5 (rounded down) once we apply the formula to the new H value of 10 and L value of 1 ((10+1)/2), and keep repeating this process until H and L are very close to each other.

Setting the Acceleration & Jerk Values on Your Ender 3 (Pro & V2 & Neo & S1)

Once you have the optimal acceleration and jerk values at hand, the next step you will need to take is to save these values into your Ender 3’s configuration for them to be active for all of your prints moving forward, with a few different methods available to you for the task.

Setting the Acceleration & Jerk Values with G-Code Commands

The first method you can use to set the acceleration and jerk values of your Ender 3 is through G-code commands, which, if you have access to a G-code terminal already, such as OctoPrint or Pronterface, is the method we recommend using due to how quickly and easily you can get things done.

To set the printing acceleration value of your Ender 3 with G-code, you will need to send the command M204, together with the P parameter for printing acceleration, and the value you would like to set the acceleration to, such as M204 P1600 to set the printing acceleration to 1600.

m204 p1600 gcode in octoprint


Next, to set the X and Y jerk values of your Ender 3 with G-code, you will need to send the command M205, together with the X and Y parameters for the X and Y jerk and the values you would like to set the jerk to, such as M205 X5 Y5 to set your Ender 3’s jerk to 5 on the X and Y axes.

m205 x10 y10 gcode in octoprint


On the other hand, to set the junction deviation value of your Ender 3 with G-code, you will be using the command M205 once again, but this time, with the J parameter instead of the X and Y parameters required for configuring jerk, along with the junction deviation value you would like to set, such as M205 J0.03 to set your Ender 3’s junction deviation to 0.03.

m205 junction deviation example in octoprint


Last but not least, you will need to save your changes to the EEPROM to make them permanent, which you can get done by sending the M500 G-code command to your Ender 3.

Setting the Acceleration & Jerk Values with Cura

Another method you can use to set the acceleration and jerk values of your Ender 3 is by using Cura, and even though this won’t directly change the settings on your 3D printer, meaning the values won’t apply to any print where you haven’t generated the G-code with Cura, it’s still a convenient way to get the configuration done.

For this process, the first thing you will need to do is to input “control” into the search input you can find in the Print Settings section and check both Enable Acceleration Control and Enable Jerk Control, which will activate Cura’s acceleration & jerk control features and allow you to configure these parameters through the print settings.

cura acceleration jerk control


Next, input “acceleration” into the search input, which will bring up the Print Acceleration input box (along with some others that give you further control over acceleration in different areas), and enter the acceleration value of your choice into the box.

cura configuring acceleration


Finally, to configure the jerk value, input “jerk” into the search input, which will bring up the Print Jerk input box (once again, along with some sub-options that make it possible to adjust jerk individually for different parts of the print), and enter the jerk value of your choice into the box you see on the screen.

cura configuring jerk


While not a complete necessity, as it doesn’t have any effect on how your Ender 3 will behave during the print, we also recommend configuring the Maximum Acceleration X and Maximum Acceleration Y values in Cura’s print settings accordingly when using this method, as Cura having the correct information regarding these values will allow it to present you with more accurate time estimates.

cura max acceleration config


Setting the Acceleration & Jerk Values with the LCD Controller

Last but not least, you can use the LCD controller on your Ender 3 to set the acceleration and jerk values, which we can practically consider to be the standard option that’s available to everyone regardless of whether you have access to a G-code terminal or use Cura for your slicing.

While it’s not exactly possible for us to provide you with direct instructions for this method, as the way the menus are structured can show some variance based on the type of screen and the firmware you’re using, you should be able to find both the Acceleration and Jerk settings by navigating to the Control menu, and following up with navigating to the Motion menu afterward.

ender 3 control motion menus


In the case of setting the printing acceleration value of your Ender 3, you will need to navigate into the Acceleration menu first and adjust the option that’s labeled either Accel, Printing Acceleration, or anything along those lines, which will get your 3D printer to use the new value from now on.

On the other hand, to set the X and Y jerk values, you will need to navigate into the Jerk menu instead and update both the Vx-jerk and Vy-jerk values with the new jerk value you have found through your calculations in the earlier section to modify the jerk values for both the X and the Y axes.

Additionally, if you haven’t been able to increase the X-axis and Y-axis acceleration limits through G-code due to not having G-code terminal access, you can make the necessary adjustments by increasing the Amax X and Amax Y (can also be labeled Max X Accel & Max Y Accel) values through the LCD controller, which respectively stands for the X-axis and Y-axis acceleration limits.

ender 3 acceleration limits menu


Finally, don’t forget to save your settings to the EEPROM by utilizing the Store Settings or Save the EEPROM entry you can find in various menus of your Ender 3, as this is the only way to ensure that your Ender 3 retains the updated acceleration and jerk values after a power cycle.

Conclusion

With optimal acceleration and jerk values dialed in for your Ender 3, you will now be able to prevent many of the print quality problems that can otherwise create trouble for your prints, whether it’s ringing due to the usage of a too high jerk value or blobs on corners due to the acceleration value being way too low.

Since you will only need to configure acceleration and jerk once for your Ender 3, we highly recommend taking your time with the testing process to find the values that produce the best results possible, as this will provide you with a permanent improvement to the quality of your prints from then on.