---
app_version: 0.7.0
precision: 2
form_title: Heatsink Thermal Resistance
form_description: Will this heatsink actually keep your final's junction temperature safe? Enter dissipated power, junction-to-case and case-to-sink resistance, the heatsink's own rating and ambient temperature.
form_inputs: Dissipated power|p_diss{W}, Junction-to-case Rth|rth_jc{°C/W}, Case-to-sink Rth|rth_cs{°C/W}, Heatsink Rth|rth_sa{°C/W}, Ambient temperature|t_ambient{°C}, Max. junction temperature|t_j_max{°C}
form_outputs: Total thermal resistance|rth_total, Junction temperature|t_junction, Margin to max. Tj|margin_c, Max. Rth allowed for this Tj_max|rth_max_allowed
---
# Heatsink Thermal Resistance
// "This final gets warm on full carrier — is the heatsink actually enough,
// or is it slowly cooking the transistor?"
//
// Thermal resistance works exactly like Ohm's law: ΔT (like voltage) equals
// power (like current) times thermal resistance (like resistance). Stages in
// the heat path — junction→case, case→sink, sink→air — just add in series.
// The units come along: W times °C/W is °C.

p_diss = 15 W                // continuous dissipated power
rth_jc = 1.5 °C/W            // junction-to-case (from the datasheet)
rth_cs = 0.5 °C/W            // case-to-heatsink (mica washer + grease)
rth_sa = 3.0 °C/W            // heatsink-to-ambient (the sink's own rating)
t_ambient = 25 °C
t_j_max = 150 °C             // datasheet absolute maximum — derate for a safety margin

# Series thermal path
rth_total = rth_jc + rth_cs + rth_sa
"Total thermal resistance, junction to ambient": rth_total

delta_t = p_diss * rth_total
t_junction = t_ambient + delta_t

"Temperature rise above ambient": delta_t
"Junction temperature": t_junction

margin_c = t_j_max - t_junction
"Margin to max. junction temperature": margin_c

# The other way round: sizing a heatsink
// Given how hot you're willing to let the junction get, and the junction-
// to-case and case-to-sink resistances you're stuck with, how much thermal
// resistance can the heatsink itself have?
rth_max_allowed = (t_j_max - t_ambient) / p_diss - rth_jc - rth_cs
"Max. heatsink Rth allowed for this Tj_max": rth_max_allowed
