Here is an imaginary force graph of some hypothetical springs with different qualities, which will help guide this discussion.
This graph is not meant to be 100% accurate, just to illustrate some of the key points about switch springs.
At a high level, when you are pressing the switch, the force of the spring pushing back is looks roughly like F = KX where K is the spring constant, and X is how far you have compressed the spring. You can roughly consider K to be how stiff or “springy” the spring is.
The spring rate is only one factor of a linear spring. Another is how long the spring is. If the spring is longer, that means that when the switch has not been pressed yet, the spring is already compressed farther. If you were to write the equation describing the force that the spring exerts INSIDE of the switch, with respect to how far the switch stem moved instead of how much the spring is compressed, you might write it as something like F = K(X + P) where K is the spring constant, X is how far you have depressed the switch, and P is how far the spring was already compressed before you even started pressing the switch. This variable P is also known as preload. It means how much the spring is compressed when the switch is at rest.
The key takeaway from the above discussion is that a longer spring means more preload, which means that at any given point in the stem’s travel, the actual force being exerted against your fingers will have less to do with how far you have pressed the switch, and more to do with the preload. Thus, longer springs with more preload can have a lower spring constant K, meaning the force graph will be less steep, and yet have a similar actuation force. Put another way, springs with more preload can potentially have less difference between how stiff they feel when you first start pressing the switch vs. when the switch is at bottom out, whilst still having a similar actuation force. Sprit calls this “slow curved” springs.
As you can see in the graph, the “Light Linear” (similar to Cherry MX red) force line is not as steep as the “Heavy Linear” (similar to Cherry MX black) line.
The “Slow Curved” (similar to Sprit slow curved springs) force line is even flatter / less steep than “Light Linear”, yet they both have almost the same actuation force. This can be accomplished by making the “Slow Curved” spring a bit longer with the coils spaced closer together. The tighter coil spacing creates the flatter curve, while the longer length (aka more preload) moves the force line upwards so that you don’t just have a super light actuation point.
On to progressive springs. Progressive means that instead of the force increasing linearly as you compress the spring, at some point the force starts to increase even faster; in other words, if you are considering the force as F = KX, K is no longer a constant, but is actually changing as the spring is compressed. How is this accomplished when manufacturing the spring? Usually this is done by making the coils get gradually farther apart as you go along. For example, if you look at Sprit progressive springs, you can see that one end of the springs has the coils closer together, then as you look towards the other end of the spring, the coils get farther and farther apart.
This is a bit of a simplification, but when you are pushing against a progressive spring, the tighter-spaced coils compress first; at a certain point they can’t compress any more, and the looser-spaced coils start compressing, which takes more force. That helps understand why the force increases more rapidly the farther you have compressed the spring.
Here is a picture of some common Cherry MX compatible keyboard springs:
Notes:
Sprit progressive:
Notice how from left to right, the coils are space farther apart, then closer together. This is how the spring rate is able to increase in a non-linear way. As you approach bottom-out, this spring will get stiffer faster than it did early in the keypress. This creates a slightly more bouncy bottom-out feel without requiring the spring to be as stiff at the actuation point. In theory this might help you avoid bottoming out.
Halo True:
This linear spring is shorter than usual meaning it has less pre-travel, and it is also very stiff. This means while the switch is very light at the start of the keypress, the force line is very steep and the switch will get heavy really quickly. These springs were designed this way because Haata from Input Club was trying to design a switch that would discourage bottoming out. It is harder to bottom out with these switches because the bottom-out force is so high, but the initial force when you start pressing the switch isn’t that high. You may also notice that the coils are closer together, but don’t let that fool you into thinking this spring isn’t very stiff; You can also see that the wire itself is thicker, which more than makes up for having the tighter coil spacing.
Cherry MX Blue:
Just your typical linear rate spring, the original. Nothing special here. Typically rated for 50g actuation force and 60g bottom-out force.
Sprit S series:
Another typical linear rate spring, but shorter than the MX Blue spring, so it will have less preload. Rated 68g, which refers to the bottom-out force. This spring must be stiffer with a higher spring constant compared to the MX Blue, since the bottom-out force is greater even though the spring itself is shorter.
Gateron Yellow:
Another long linear rate spring that will create preload. These are often rumored to be somehow special, or progressive, etc. In reality, they are just a good all-around length and stiffness, no magic here.
Sprit “Slow Curved”:
The longest spring in this picture, and notably also with coils spaced a lot closer together than the Sprit 68g S series. This spring has a relatively flatter force line than most, meaning the bottom out force can be low without the actuation force or even the force at the start of the keypress being extremely low. A lot of people (myself included) like this feel in a spring.
Gateron Green:
Only a bit shorter than the Gateron yellow, but about on par with the Cherry MX Blue. Nothing special, again, just a linear rate spring.