ForHosting KIT · Finance & money

Annual income calculator

At 25 an hour, 40 hours a week for 52 weeks, your gross income is 52,000 a year and 1,000 a week. Change the weeks to 48 and you see at once what unpaid time off costs you. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Hourly wage
25
Hours per week
40
Weeks per year
52
You get
Annual income
52,000
Weekly income
1,000

The annual income calculator answers the question behind every job offer, freelance contract and budget spreadsheet: given an hourly wage, how much does that actually add up to over a year? You send three numbers — the hourly wage, the hours worked per week, and the weeks worked per year — and you get back the yearly income, together with the weekly income and an echo of the inputs so the result is auditable. Whether you are comparing a salaried offer against contract work, projecting a household budget, or checking what a part-time schedule really pays, this is the conversion done cleanly in a single request.

What the annual income calculator actually computes

The formula is deliberately transparent: annual income equals hourly wage multiplied by hours worked per week multiplied by weeks worked per year. If you earn 25 an hour, work 40 hours a week and work all 52 weeks of the year, the result is 52,000 a year. The annual income calculator also returns the weekly figure, because weekly pay is often the number people feel day to day, and it echoes your three inputs back rounded so that a stored response is self-documenting.

Nothing is assumed about overtime, bonuses, taxes or unpaid leave — those are separate questions with their own answers. What you get here is gross annual income at a steady schedule, which is the right baseline for almost every comparison: two job offers, a raise negotiation, or the first sanity check before a more detailed take-home-pay estimate. Because the computation is pure arithmetic with no hidden tables or regional rules, the same request always produces the same response, on any machine, at any time.

Choosing the right numbers for weeks and hours

The most common mistake in a mental hourly-to-yearly conversion is assuming 52 weeks when the reality is different. If you take two weeks of unpaid leave, use 50. Seasonal workers might use 30 or fewer.

The hours-per-week input has the same subtlety: a nominal 40-hour contract where you actually bill 35 hours produces a very different annual figure, and part-time schedules make the difference larger still. Run it once with 52 weeks and once with 48 and you can see instantly what unpaid time off costs you per year. Run it with 20 hours against 40 and you have the real difference between part-time and full-time at the same wage.

Fractional values are fully supported: 32.5 hours a week at 18.75 an hour for 48 weeks comes out to 29,250 a year, and the weekly income of 609.38 is returned alongside it.

How validation works and what it costs

Every input must be a finite number, and none of them may be negative. Zero, on the other hand, is accepted everywhere: zero weeks worked simply yields zero annual income, which is the correct answer rather than an error. Values are rounded to two decimal places in the response so results are stable across machines and comparable byte for byte.

The capability runs at the edge with no state kept between requests and nothing stored about your numbers afterwards.

Compare a salaried offer against contract work

Convert the contractor's hourly rate into an annual figure so both offers sit on the same scale before you negotiate.

Model the cost of unpaid time off

Run the calculation at 52 weeks and again at 48 to see exactly what four weeks without pay removes from yearly income.

Project a part-time schedule

Feed in 20 or 25 hours a week at the offered wage to budget a household on reduced hours before accepting the change.

What does it cost?

The same calculation is free to run in your browser on this page.

Is the result gross or net income?

Gross. Taxes, deductions and benefits are not modeled; the result is wage times hours times weeks, the standard baseline for comparisons.

What counts as an invalid input?

Any field that is missing, not a finite number, or negative. The error names the offending field, and rejected requests are never charged.

Can I use fractional hours or wages?

Yes. Values like 32.5 hours or a wage of 18.75 work fine, and results are rounded to two decimal places.

Does it assume 52 weeks per year?

No. You pass the weeks worked per year explicitly, so unpaid leave, seasonal work and part-year contracts are modeled accurately.

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.

POSThttps://api.kit.forhosting.com/fin/annual-income

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.

curl -X POST https://api.kit.forhosting.com/fin/annual-income \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hourly_wage":25,"hours_per_week":40,"weeks_per_year":52}'
{
  "hourly_wage": 25,
  "hours_per_week": 40,
  "weeks_per_year": 52
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.annual_income",
  "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.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

It multiplies wage by hours by weeks, nothing more and nothing less, which is exactly what makes it trustworthy: the same deterministic arithmetic runs free in your browser and behind the paid API, so the number you test with is the number you automate with.

Choosing the right numbers for weeks and hours

This endpoint takes those values exactly as you give them, so the quality of the answer is the quality of your inputs — which is a feature, because it lets you model scenarios explicitly.

How validation works and what it costs

A negative wage, a negative hour count, a missing field, or a string where a number belongs is rejected with a typed invalid_input error that tells you exactly which field failed and why — and a rejected request is never charged, so you can probe and correct freely. Via the API it costs $0.002 per request, and the very same computation runs free in your browser on this page, so you only pay when you fold the conversion into an automated pipeline, a payroll tool, or a comparison engine that calls it thousands of times.

Is anything about my numbers stored?

No. The computation is stateless: the request is processed and discarded, and only the result is returned.

Read the full KIT documentation →