Straight-line depreciation calculator
Writing off a 10,000 machine over 5 years down to a 1,000 salvage value costs an even 1,800 a year: book value is 8,200 after the first year and 1,000 at the end. Enter cost, salvage and life for the full schedule. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Cost
- 10,000
- Salvage
- 1,000
- Useful life
- 5
- Depreciable base
- 9,000
- Annual depreciation
- 1,800
- Total depreciation
- 9,000
- Book value end
- 1,000
Accountants, bookkeepers, students, and small-business operators need a clear annual depreciation expense and a year-by-year book value schedule when an asset is written down evenly over its useful life. Spreadsheets bury the formula, and hand calculators often disagree on residual rounding in the final year. This straight-line depreciation calculator accepts original cost, estimated salvage value, and useful life in whole years, then returns the depreciable base, the constant annual depreciation charge, total depreciation over the life, ending book value, and a full schedule of depreciation, accumulated depreciation, and book value for each year.
How straight-line depreciation is defined here
Straight-line depreciation spreads the cost of a long-lived asset evenly across its useful life so each full year carries the same expense until the book value reaches salvage. Annual depreciation equals that base divided by useful life in whole years. After year t, accumulated depreciation is t times the annual charge (with a final-year residual adjustment so totals land exactly on the base), and book value is cost minus accumulated depreciation.
At the end of useful life, book value equals salvage and total depreciation equals the depreciable base. Example: a machine costs ten thousand, salvage is one thousand, useful life is five years. Depreciable base is nine thousand; annual depreciation is one thousand eight hundred; after year one book value is eight thousand two hundred; after year five book value is one thousand.
Currency is unitless: you supply amounts in whatever currency you already use and interpret the outputs in the same units. Negative cost or salvage above cost is rejected as invalid input rather than inventing a negative expense or an inflated residual.
What you can do with it
Fixed-asset annual expense
Enter cost, salvage, and useful life to get the constant annual straight-line depreciation charge for the books.
Year-by-year book value schedule
Use the returned schedule to list depreciation, accumulated depreciation, and book value for each year of the asset life.
FAQ
What is book value in the schedule?
Book value for year t is cost minus accumulated depreciation through that year. At the end of useful life it equals salvage.
Can salvage be zero?
Yes. Zero salvage means the full cost is depreciated evenly over the useful life; ending book value is zero.
Does this support declining-balance or MACRS?
Use a different tool for declining-balance, units-of-production, or tax MACRS tables.
What happens when the yearly amount does not divide evenly?
The final year absorbs the leftover. That way total depreciation always equals cost minus salvage, and the book value at the end of the last year lands exactly on the salvage value.
Can I depreciate an asset for part of a year?
No. The useful life is entered in whole years, from 1 to 100, and every year carries a full charge. Half-year or mid-month conventions are not applied.
Related tools
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/finance/depreciation-straight-line \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"cost":10000,"salvage":1000,"useful_life":5}'const res = await fetch("https://api.kit.forhosting.com/finance/depreciation-straight-line", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"cost": 10000,
"salvage": 1000,
"useful_life": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/finance/depreciation-straight-line",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"cost": 10000,
"salvage": 1000,
"useful_life": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/finance/depreciation-straight-line", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"cost":10000,"salvage":1000,"useful_life":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"cost":10000,"salvage":1000,"useful_life":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/finance/depreciation-straight-line", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"cost": 10000,
"salvage": 1000,
"useful_life": 5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "finance.depreciation_straight_line",
"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. |
Technical notes
How straight-line depreciation is defined here
The depreciable base is cost minus salvage: that is the total amount that will be expensed over the life. Partial-year conventions such as half-year or mid-month, declining-balance methods, units-of-production, section 179, bonus depreciation, and tax-jurisdiction tables are out of scope—this endpoint answers the classic annual straight-line question with an explicit schedule.
Input contract, rounding, and error behaviour
Optionally send decimals as an integer from zero through eight controlling half-up rounding of money-style outputs (default two). Half-up rounding is applied to each money field from the raw floating computation so goldens stay stable across runtimes. The final year of the schedule absorbs any residual so that accumulated depreciation equals the depreciable base and ending book value equals salvage even when division does not land on a clean decimal. POST a JSON object with three required fields: cost as a finite number greater than zero, salvage as a finite number greater than or equal to zero and less than or equal to cost, and useful_life as an integer from one through one hundred (whole years). Numeric strings that parse to finite values are accepted the same way as JSON numbers. Missing fields, non-finite values, non-positive cost, negative salvage, salvage greater than cost, non-integer or out-of-range useful_life or decimals fail with invalid_input and are not billed. On success the body echoes rounded cost and salvage, useful_life, depreciable_base, annual_depreciation, total_depreciation, book_value_end, a schedule array with one object per year containing year, depreciation, accumulated_depreciation, and book_value, and a short formula string you can show next to the numbers. Pair this API with your own tax module if you need MACRS percentages or jurisdiction-specific first-year rules; the calculator does not estimate tax savings or deferred tax assets.
Where a straight-line depreciation calculator earns its keep
Accounting education pages and personal-finance blogs rank for straight line depreciation calculator when they offer a live tool that matches the textbook story next to the article. Bookkeeping coaches let students enter cost, salvage, and life and check annual expense plus the full book-value ladder. SaaS onboarding flows can show first-asset depreciation without standing up a full general-ledger module. Internal ops scripts need a deterministic parse endpoint instead of a fragile spreadsheet paste step when building fixed-asset registers for demos or sandboxes. Sweep useful_life or salvage in a loop from your own code to build what-if tables; pin annual_depreciation and schedule book values in tests; keep requests small. The free browser path uses the same pure module as the API, so demo landings and production automation never drift. This tool does not fetch asset catalogs, apply tax bonus percentages, prorate mid-year acquisitions, or support double-declining balance—only closed-form annual straight-line depreciation and book value for a single asset with cost, salvage, and whole-year life.
Integration use cases
Classroom and content widgets
Embed the free browser calculator on education pages so learners verify textbook straight-line examples against a deterministic API.
Technical questions
How do I calculate straight-line depreciation?
Send cost (greater than zero), salvage (zero or more, not above cost), and useful_life in whole years. Annual depreciation is (cost − salvage) ÷ useful_life.
What does the straight-line depreciation calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.