ForHosting KIT · Finance & money

Salary calculator

Turn a pay figure from one period into any other: an annual 60000 is 5000 a month, and an hourly rate becomes a yearly figure using 40 hours and 52 weeks unless you set your own. 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
Amount
60,000
Source period or zone
Annual
Target period or zone
Monthly
You get
Result
5,000
Hours per week
40
Weeks per year
52

Converts a pay amount from one period to another across seven periods (hourly, daily, weekly, biweekly, semimonthly, monthly, annual).

Every conversion goes through a yearly figure

Whatever period you start from, the amount is first turned into a yearly figure and then divided back into the period you want. An hourly rate is multiplied by hours per week and weeks per year; a daily rate counts a day as eight hours; a weekly amount is multiplied by weeks per year, a biweekly one by half of them, a semimonthly one by 24 and a monthly one by 12. An annual 60000 therefore becomes 5000 a month. Because both steps use the same factors, a round trip returns the starting amount before rounding.

Comparing job offers on one scale

Job offers are quoted in different ways: an hourly rate for one role, a monthly figure for another, a yearly salary for a third. Converting them all to the same period shows which pays more. Only hourly, daily, weekly and biweekly amounts depend on the hours and weeks you enter, 40 and 52 by default. Semimonthly and monthly pay follow the calendar and ignore them, and an annual figure passes through unchanged. For a part-time role or a year with 50 working weeks, adjust those two numbers first.

Job offer comparison

Convert an hourly rate to annual, or an annual offer to monthly take-home basis, to compare roles on one scale.

Do hours and weeks affect every conversion?

No. They apply to hourly, daily, weekly and biweekly. semimonthly (24/yr) and monthly (12/yr) are calendar based, and annual is a pass-through.

What is the difference between biweekly and semimonthly?

Biweekly means every two weeks, so the yearly figure is the amount times half your weeks per year. Semimonthly means twice a month, always 24 payments a year, whatever hours or weeks you enter.

How many hours does the calculator count in a day?

Eight. A daily rate is turned into a yearly figure by multiplying it by your hours per week divided by eight, and then by your weeks per year.

How do I convert a part-time salary?

Change the hours per week, or the weeks per year if the job runs for 50 weeks, before converting. Both must be greater than zero; the defaults are 40 hours and 52 weeks.

Do I get the same amount if I convert back?

Yes. Both steps use the same factors, so converting a value to another period and back reproduces the original before rounding. You choose how many decimals the result shows.

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/dev/salary-calculator

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/dev/salary-calculator \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount":60000,"from":"annual","to":"monthly"}'
{
  "amount": 60000,
  "from": "annual",
  "to": "monthly"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.salary_calculator",
  "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 normalizes the amount to an annual figure, then re-expresses it in the target period using your hours_per_week and weeks_per_year.

Annualize, then re-express

Conversion is a two-step pivot through an annual salary. Because both steps use identical factors, converting a value out and back reproduces the original before rounding. First the input amount is turned into an annual figure based on its from period: hourly multiplies by hours_per_week and weeks_per_year; daily multiplies by (hours_per_week / 8) and weeks_per_year, treating a day as eight hours; weekly multiplies by weeks_per_year; biweekly multiplies by (weeks_per_year / 2); semimonthly multiplies by 24; monthly multiplies by 12; annual is unchanged. That annual amount is then divided by the same factors for the to period. So $60000 annual to monthly divides by 12 and yields 5000.

Hours, weeks and the fields each period uses

hours_per_week defaults to 40 and weeks_per_year defaults to 52, and they only affect periods tied to hours or weeks: hourly, daily, weekly and biweekly. semimonthly (24 pay periods a year) and monthly (12) are calendar based and ignore your hours and weeks entirely, while annual is a pass-through. Both amount and the from and to periods are required; amount must be a finite number strictly greater than zero. hours_per_week and weeks_per_year must each be finite and greater than zero, so you can model part-time schedules or 50-week years. The response echoes amount, from, to, the effective hours_per_week and weeks_per_year, and the numeric result.

Rounding, ranges and typed errors

A non-object input is rejected before any math runs. Invalid input throws a typed invalid_input error naming the field: a non-positive or non-finite amount, a from or to that is not one of the seven allowed periods, a non-positive hours_per_week or weeks_per_year, or a decimals value outside 0..6.

Contractor and freelance quoting

Turn a target annual income into an hourly rate using your real hours_per_week and weeks_per_year, including partial years.

Payroll and budgeting tools

Normalize mixed pay frequencies to a common period inside HR software or personal budget dashboards via the API.

How is a work day defined?

The daily period assumes an eight-hour day: it uses (hours_per_week / 8) days per week times weeks_per_year to annualize.

What are the default hours and weeks?

hours_per_week defaults to 40 and weeks_per_year defaults to 52; both must be finite and greater than zero if you override them.

What input is rejected?

A typed invalid_input error for amount not greater than zero, an unknown from/to period, non-positive hours or weeks, or decimals outside 0..6.

Is it free and what does the API cost?

The browser widget is free; the API uses prepaid KIT balance from $0.002 and failed tasks are not charged.

Read the full KIT documentation →