Critical Crack Length Calculator
The critical crack length calculator estimates the flaw size at which mode-I crack growth can become unstable under a specified tensile stress.
Run — free
Enter fracture toughness in MPa square root metre, applied stress in MPa, and the dimensionless geometry factor for the crack and specimen. The result is returned in metres, millimetres, and inches. This is a deterministic linear-elastic fracture mechanics calculation intended for screening, checking, and engineering study, not a substitute for a code-compliant integrity assessment.
What the critical length represents
A crack concentrates stress at its tip. In linear-elastic fracture mechanics, that local severity is represented by the mode-I stress intensity factor, commonly written as K_I = Y times sigma times the square root of pi times a. Here, sigma is the remote tensile stress, a is the crack-size parameter used by the selected geometry solution, and Y is a dimensionless correction for crack shape, location, and specimen boundaries. Unstable growth becomes possible when K_I reaches the material fracture toughness K_IC. Rearranging that equality gives the critical size calculated here: a_c = (K_IC divided by Y sigma) squared, divided by pi. The result is a threshold under the assumptions of that equation, not a prediction that a component will remain harmless until the exact reported dimension. Real structures can contain residual stress, mixed-mode loading, fatigue growth, corrosion, plasticity, interacting flaws, and measurement uncertainty. Treat the number as an engineering screening result and apply the safety factors, inspection rules, and acceptance criteria required for the component and jurisdiction.
Choose consistent inputs and the correct geometry factor
Enter fracture toughness as K_IC in MPa square root metre and applied tensile stress in MPa. Those units are intentionally fixed because their combination makes the calculated crack length emerge in metres without a hidden conversion. Use a toughness value appropriate to the material condition, orientation, thickness, temperature, loading rate, and environment. The applied stress should reflect the stress used by the governing fracture assessment method; depending on that method, it may need to include membrane, bending, thermal, or residual contributions. The geometry factor Y is equally important. It is not a universal material property. It depends on whether the crack is central, edge-based, surface-breaking, or embedded, as well as finite width and crack aspect ratio. The default value of 1.12 is a familiar approximation for a small single-edge crack in a large plate, but it must not be used merely because no better value is available. Obtain Y from a recognized handbook, standard, validated finite-element solution, or the governing assessment procedure, and confirm that its definition of a matches the dimension you intend to compare.
Interpret the result and understand its limits
The calculator returns the same critical crack-size parameter in metres, millimetres, and inches so that you can compare it directly with inspection data without doing a second conversion. A higher fracture toughness increases the allowable critical size quadratically, while a higher applied stress or geometry factor reduces it quadratically. That sensitivity makes input quality crucial: a modest error in stress, toughness, or Y can cause a much larger error in the estimated length. The calculation assumes linear-elastic behavior and a valid K_IC value, conditions that usually require sufficient constraint and limited crack-tip plasticity. It does not check whether plane-strain validity requirements are met, determine fatigue life, calculate a failure assessment diagram, or account for ductile tearing. It also does not decide whether a measured indication is acceptable, because inspection uncertainty and flaw-sizing conventions matter. For preliminary comparisons, retain conservative inputs and document their sources. For service decisions, pressure equipment, aircraft, bridges, lifting equipment, or other safety-critical assets, use the applicable engineering standard and have a qualified fracture-mechanics professional review the complete assessment.
What you can do with it
Screen an inspection indication
Compare a measured crack-size parameter with a first-pass linear-elastic critical length before beginning a full fitness-for-service assessment.
Check material and load sensitivity
Explore how changes in fracture toughness, applied tensile stress, or geometry factor shift the estimated instability threshold.
Verify a fracture-mechanics worksheet
Reproduce the rearranged stress-intensity calculation independently and obtain consistent metre, millimetre, and inch outputs.
FAQ
What equation does the calculator use?
It solves K_IC = Y sigma square root of pi a for a, giving a_c = (K_IC/(Y sigma))^2/pi.
What units should I enter?
Enter fracture toughness in MPa square root metre and applied stress in MPa. The geometry factor is dimensionless.
What does the default geometry factor mean?
The default 1.12 is a common approximation for a small single-edge crack in a large plate. Replace it with a value valid for your actual crack and component geometry.
Is the result a safe allowable crack size?
No. It is an idealized instability threshold before safety factors, inspection uncertainty, fatigue growth, residual stress, and code-specific acceptance rules are considered.
How much does the API calculation cost?
Each API request costs $0.002. The same deterministic calculation can also run in the browser.
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/critical-crack \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"fracture_toughness":50,"applied_stress":250}'const res = await fetch("https://api.kit.forhosting.com/eng/critical-crack", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"fracture_toughness": 50,
"applied_stress": 250
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/eng/critical-crack",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"fracture_toughness": 50,
"applied_stress": 250
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/eng/critical-crack", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"fracture_toughness":50,"applied_stress":250}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"fracture_toughness":50,"applied_stress":250}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/eng/critical-crack", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"fracture_toughness": 50,
"applied_stress": 250
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "eng.critical_crack",
"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. |