Trump tax calculator
Under the 2017 TCJA tables, a single filer with 80,000 of taxable income is in the 22% bracket, yet only the top slice is taxed at that rate. Choose your filing status and get the federal tax owed, the marginal rate and the effective rate. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Income
- 80,000
- Filing status
- Single
- Tax year
- 2,018
- Tax
- 13,539.5
- Marginal rate percent
- 22
- Effective rate percent
- 16.9244
The 2017 Tax Cuts and Jobs Act replaced the prior federal ordinary-income rate schedule with seven stacked brackets of ten, twelve, twenty-two, twenty-four, thirty-two, thirty-five, and thirty-seven percent. People who search for a trump tax calculator want the tax owed under those TCJA brackets from taxable income and filing status, not a generic caller-supplied table and not a later inflation-adjusted Internal Revenue Service year. This calculator encodes the statutory 2017 TCJA breakpoints as they first applied in tax year 2018 for single, married filing jointly, married filing separately, head of household, and qualifying surviving spouse.
What the 2017 TCJA brackets mean and how tax is stacked
Federal ordinary income tax under the 2017 Tax Cuts and Jobs Act is a progressive levy: different slices of taxable income are taxed at different statutory rates, and the schedule you use depends on filing status. The Act, signed in December 2017, replaced the prior ten, fifteen, twenty-five, twenty-eight, thirty-three, thirty-five, and thirty-nine-point-six percent structure with seven rates of ten, twelve, twenty-two, twenty-four, thirty-two, thirty-five, and thirty-seven percent. The dollar breakpoints written in the statute are the first-year, unindexed amounts that applied to tax year 2018.
Single filers and married people who file separately share the lower thresholds through the thirty-two percent band, then diverge: the thirty-five percent band for single ends at five hundred thousand dollars, while married filing separately reaches the thirty-seven percent top rate at three hundred thousand dollars. Married filing jointly and qualifying surviving spouses share a roughly doubled table whose first ten percent band ends at nineteen thousand fifty dollars and whose thirty-seven percent top rate begins at six hundred thousand dollars.
Head of household has its own intermediate widths, with a first band ending at thirteen thousand six hundred dollars. Only the dollars that sit inside a given band are taxed at that band's rate. A single filer with eighty thousand dollars of taxable income does not pay twenty-two percent on the entire eighty thousand, only on the slice above thirty-eight thousand seven hundred dollars, while the first nine thousand five hundred twenty-five dollars remain at ten percent and the next slice remains at twelve percent.
This calculator encodes those 2017 TCJA statutory tables as fixed arrays. It does not subtract the federal standard deduction, apply credits such as the child tax credit, compute alternative minimum tax, net investment income tax, or self-employment tax, or look up a later year's inflation-adjusted Internal Revenue Service tables. You supply taxable annual income as it would appear on Form 1040 after deductions, and the engine returns the tax owed from the rate schedule.
Zero taxable income is a valid input and yields zero tax. Negative income is rejected.
Where a trump tax calculator earns its keep
Households comparing filing status after a marriage, a divorce, or a qualifying surviving-spouse year can send the same taxable income twice with different statuses and read the trump tax owed, the last-dollar rate, and the effective rate without rebuilding three Internal Revenue Code schedules. Payroll and compensation teams that already know federal taxable wages can quote an annual federal-tax line for offer letters and year-end estimates, then layer state withholding and credits in their own engine.
Exam-prep generators and consumer-math classrooms use the same contract so a student who applies twenty-two percent to the entire income is marked wrong, because federal tax under the Act is stacked, not flat. This landing targets people searching for a trump tax calculator, TCJA tax brackets, or 2017 federal tax owed from taxable income by filing status; it is not a sales-tax tool, not a state income-tax estimator, and not a credit optimizer.
Prefer this capability when you already have federal taxable income and a recognized status and want the 2017 Tax Cuts and Jobs Act rate schedule applied. If you need a caller-supplied custom table, use a generic tax-bracket calculator instead of this frozen statutory landing.
What you can do with it
Annual federal tax from taxable income
Households and advisors send Form 1040 taxable income and a filing status to display 2017 TCJA tax owed, last-dollar rate, and effective rate before credits.
Compare tax across filing statuses
After a marriage, divorce, or surviving-spouse year, run the same taxable income under two statuses and compare the stacked 2017 TCJA results without rebuilding tables.
FAQ
How is the trump tax (2017 TCJA federal income tax) computed here?
The calculator walks the 2017 Tax Cuts and Jobs Act statutory rate schedule for your filing status, taxing each slice of taxable income at that band's rate (10, 12, 22, 24, 32, 35, or 37 percent). The result is the tax owed, rounded to cents.
Which filing statuses are accepted?
Short codes mfj, mfs, hoh, and qss are normalized to those names.
Is the input gross pay or taxable income?
Federal taxable annual income after deductions (Form 1040 taxable income), not gross wages. The engine does not subtract the standard deduction or apply credits; supply income already reduced to the taxable amount.
What happens if filing status is unrecognized?
The calculator never guesses a table. Valid statuses are the five Internal Revenue Code names listed above; failed validation is not billed.
What does the trump tax calculator cost?
The browser tool is free and runs locally.
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/trump-tax \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"income":80000,"filing_status":"single"}'const res = await fetch("https://api.kit.forhosting.com/fin/trump-tax", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"income": 80000,
"filing_status": "single"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/trump-tax",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"income": 80000,
"filing_status": "single"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/trump-tax", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"income":80000,"filing_status":"single"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"income":80000,"filing_status":"single"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/trump-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
{
"income": 80000,
"filing_status": "single"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.trump_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.
Limits
max_abs | 1000000000000 |
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
It walks the staircase, returns the federal tax owed together with the last-dollar rate and the effective rate on the whole income, and rejects an unrecognized filing status with invalid_input instead of guessing the single table.
Input contract, filing statuses, and error behaviour
Common short codes such as mfj, mfs, hoh, and qss are accepted and normalized to those canonical names. Failed validation is never charged. Send a JSON body with two required fields. income (aliases taxable_income, taxable, amount) is United States federal taxable annual income in dollars after deductions, not gross wages and not adjusted gross income if those differ. It may arrive as a JSON number or as a numeric string that matches a strict finite pattern without dollar signs or thousands separators. Absolute value must stay within one trillion so the product remains finite in IEEE double precision on the Worker and in the browser. A negative income is rejected with invalid_input; zero is allowed and yields tax zero. filing_status (aliases status, filing) must be one of five Internal Revenue Code statuses used by the 2017 TCJA rate schedules: single, married_filing_jointly, married_filing_separately, head_of_household, or qualifying_surviving_spouse. Any other string is an unrecognized filing status and fails with invalid_input naming the field, which is the product contract for this landing: never guess single, never invent a table. On success the response echoes income rounded to cents and the canonical filing_status, reports tax_year 2018 (the first year the 2017 Act brackets applied), returns tax as two-decimal money, reports marginal_rate_percent on the last dollar, reports effective_rate_percent as tax divided by income, names the jurisdiction United States federal, and restates the formula. Pricing is a flat $0.002 per successful request with unit item.
Where a trump tax calculator earns its keep
Personal-finance apps and notebook scripts that need a deterministic 2017 TCJA tax oracle can pin eighty thousand dollars single to a known tax, a joint return at one hundred fifty thousand to another, and a deliberately bogus status such as partnership to the hard invalid_input path. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap. Round-trip checks are easy: recompute the stacked brackets by hand, confirm the published tax within two-decimal rounding, then confirm that tax divided by income matches effective_rate_percent at the published $0.002 automation rate.
Integration use cases
Payroll estimates and golden tests
Compensation tools and QA suites pin known taxable incomes to a deterministic trump tax figure, and reject unrecognized statuses such as partnership with invalid_input.