Junction temperature calculator
This junction temperature calculator estimates the steady-state temperature inside a semiconductor device from three values: the power it dissipates as heat, the surrounding ambient temperature, and the total thermal resistance from junction to ambient.
Run — free
It applies the standard relation between heat flow and temperature rise, returning both the calculated junction temperature and the rise above ambient. Use it for quick design checks involving integrated circuits, power transistors, diodes, regulators, LEDs, and other components whose reliability depends on keeping the internal junction below its rated limit.
Enter values for the complete thermal path
Start with the semiconductor's actual power dissipation in watts, not its load power or the power delivered to another part of the circuit. For a linear regulator, dissipation may be approximately the voltage dropped across the regulator multiplied by current. For a switching device, it can include conduction and switching losses. Enter the ambient temperature in degrees Celsius at the location where the thermal path ends. Then enter the total junction-to-ambient thermal resistance in degrees Celsius per watt. That total must describe the same physical arrangement you are evaluating. It may be a single junction-to-ambient figure from a data sheet, or a sum such as junction-to-case, interface, and heat-sink-to-ambient resistance. Do not add a published junction-to-ambient value to those individual stages, because the published value already represents a complete path under its stated test conditions. Airflow, copper area, board construction, mounting pressure, and enclosure temperature can all change the effective resistance, so choose data that matches the intended assembly as closely as practical.
Understand the calculation and its units
The calculator uses the steady-state equation Tj = Ta + P × Rθ, where Tj is junction temperature, Ta is ambient temperature, P is dissipated power, and Rθ is total thermal resistance. Multiplying watts by degrees Celsius per watt gives a temperature rise in degrees Celsius; that rise is then added to ambient temperature. A thermal resistance expressed in kelvins per watt has the same numerical value for this calculation because a one-kelvin temperature difference equals a one-degree-Celsius difference. The result is deterministic and does not apply hidden safety factors. For example, 2.5 W through 40 °C/W produces a 100 °C rise, so an ambient of 25 °C gives a junction estimate of 125 °C. Zero power produces no rise, while zero thermal resistance is accepted as an ideal limiting case. Negative power or resistance is rejected because this capability models heat generated by a device flowing through a passive thermal path. The returned fields preserve the inputs and state the formula so automated records remain understandable.
Use the result as a design estimate
Compare the calculated junction temperature with the maximum junction rating and, more importantly, with the lower design target required for reliability and margin. A result below the absolute maximum is not automatically a robust design. Component tolerances, loss variation, blocked airflow, dust, warm neighboring parts, interface aging, and measurement error can raise the real temperature. Run realistic worst-case combinations of maximum ambient, maximum expected dissipation, and unfavorable thermal resistance. This equation describes thermal equilibrium, so it does not predict short pulses, startup transients, or temperature changes over time. Transient analysis requires a thermal impedance curve or an RC thermal model supplied by the manufacturer. The estimate also depends on the correct reference temperature: a junction-to-case resistance must be paired with case temperature or combined with the remaining case-to-ambient path before using ambient temperature. Validate critical designs with data-sheet guidance and physical temperature measurements. Because direct junction measurement is often impractical, engineers may infer it from a calibrated electrical parameter or measure a nearby case point and account for the relevant resistance.
What you can do with it
Check a power transistor
Estimate whether conduction and switching losses will keep the transistor junction within the chosen thermal design limit.
Evaluate a heat sink
Combine the thermal resistances in the heat path and compare junction temperature estimates for different heat-sink or airflow choices.
Assess a linear regulator
Convert the regulator's voltage-drop loss into a junction-temperature estimate at the expected enclosure ambient temperature.
FAQ
What formula does the calculator use?
It uses Tj = Ta + P × Rθ(total), the steady-state junction-temperature relation.
What does total thermal resistance mean?
It is the resistance of the complete heat path between the semiconductor junction and the ambient reference, expressed in °C/W or K/W.
Can I use K/W instead of °C/W?
Yes. Kelvin and degree Celsius temperature differences have identical numerical magnitudes, so K/W and °C/W are numerically equivalent here.
Does this calculate transient temperature during a pulse?
No. It calculates a steady-state estimate. Pulsed operation requires transient thermal impedance data or a suitable dynamic thermal model.
How much does an API calculation cost?
Each API request costs $0.002. The calculation is deterministic and requires no external network service.
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/elec/junction-temperature \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"power_dissipation_w":2.5,"ambient_temperature_c":25,"thermal_resistance_c_per_w":40}'const res = await fetch("https://api.kit.forhosting.com/elec/junction-temperature", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"power_dissipation_w": 2.5,
"ambient_temperature_c": 25,
"thermal_resistance_c_per_w": 40
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/junction-temperature",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"power_dissipation_w": 2.5,
"ambient_temperature_c": 25,
"thermal_resistance_c_per_w": 40
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/junction-temperature", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"power_dissipation_w":2.5,"ambient_temperature_c":25,"thermal_resistance_c_per_w":40}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"power_dissipation_w":2.5,"ambient_temperature_c":25,"thermal_resistance_c_per_w":40}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/junction-temperature", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"power_dissipation_w": 2.5,
"ambient_temperature_c": 25,
"thermal_resistance_c_per_w": 40
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.junction_temperature",
"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. |