Helical spring rate calculator
Find how stiff a compression spring is: 0.002 m wire wound to a 0.016 m mean diameter with 8 active coils, in steel of eighty gigapascals, gives 4882.8125 N/m. The spring index comes with it as a first check. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Wire diameter
- 0.002
- Mean coil diameter
- 0.016
- Active coils
- 8
- Shear modulus
- 80,000,000,000
- Spring index
- 8 N/m
- Spring rate
- 4,882.8125
A helical compression spring stores energy by twisting its wire as the coils close under axial load. Designers, maintenance engineers, and machine-element students therefore need the axial spring rate — force per unit deflection — from the four quantities that actually appear on a drawing: wire diameter d, mean coil diameter D, number of active coils Na, and the shear modulus G of the wire alloy. This helical spring rate calculator applies the classical closed-coil formula k = G d⁴ / (8 D³ Na), the same identity used in Shigley, Wahl, and spring-maker handbooks when torsion dominates and the pitch is modest.
What helical spring rate means and why k = G d⁴ / (8 D³ Na)
Axial spring rate k is the force required to compress a helical spring by one unit of length. For a round-wire closed-coil compression spring the dominant stored energy is torsion in the wire, not the small bending contribution from pitch. Castigliano’s theorem applied to a coil of mean radius D/2, wire polar moment π d⁴ / 32, and length π D Na then collapses to the textbook identity k equals G times d to the fourth, divided by eight times D cubed times the number of active coils.
Wire diameter sits in the numerator to the fourth power, so a ten-percent change in d moves the rate by about forty-six percent — that is why stock charts list rate against wire size first. Mean coil diameter sits in the denominator cubed, so a larger envelope at the same wire is dramatically softer. Active coils scale the rate inversely: more working turns share the twist and the spring is softer.
Shear modulus G is a material property, not a geometry knob: music wire and hard-drawn steel sit near seventy-nine gigapascals, oil-tempered near seventy-seven, austenitic stainless near sixty-nine, phosphor bronze near forty-one. The spring index C = D/d is returned because it is the first sanity check a designer makes — values between about four and twelve wind cleanly, below four the inner diameter vanishes and residual stress soars, above twelve the coil is floppy and prone to buckling. This calculator does not apply the Wahl factor K_w.
Wahl multiplies shear stress to account for curvature and direct shear; it does not belong in the rate formula, and mixing the two is a common exam trap.
What you can do with it
Material and envelope trade studies
Swap shear modulus or mean coil diameter while holding the other three arguments fixed to compare music-wire versus stainless, or a tighter versus a larger envelope.
FAQ
What units should I use for d, D, and G?
Any coherent length and stress pair: metres and pascals give N/m; millimetres and N/mm² (MPa) give N/mm. The response labels unit as N/m for the SI convention.
Does this include the Wahl factor?
No. Wahl’s factor K_w corrects shear stress for curvature and direct shear. Spring rate uses the torsion-energy identity k = G d⁴ / (8 D³ Na) without K_w.
How is the rate of a compression spring calculated?
Multiply the shear modulus by the wire diameter to the fourth power, then divide by eight times the mean coil diameter cubed times the number of active coils. The example spring gives 4882.8125 N/m.
Why does a small change in wire diameter matter so much?
Because wire diameter enters to the fourth power. A wire about ten percent thicker raises the rate by about forty-six percent, which is why spring charts list rate by wire size first.
What spring index should I aim for?
The index is the mean coil diameter divided by the wire diameter. Values between about four and twelve wind cleanly; below four the stresses soar, and above twelve the coil gets floppy and may buckle. The example has an index of 8.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/eng/spring-rate-helical \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"wire_diameter":0.002,"mean_coil_diameter":0.016,"active_coils":8,"shear_modulus":80000000000}'const res = await fetch("https://api.kit.forhosting.com/eng/spring-rate-helical", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"wire_diameter": 0.002,
"mean_coil_diameter": 0.016,
"active_coils": 8,
"shear_modulus": 80000000000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/eng/spring-rate-helical",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"wire_diameter": 0.002,
"mean_coil_diameter": 0.016,
"active_coils": 8,
"shear_modulus": 80000000000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/eng/spring-rate-helical", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"wire_diameter":0.002,"mean_coil_diameter":0.016,"active_coils":8,"shear_modulus":80000000000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"wire_diameter":0.002,"mean_coil_diameter":0.016,"active_coils":8,"shear_modulus":80000000000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/eng/spring-rate-helical", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"wire_diameter": 0.002,
"mean_coil_diameter": 0.016,
"active_coils": 8,
"shear_modulus": 80000000000
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "eng.spring_rate_helical",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Invalid geometry — missing fields, non-positive sizes, or a mean coil no larger than the wire — fails with invalid_input and is not billed.
What helical spring rate means and why k = G d⁴ / (8 D³ Na)
Inactive end coils, solid height, and buckling slenderness are also out of scope: feed this endpoint the four rate arguments only, then combine k with your own load or deflection in Hooke’s law if you need force or travel.
Input contract, coherent units, response shape, and error behaviour
Length and stress units must be coherent. Numerics are rounded to twelve decimal places for stable goldens. Example: wire two millimetres as 0.002 m, mean coil sixteen millimetres as 0.016 m, eight active coils, and G of eighty gigapascals yields spring index eight and rate 4882.8125 N/m, because eighty billion times (0.002)⁴ divided by eight times (0.016)³ times eight is exact. Pair the rate with your own load if you need deflection; this capability solves static rate only. POST a JSON body with four required finite numbers: wire_diameter (aliases d, wire_d, wire, diameter_wire), the strictly positive wire diameter; mean_coil_diameter (aliases D, mean_d, coil_diameter, mean_diameter), the strictly positive mean coil diameter, which must exceed the wire so the inside diameter D minus d stays positive; active_coils (aliases n, Na, N, n_active, coils), the strictly positive count of coils that actually deflect — fractional values such as 7.5 are valid; and shear_modulus (aliases G, modulus, rigidity, shear_g), the strictly positive shear modulus of the wire. Metres and pascals yield spring_rate in newtons per metre, which is the SI label the response uses; millimetres with newtons per square millimetre (megapascals) yield newtons per millimetre if you stay consistent. Fields may arrive as JSON numbers or numeric strings. Missing fields, non-finite values, non-positive sizes, a mean coil no larger than the wire, or magnitudes above one trillion fail with invalid_input naming the field; those failures are not billed. On success the body echoes the four rounded inputs, reports spring_index as D divided by d, returns spring_rate as G d⁴ / (8 D³ Na), sets unit to N/m as the SI default label, and includes formula k = G d^4 / (8 D^3 Na), method helical_compression_spring_rate, and a short human-readable message.
Where a helical spring rate API earns its keep
Machine-design courses and spring-maker exams routinely ask for the closed-coil rate from a drawing callout of d, D, Na, and a listed G; a deterministic oracle marks a mean coil smaller than the wire as invalid instead of returning a physically impossible positive stiffness. Content sites that rank for helical spring rate calculator, compression spring constant from wire diameter, or k = G d⁴ / (8 D³ N) benefit from a live free tool whose arithmetic matches the paid automation path byte-for-byte. Invalid input is not billed. Product engineers comparing music-wire and stainless candidates can swap only shear_modulus and see the rate drop without rebuilding a spreadsheet that quietly used the wrong power on D. Maintenance scripts that read wire and coil from a caliper and a count of working turns can pin spring_rate in continuous integration against the same pure module students use in the browser. Laboratory benches that instrument compression springs for stiffness labs can lock the rounded spring_rate field in tests rather than depending on a load-frame that also includes end-coil friction. Keep requests small, pin spring_rate and spring_index in tests, and you get reproducible helical rates for LMS plugins, edge workers, and design notebooks without standing up a finite-element coil model.
Integration use cases
Machine design homework and exams
Compute k = G d⁴ / (8 D³ Na) from a drawing callout of wire, mean coil, active turns, and listed G; reject D ≤ d so graders get a clear invalid_input signal.
Lab and automation scripts
Pin spring_rate and spring_index from caliper wire, measured mean coil, counted active turns, and handbook G in CI using the same pure module as the free browser widget.
Technical questions
How do I calculate helical compression spring rate?
Send positive wire_diameter d, mean_coil_diameter D with D > d, active_coils Na, and shear_modulus G. The API returns k = G d⁴ / (8 D³ Na) as spring_rate in coherent units (N/m when SI).
Why must mean coil diameter be larger than wire diameter?
Inside diameter is D − d. If D is not greater than d the coil has no hole and the geometry is not a helical spring; that case is invalid_input.
What does the helical spring rate calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.