Metric Definition
Debt growth as a percentage
Track from
Technical debt accumulation rate
Technical debt accumulation rate is the net debt a codebase adds in a period expressed as a percentage of the development effort spent in that period. It normalises debt growth against output so you can compare across teams and time. A rate above zero means debt is outpacing the work that creates it.
8 min read
What is technical debt accumulation rate?
Technical debt accumulation rate is the net debt a codebase adds in a period, expressed as a percentage of the development effort spent in that same period. If a team adds 400 hours of debt, clears 250 hours, and spent 3,000 hours on delivery, the net of 150 hours over 3,000 gives an accumulation rate of 5 percent. For every hour of work, the codebase got about three minutes deeper in debt.
The rate is the normalised cousin of raw accumulation. Net accumulation in hours tells you how much heavier the codebase got, but it scales with team size, so a 200-hour increase means something very different for a squad of three than for a department of fifty. Dividing by development effort strips out that scale and gives you a figure you can compare across teams, across quarters, and against a target.
The rate matters because it answers a sharper question than the raw number: is debt growing faster than the work that produces it? A growing team can post a rising hours figure while its accumulation rate falls, which is healthy. A shrinking team can post a falling hours figure while its rate climbs, which is not. The percentage is what keeps the trend honest as the organisation changes shape.
The accumulation rate is only meaningful if the development effort denominator covers the same work that produced the debt. Count delivery hours, and keep the estimation method for debt consistent between periods. A rate that drifts because the inputs were measured differently tells you nothing about the codebase.
How to calculate technical debt accumulation rate
The rate divides net debt added by the development effort spent in the period, then multiplies by 100 to give a percentage. You need three inputs, all measured over the same window: new debt added, debt remediated, and total development effort. Consistency between periods matters more than absolute precision, because the rate is read as a trend against a target.
- 1
New debt added
Sum the estimated remediation effort for every shortcut, untested change, and new code-quality issue created this period. Source candidates from static analysis, review comments tagged as debt, and tickets logged as deferred work.
- 2
Debt remediated
Sum the estimated effort of every debt item genuinely resolved this period through refactoring, coverage, dead-code removal, or dependency upgrades. Exclude new feature work that merely happens to be clean.
- 3
Development effort
Total the engineering hours spent on delivery in the period. This is the denominator that normalises debt growth against output, so use the same definition of delivery hours every time.
- 4
The calculation
Subtract remediated from added to get net debt, divide by development effort, and multiply by 100. A positive percentage means debt grew relative to the work, a negative one means the team paid down faster than it borrowed.
Read the result against a target band rather than as a pass or fail. A rate near zero means debt is broadly holding steady relative to output. A persistently positive rate means each unit of delivery is leaving the codebase a little worse, which compounds into the slower cycle time and reduced deployment frequency that teams feel long before they name the cause. Plotting the rate period over period is what surfaces the trajectory.
Technical debt accumulation rate in a metric tree
A metric tree decomposes the accumulation rate into the three quantities that produce it, debt added, debt remediated, and development effort, and traces each back to the practices that move it. Because the rate is a ratio, the tree has to explain both the numerator and the denominator, since the percentage can shift even when raw debt holds steady.
The numerator splits into the familiar pair of added and remediated debt, each with its own drivers. The denominator, development effort, is the part teams forget to model. A falling rate can come from genuinely better practices, or simply from a busier delivery quarter that inflated the denominator. The tree keeps these apart so you do not mistake a temporary surge in output for a real improvement in discipline.
This structure makes the rate diagnosable. If it rises, the tree shows whether the cause is more debt added, less debt cleared, or a quieter delivery period shrinking the denominator. Each of those points to a different owner and a different response, and only the first two are actually about codebase health.
Metric tree insight
Watch the denominator before you celebrate a falling rate. A rate that drops only because development effort spiked, with no real change to debt added or cleared, will rebound the moment delivery slows. Sustainable improvement shows up in the added and remediated branches, not in a busy quarter.
Technical debt accumulation rate benchmarks
Because the rate is normalised, it travels better between teams than raw accumulation, but it still varies with codebase maturity and the deliberate trade-offs a team is making. Read it as a band and watch the direction across several periods rather than fixating on a single reading.
| Band | Accumulation rate | What it signals |
|---|---|---|
| Healthy | Zero or negative | Debt is flat or shrinking relative to output. The team clears at least as much as it adds, and roughly 10 to 20 percent of effort goes to remediation. |
| Acceptable | Up to about 5 percent | Debt grows slowly relative to work. Often fine for a maturing product, provided the rate is stable and there is a credible plan to draw it back down. |
| Elevated | Roughly 5 to 15 percent | Debt is clearly outpacing remediation. Delivery friction usually starts to show here, with changes taking longer and reviews catching more rework. |
| High | Above about 15 percent | Most delivery is making the codebase worse and almost nothing is being paid back. This rate is unsustainable and leads to the spiral where everything takes longer. |
The strongest signal is not the level but the slope. A rate that climbs steadily across three quarters is a problem even if it is still inside an acceptable band, because the compounding will carry it out of that band soon enough. A high but falling rate, by contrast, is a team that has recognised the issue and is actively working it down.
How to improve technical debt accumulation rate
Lowering the rate means moving the same levers as raw accumulation, slowing debt added and raising debt cleared, but with one extra caution: do not chase the number by inflating the denominator. Real improvement comes from the numerator. Pushing more hours into delivery to dilute the rate just hides the problem.
Tighten the quality gate
Make tests and a code-review quality check part of the definition of done, so shortcuts become explicit, logged decisions. This is the most direct way to shrink the new-debt numerator without touching delivery output.
Protect remediation capacity
Ring-fence a fixed slice of each sprint for paying down debt. A protected allocation lifts the remediated term reliably, whereas an open-ended plan to refactor later rarely survives a busy roadmap.
Automate dependency upgrades
Keep libraries within one major version of support so debt does not accrue silently while the team focuses elsewhere. Automation here keeps the added branch low even in quarters with no other remediation.
Read the rate alongside the raw hours
Always pair the percentage with net accumulation in hours so a busy delivery quarter cannot mask a worsening codebase. If the rate falls but the hours rise, the improvement is an illusion created by the denominator.
The metric tree approach to lowering the rate starts by checking whether the numerator or the denominator is moving. If net debt is climbing, the work sits in the quality gate and the remediation allocation, owned by engineering leads. If the rate only moved because delivery hours swung, the right response may be to do nothing at all and wait for the denominator to settle.
KPI Tree lets you model this by connecting each branch of the rate tree to the team and the practice behind it. Engineering leads own the gate that limits new debt. Platform owns the upgrade cadence. Delivery leads own both the protected remediation time and the delivery-hours denominator. With RACI ownership on every node, a rising rate is investigated by the person accountable for the branch that actually moved, not debated in the abstract. When the rate shifts, that owner is pushed the change and can confirm whether it reflects real decay or just a swing in output.
Common mistakes when tracking technical debt accumulation rate
- 1
Ignoring the denominator
Treating the rate as if only debt moves it misses that development effort sits underneath. A change in delivery hours shifts the percentage on its own, so always read the numerator and denominator together.
- 2
Inconsistent effort measurement
If development hours are counted generously one quarter and tightly the next, the rate swings for reasons that have nothing to do with the codebase. Fix one definition of delivery effort and keep it.
- 3
Comparing rates across very different codebases
Normalisation helps, but a greenfield service and a legacy monolith still behave differently. Compare a team mostly against its own history rather than ranking unlike codebases on a single number.
- 4
Optimising the rate by adding delivery
Throwing more hours at features to dilute the percentage lowers the rate without improving anything. The codebase is no better, the number just looks calmer.
- 5
Reading a single period in isolation
One quarter is noisy. The rate is built to be read as a trend, so a single reading rarely justifies a major decision. Look at the slope across several periods before acting.
Related metrics
Cycle time
Process speed
Operations MetricsMetric Definition
Cycle Time = Process End Time − Process Start Time
Cycle time measures the total elapsed time from the start to the end of a process. It is a fundamental operations metric used in manufacturing, software development, service delivery, and any context where the speed of a process directly affects throughput, cost, and customer satisfaction.
Sprint velocity
Agile planning metric
Operations MetricsMetric Definition
Sprint Velocity = Sum of Story Points Completed in a Sprint
Sprint velocity measures the amount of work a team completes during a sprint, typically expressed in story points, ideal days, or another unit of estimation. It is a planning tool that helps agile teams forecast how much work they can commit to in future sprints based on their historical completion rate. Velocity is one of the most widely used and most frequently misunderstood metrics in agile software development.
Deployment frequency
DORA metric
Operations MetricsMetric Definition
Deployment Frequency = Number of Production Deployments / Time Period
Deployment frequency measures how often an organisation successfully releases code to production. It is one of the four DORA (DevOps Research and Assessment) metrics that predict software delivery performance and organisational outcomes. Teams that deploy more frequently deliver value to users faster, reduce the risk of each individual release, and create tighter feedback loops between development and production.
Escalation rate
Customer Support MetricsMetric Definition
Escalation Rate = (Escalated Tickets / Total Tickets Handled) x 100
Escalation rate measures the percentage of support tickets that are transferred from one tier or team to a higher tier or specialist group for resolution. It reflects the gap between the issues customers raise and the ability of frontline agents to resolve them, making it a key indicator of agent readiness, process maturity, and product complexity.
Metric trees for engineering teams
Metric Definition
See how technical debt accumulation rate fits alongside the other delivery and quality measures an engineering team owns in a metric tree.
Input metrics vs output metrics
Metric Definition
Understand whether debt growth is an input you can act on directly or an output of upstream delivery choices, so you target the right lever.
Normalise debt growth and keep the rate honest
Build a technical debt accumulation rate metric tree that connects new debt, remediated debt, and delivery effort to the owners who can move each one.