Shaft Torsional Shear Stress Calculator
This shaft torsional shear stress calculator finds the maximum shear stress produced by an applied torque in a circular shaft.
Run — free
Enter the torque magnitude, the shaft outer radius, and the cross-section's polar moment of inertia, then choose the units used for each quantity. The calculator applies the elastic torsion relation tau equals torque times radius divided by polar moment, normalizes the values to SI units, and reports the result in both pascals and megapascals. It is suitable for solid or hollow circular shafts when the correct polar moment is already known.
What the torsional shear stress result means
A torque twists a shaft and creates shear stress across its cross-section. For a circular shaft under ordinary elastic torsion, that stress increases linearly with distance from the centerline. It is zero at the center and reaches its largest magnitude at the outside surface, which is why this calculator uses the outer radius. The returned maximum value is the nominal torsional shear stress at that surface. Designers commonly compare it with an allowable shear stress after applying the safety factors, material criteria, and design rules appropriate to their project. The calculation applies to both solid and hollow circular shafts because the supplied polar moment of inertia describes the actual cross-section. However, it does not automatically account for keyways, splines, shoulders, holes, cracks, or other local features that concentrate stress. It also does not combine torsion with bending, axial load, contact stress, thermal effects, fatigue cycles, or residual stress. Treat the answer as a well-defined mechanics result, not as a complete declaration that a shaft is safe.
How to enter torque, radius, and polar moment
Enter torque as a positive magnitude and select its unit. The available choices cover newton-metres, newton-millimetres, pound-force feet, and pound-force inches. Enter the outer radius using the selected length unit. The polar moment must use that same length unit raised to the fourth power: if the radius is in millimetres, supply the polar moment in millimetres to the fourth power; if the radius is in inches, use inches to the fourth power. This shared length-unit rule prevents an easy but serious dimensional mistake. The calculator converts torque to newton-metres, radius to metres, and the polar moment to metres to the fourth power before evaluating the formula. All three magnitudes must be finite and greater than zero. Use the applied torque at the section being checked, not necessarily the motor nameplate torque, because transmitted torque can change along a shaft where gears, pulleys, couplings, or other components add or remove load. Obtain the polar moment from the actual circular geometry or a trusted section-property calculation.
Formula, assumptions, and interpreting the output
The governing relation is tau_max = T times r divided by J, where T is the internal torque at the section, r is the outer radius, and J is the polar second moment of area. In coherent SI units, newton-metres multiplied by metres and divided by metres to the fourth power produces newtons per square metre, or pascals. The calculator also divides that result by one million to display megapascals, a convenient unit for shaft design. The relation assumes a circular cross-section, elastic material response, small deformation, and Saint-Venant torsion away from disturbed end regions. It assumes the supplied J is correct for the section: for example, a hollow shaft requires the hollow-section polar moment rather than a solid-shaft value based only on its outer diameter. The stress magnitude does not show twist angle; calculating twist also requires shaft length and shear modulus. Before making a design decision, compare the nominal result with the governing material criterion and code, consider stress concentration and fatigue where applicable, and verify that all input units describe the same physical section.
What you can do with it
Check a transmission shaft
Find nominal outside-surface shear stress at a shaft section carrying a known transmitted torque.
Compare solid and hollow concepts
Evaluate stress for alternative circular sections after calculating the appropriate polar moment for each design.
Verify a hand calculation
Normalize mixed engineering units and confirm the result of the standard elastic torsion formula.
FAQ
What does the calculation cost?
It runs free in the browser on this page. An automated API request costs $0.002.
Why is the maximum stress at the outer surface?
For elastic torsion of a circular shaft, shear stress is proportional to radial distance, so its magnitude is greatest at the largest radius.
Can I use this for a hollow circular shaft?
Yes. Supply the outer radius and the correct polar moment of inertia for the hollow cross-section.
Which units should the polar moment use?
Use the selected length unit to the fourth power. For example, select mm when radius is in mm and polar moment is in mm^4.
Does the result include a keyway or shoulder stress concentration?
No. It is nominal torsional shear stress. Apply an appropriate stress concentration factor separately when the geometry requires one.
Does this calculate shaft twist?
No. Angle of twist also depends on shaft length and shear modulus, which are not inputs to this calculation.
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/torsion-shear-stress \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"torque":1200,"outer_radius":25,"polar_moment_of_inertia":613592.3151542565}'const res = await fetch("https://api.kit.forhosting.com/eng/torsion-shear-stress", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"torque": 1200,
"outer_radius": 25,
"polar_moment_of_inertia": 613592.3151542565
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/eng/torsion-shear-stress",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"torque": 1200,
"outer_radius": 25,
"polar_moment_of_inertia": 613592.3151542565
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/eng/torsion-shear-stress", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"torque":1200,"outer_radius":25,"polar_moment_of_inertia":613592.3151542565}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"torque":1200,"outer_radius":25,"polar_moment_of_inertia":613592.3151542565}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/eng/torsion-shear-stress", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"torque": 1200,
"outer_radius": 25,
"polar_moment_of_inertia": 613592.3151542565
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "eng.torsion_shear_stress",
"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. |