Recommended Layer Heights: Multiples of 0.04mm (between 0.08mm and 0.28mm)

The short version is: For the most consistent layers I recommend that you use layer heights that are a multiple of 0.04mm between 0.08mm and 0.28mm.

Many variables affect print quality. This is just one thing that you can do to improve your prints, but it is easy to do if you know about it.

I’ll explain why in more detail in a moment, but the short reason is that the stepper motors “full step resolution” combined with the geometry of the screw in the linear module means that for every full step, the z height changes by 0.04mm. The controller and the steppers can do microstepping, but that involves trying to position the stepper motor somewhere between two steps by using dual voltages. The positioning of the motor at whole steps is stronger / more accurate / less minute variation.

Now for the breakdown. If you don’t care how this was calculated or where I got the information about this you can stop reading here.

Stepper motors have different poles (like a magnet, but in this case an electromagnet) where energizing each pair of poles, the motor turns to a new position. The Snapmaker uses steppers that are 1.8 degrees per step. This means there are 200 different positions that the motor can turn to by using whole steps. Microstepping applies voltage to two different poles (two positions) at the same which locates the motor somewhere between those two positions based on the relative voltage. This is pretty precise, but not as precise as the locations of the whole steps. If you use a layer height that ends up requiring microstepping, then one layer might be slightly higher or lower than another layer of the same height because of sight variations in the accuracy of the microstepping.

The Snapmaker screw inside the linear module travels 8mm for one whole revolution of the screw. So when the screw makes one full turn, the z height changes 8mm. The stepper motor has 360 degrees in one full turn with 1.8 degrees per step. This means there are 200 full steps in one complete turn off the motor and one complete turn of the screw. So, there are 200 steps in 8mm of travel. 8mm / 200 steps = 0.04mm per step.

The Snapmaker has a minimum layer height of 0.05mm. So, the next whole step size layer is 0.08mm. Other good layer heights are 0.12, 0.16, 0.20, 0.24, and 0.28mm.

I got the specifications for the stepper and screw geometry directly from Snapmaker. I learned about the relationship between the stepper motor whole steps and the linear travel from this YouTube video:

So, you can use any layer height you want between 0.05 and 0.3mm; I would highly recommend that you use and develop your settings profiles around multiples of 0.04mm layer heights.

Happy printing.


I just wanted to say, thank you so much. I am glad somebody was able to get the data out of Snapmaker to do these calculations. I’ve asked several times and got no response.

1 Like

indeed helpful, thank you!!

by the way, does the Layer Height = Resolution, in 3D Printing?

Generally, increasing layer height will decrease the resolution and quality of your print.

Thanks for sharing!
This 0.04mm value is valid for all the Snapmaker models?

I’ve got the Snapmaker Original and I’m using the3 recoomended settings comming from Snapmakerjs:
Fast (0.2mm), Normal (0.15mm) and High (0.1mm).

SHould I move to something like that?
Fast (0.2mm), Normal (0.12mm) and High (0.08mm)

PS: why Snapmaker producer has not made this calculation? :slight_smile:

You meant .15mm I assume?

I don’t know that using magic numbers is going to have any effect considering that the leveling routings will be trying to move the Z in very small increments anyway. It may be that the code already deals with microstepping. @whimsycwd?

The macic number is meant to place the printer in the same microstep inside the full step for each layer. This could result in more consistent layers. (like explained in the video of the OP)

Yes, sorry, I’ve correct the message! :slight_smile:

@Bullone @Melanchrom . This trick did have impacts on the print quality. Which is the reason why we have updated the default configuration in Luban 3.x version.




Thanks for response!
If I’m not wrong I saw also difference on PLA temperatures from Snapmakerjs and Luban… can you please explain also this changes?

Could you please update also Snapmakerjs default configurations? I’m still sticko on it form my Original.

Do you think it could be possible to keep Snapmakerjs aligned to Luban for these kind of improvements/fixes?


From Luban 3.3.3

  • Handle compatibilities for Snapmaker Original and Snapmaker 2.0 (#241)

it’s recommended to use Luban instead, in this way, the software development team can be agile, our users can get more feature.


these new settings based on multiples of 0.04mm is fine also for the Original?
I’ve just installed Luban but if I select Original machine the layers are not updated with values multiples of 0.04mm. I’ve tried to select a new 2.0 machine and for these new machine the value are multiples of 0.0.4mm.

You don’t need to be microstepping the z axis once you get beyond 2 to 5mm of layer height.

Using M420 S1 Z2 tells the printer to phase out the mesh over 2 mm if z height, for example.

Yes. I originally wrote this recommendation for the original Snapmaker. It uses similar geometry.

I don’t remember if the stepper motors were 1.8 degrees per step or 0.9. I think they’re 1.8 per step otherwise the printer would be slower.

If they are 1.8 degrees per step, increments of 0.4 are preferable. If they are 0.9 degrees per step, then you could use increments of 0.02 (but you could also use 0.04 because that is just double the whole step height.)

Thanks quarky42 for the explanation.
If I’ve understood well I expect that Luban SW apply multiples of 0.04mm (or 0.02mm) also for the Original not just for the 2.0 models.

Hope Snapmaker team could test and add this improvement in the next Luban release and/or let us know why has not been yet implemented.

The way I read it, I’m not sure that it does, but it certainly should have it’s default profiles aligned to layer heights that are evenly divisible by 0.04. I use full Cura, not Luban which is based on Cura, but still wanted to share what I’ve found out with others regardless of what software they use.

You certainly can go in and manually specify any layer height you want and make it that way, butit would be best if it was the defaults.

On V1 I found it tricky, but possible to print at 0.08mm layer height. I wouldn’t want to go any lower than that. So my custom profiles are something like this:

Layer heights:
0.08 - Ultra Fine (Ludicrous Slow Mode)
0.12 - Fine (Very Slow)
0.20 - Medium
0.32 - Max Thickness (Fastest)

Besides prints where I wanted max detail, I also used Ultra Fine for trying to weld clear PETG together at 99 to 100% infill to maximize the transparency effect. It will never be perfectly clear, but it certainly helps and is pretty neat if you don’t mind it taking forever. It’s always fun to experiment with something new. I made a pair of knife scales with this method. The texture on the outer finish had a decent grip to it pretty much by accident. Some people polish solid PETG by the way, to enhance the effect further.

Thanks, I really appreciate all you’ve done and all you’ve shared with us!

I have the Original ones and I think I’ll use the Layer heights you’ve posted, thanks!

In the subject you suggest between 0.08mm and 0.28mm but your fastest height is 0.32mm.
Have you made some tests and you thing 0.32mm is the best for fast printing or 0.28mm would be better?

What about “Top Thikness” and all the other settings (Outer Wall Speed, Inner Wall Speed…) that has been changed on 2.0 models?

I’m sure that the background of this “magic numbers” is true since I’m an electrical engineer and working with synchronus (and asyncronus) AC servo motors. These motors also have a thing called cogging torque (not so fine as with stepper motors since there are less poles).

My settings for the Snapmaker Original are multiples of 0,04 mm so I did the same for the profile of my A250 in Simplify3D. It’s working great BUT:

If Snapmaker team knows about this, why aren’t they changing the values of the leveling procedure?
0,05 mm as the finest step will not lead to the desired goal.
Maybe they calcualte internally with 0,04 mm and just don’t show it but I think the don’t since the motors are “singing” at some points (since there is a leveling mesh).

Can anyone from the team confirm my theory?