Technical Debt Risk Calculator
Score the security risk carried by end-of-life systems, unsupported versions, long-unpatched hosts, legacy code and thin test coverage.
Inputs
Technical Debt Risk Score
18.9/ 100
Risk Band
Informational
End-of-Support Share
6.9%
Long-Unpatched Share
15.0%
Ability to Patch Safely
D — Weak
Biggest Driver
Thin test coverage — the team cannot patch quickly without breaking things
Step by step
Values used
Systems in scope = 320 systems; Systems past end of support = 22 systems; Components on an unsupported version = 14 components; Systems with findings open over 90 days = 48 systems; Codebase with no active maintainer = 35 %; Automated test coverage = 52 %
Technical Debt Risk
Risk = 0.30 × end-of-support share + 0.25 × long-unpatched share + 0.15 × unsupported-component share + 0.15 × unmaintained-code share + 0.15 × (100 − test coverage), all as percentages.
Patchability
Ability to patch safely = 0.6 × test coverage + 0.4 × maintained-code share, graded A–F. It predicts how fast the team can ship a patch without causing an incident.
Technical Debt Risk Score
= 18.9 / 100
Risk Band
= Informational
End-of-Support Share
= 6.9
Long-Unpatched Share
= 15.0
Ability to Patch Safely
= D — Weak
Biggest Driver
= Thin test coverage — the team cannot patch quickly without breaking things
How it works
The two heaviest terms are the ones that cannot be fixed by patching: end-of-support systems have no patch to apply, and long-unpatched systems have one that nobody dares deploy. Test coverage appears in the model inverted because the real reason patches sit undeployed is usually fear of regression, not ignorance of the vulnerability. Technical debt is the reason a patching programme plateaus — beyond a certain share of end-of-life systems, no amount of vulnerability management improves the numbers, and the answer becomes a replacement budget.
Formulas
Technical Debt Risk
Risk = 0.30 × end-of-support share + 0.25 × long-unpatched share + 0.15 × unsupported-component share + 0.15 × unmaintained-code share + 0.15 × (100 − test coverage), all as percentages.
- end-of-support share
- Systems receiving no vendor patches
- long-unpatched share
- Systems carrying findings older than 90 days
- unmaintained code
- Code with no active owner
- 100 − test coverage
- Change risk that makes teams avoid patching
Patchability
Ability to patch safely = 0.6 × test coverage + 0.4 × maintained-code share, graded A–F. It predicts how fast the team can ship a patch without causing an incident.
Frequently Asked Questions
How is Technical Debt Risk calculated?
Risk = 0.30 × end-of-support share + 0.25 × long-unpatched share + 0.15 × unsupported-component share + 0.15 × unmaintained-code share + 0.15 × (100 − test coverage), all as percentages. The two heaviest terms are the ones that cannot be fixed by patching: end-of-support systems have no patch to apply, and long-unpatched systems have one that nobody dares deploy. Test coverage appears in the model inverted because the real reason patches sit undeployed is usually fear of regression, not ignorance of the vulnerability.
Why does Technical Debt Risk matter?
Technical debt is the reason a patching programme plateaus — beyond a certain share of end-of-life systems, no amount of vulnerability management improves the numbers, and the answer becomes a replacement budget.
What values do I need to enter?
This calculator takes 6 inputs: Systems in scope, Systems past end of support, Components on an unsupported version, Systems with findings open over 90 days, Codebase with no active maintainer, Automated test coverage. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Why is end-of-life weighted highest?
Because it caps what vulnerability management can achieve. A system with no vendor support accumulates unfixable findings indefinitely, so its risk grows monotonically until it is replaced, isolated or accepted in writing.
How does test coverage belong in a security metric?
Because it determines patch velocity. Teams with good automated tests deploy a security patch in hours; teams without them wait for a manual regression cycle, which is how a seven-day SLA turns into six weeks.
You might also need
- Security Debt CalculatorCommonly used together
- Remediation Cost CalculatorCommonly used together
- Vulnerability Management Maturity CalculatorCommonly used together
- Patch Priority CalculatorAlso in Vulnerability Management
- CVSS v3 Score CalculatorAlso in Vulnerability Management
- Vulnerability Health Score CalculatorAlso in Vulnerability Management