Alternative minimum tax calculator
Check whether the minimum tax adds to your bill: a joint return with 250,000 of taxable income, 60,000 of preference items and 42,000 of regular tax owes 3,942 of AMT on top. Every step is shown, with 2024 figures. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Taxable income
- 250,000
- Preference items
- 60,000
- Filing status
- Married joint
- Regular tax
- 42,000
- Amt owed
- 3,942
- Amti
- 310,000
- Exemption
- 133,300
- Amt base
- 176,700
The alternative minimum tax is a parallel federal tax system that recalculates your liability with fewer deductions and its own exemption and rates. If the tentative minimum tax it produces exceeds your regular tax, you owe the difference on top of it. This capability takes your regular taxable income, your AMT preference and adjustment items, your filing status and your regular tax, and returns the full computation: alternative minimum taxable income, the exemption after phase-out, the two-bracket tentative minimum tax, and the additional amount owed — zero when the regular system already charges you more.
How the parallel minimum-tax system works
The alternative minimum tax exists to ensure that taxpayers who reduce their regular bill with certain deductions and exclusions still pay a floor amount. It starts from your regular taxable income and adds back preference and adjustment items — amounts such as the bargain element on exercised incentive stock options, interest from certain private-activity bonds, or accelerated-depreciation adjustments — to produce alternative minimum taxable income, or AMTI.
What remains is the AMT base, and it is taxed on a two-bracket schedule — 26 percent up to the breakpoint and 28 percent above it — rather than the seven brackets of the regular system. The result is the tentative minimum tax.
When to use it and what it is not
Use it when you are modelling the tax cost of exercising incentive stock options, estimating whether a large deduction year will trigger the minimum tax, or validating the AMT line of a tax-planning spreadsheet against an independent deterministic reference. Keep the scope in mind: this is a simplified federal AMT using 2024 parameters.
It does not compute the regular tax itself — you supply that — it does not handle the AMT capital-gains rate interaction, state minimum taxes, or the credit for prior-year AMT, and it is an estimator rather than tax advice. For a filing decision, confirm the numbers with current IRS forms or a tax professional.
What you can do with it
Cost of exercising ISOs
Add the incentive-stock-option bargain element as a preference item to see whether the exercise pushes you into AMT territory and by how much.
Planning a high-deduction year
Estimate whether a year with large preference items will leave you owing the minimum tax on top of your regular liability.
Validating a tax model
Cross-check the AMT line of a spreadsheet or planning tool against a deterministic independent computation, with every intermediate figure exposed.
FAQ
Does it compute my regular tax too?
No. You supply the regular tax as an input; the capability returns the excess of the tentative minimum tax over it, or zero when the regular tax is higher.
Is any of my data stored?
No. The inputs are processed in memory and discarded; only the computed result is returned.
What counts as an AMT preference item?
Amounts the regular system lets you leave out but the minimum tax adds back, such as the bargain element on exercised incentive stock options, interest from certain private-activity bonds or accelerated depreciation adjustments.
How big is the AMT exemption for 2024?
It is 85,700 for single filers and heads of household, 133,300 for joint filers and 66,650 for married filing separately. It shrinks by 25 cents per unit of income above 609,350, or 1,218,700 for joint filers.
Why does the calculator say I owe no AMT?
Because your tentative minimum tax is lower than the regular tax you entered. The minimum tax only adds the excess and never reduces a regular bill, so in that case the extra amount is zero.
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/fin/alternative-minimum-tax \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"taxable_income":250000}'const res = await fetch("https://api.kit.forhosting.com/fin/alternative-minimum-tax", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"taxable_income": 250000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/alternative-minimum-tax",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"taxable_income": 250000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/alternative-minimum-tax", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"taxable_income":250000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"taxable_income":250000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/alternative-minimum-tax", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"taxable_income": 250000
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.alternative_minimum_tax",
"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 the parallel minimum-tax system works
From AMTI it subtracts an exemption that depends on filing status: for 2024, $85,700 for single and head-of-household filers, $133,300 for married couples filing jointly and $66,650 for married filing separately. That exemption is not a fixed gift: it is phased out by twenty-five cents for every dollar of AMTI above a threshold ($609,350 for most statuses, $1,218,700 for joint filers), so high earners lose it entirely.
What the capability computes and returns
You send four inputs: taxable_income (required, zero or greater), preference_items (optional, defaults to zero), filing_status (one of single, married_joint, married_separate or head_of_household, defaulting to single) and regular_tax (optional, the liability the regular system already produced, defaulting to zero). The engine computes AMTI, applies the exemption phase-out, derives the AMT base, prices it at 26 percent up to $239,100 ($119,550 for married filing separately) and 28 percent beyond, and subtracts the regular tax. The amount returned as amt_owed is only the excess: when the tentative minimum tax is lower than what you already owe under the regular rules, the answer is zero, because the AMT never reduces a regular bill. Every intermediate figure — amti, exemption, amt_base and tentative_minimum_tax — is returned as well, rounded to cents, so the computation can be audited line by line and stored in a compliance trail. A negative taxable income, a negative preference total or an unknown filing status is rejected with an invalid_input error naming the field, and errors are never charged.
When to use it and what it is not
The identical code runs free in your browser on this page, so you can check a scenario by hand and only pay the $0.002 per call when you invoke it through the API.
Technical questions
What does it cost?
$0.002 per request via the API. It is also free to run in your browser on this page.
What inputs does it need?
Regular taxable income in USD. Optionally: preference items, filing status (single, married_joint, married_separate or head_of_household) and the regular tax to compare against.
What happens with a negative income?
The request is rejected with an invalid_input error naming the taxable_income field. Errors are not charged.
Which tax-year parameters does it use?
Simplified 2024 federal parameters: exemptions of $85,700 (single/head of household), $133,300 (married joint) and $66,650 (married separate), phased out at 25% over the status threshold, with 26%/28% brackets.