Hourly to salary converter
At 25 an hour, 40 hours a week for 52 weeks, you earn 52,000 a year and 1,000 a week. Enter your wage, weekly hours and weeks worked to compare an hourly job post fairly with a salaried listing. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Hourly wage
- 25
- Hours worked per week
- 40
- Weeks worked per year
- 52
- Weekly pay
- 1,000
- Annual salary
- 52,000
- Monthly pay
- 4,333.3333333333
- Precision
- 10
This hourly to salary converter multiplies your hourly wage by the hours you work each week and the weeks you work each year to produce an equivalent annual salary, plus weekly pay and a nominal monthly figure. The engine is pure finite arithmetic with no network calls, no sampling, and no date-dependent shortcuts. Small checks you may already know include twenty-five currency units per hour at forty hours for fifty-two weeks yielding fifty-two thousand annually, and eighteen point five at thirty hours for fifty weeks yielding twenty-seven thousand seven hundred fifty.
Where hourly-to-salary thinking fits in offers, freelancing, and software
People meet hourly-to-salary conversion when a job post lists twenty-eight dollars an hour and another lists fifty-eight thousand a year, when a contractor needs to see what a project rate means if the engagement fills a full week for most of the year, or when a student budget worksheet asks for annual income from a part-time hourly role. Recruiters and candidates can pre-check whether an hourly package at forty hours and fifty-two weeks lands near a salaried peer listing without opaque spreadsheet macros.
Freelancers can model optimistic and conservative week counts to bound yearly income from a fixed billable rate. Contest and homework practice often needs a fast, offline source of products so solutions can be checked under time pressure. Product and education tools use the conversion when a learner types a rate and a schedule and the UI must show clean weekly, monthly, and annual figures side by side.
What you can do with it
Compare hourly offers to salaried listings
Annualize an hourly wage at your real weekly hours and weeks worked so you can compare it fairly with yearly salary posts.
Freelance and contractor year planning
Translate a billable hourly rate into annual and monthly income under full-time, part-time, or seasonal week counts.
FAQ
What does the hourly to salary converter cost?
It is free in your browser on this page.
What happens if an input is negative?
Hourly wage, weekly hours, and weeks per year must all be non-negative in this calculator.
Does this include taxes, overtime, or benefits?
No. It only annualizes the stated hourly rate for the given schedule. Use dedicated payroll or tax tools for take-home pay and overtime stacks.
Why are results rounded to a precision?
Default precision is 10 decimal places; you can set precision from 0 to 15.
How many weeks a year should I enter?
Enter the weeks you are actually paid for: 52 for a full year, 50 if you take two weeks of unpaid leave. Freelancers can run an optimistic and a conservative week count to see the range of yearly income from the same rate.
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/life/hourly-to-salary \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"hourly_wage":25,"weekly_hours":40,"weeks_per_year":52}'const res = await fetch("https://api.kit.forhosting.com/life/hourly-to-salary", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"hourly_wage": 25,
"weekly_hours": 40,
"weeks_per_year": 52
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/hourly-to-salary",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"hourly_wage": 25,
"weekly_hours": 40,
"weeks_per_year": 52
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/hourly-to-salary", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"hourly_wage":25,"weekly_hours":40,"weeks_per_year":52}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"hourly_wage":25,"weekly_hours":40,"weeks_per_year":52}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/hourly-to-salary", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"hourly_wage": 25,
"weekly_hours": 40,
"weeks_per_year": 52
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.hourly_to_salary",
"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_value | 1000000000000000 |
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
Use it free in the browser for everyday decisions, or call the API at $0.002 per successful request when you need reproducible annual-salary numbers in spreadsheets, offer letters, or teaching demos.
What hourly-to-salary conversion means and what the response contains
Hourly-to-salary conversion answers a simple question: if you earn a given amount for each hour worked, how much do you make over a full year under a stated weekly schedule and annual week count. Zero values are allowed and simply yield zero or partial pay figures when one factor is zero. The core product is annual_salary equals hourly_wage times weekly_hours times weeks_per_year. From the same inputs the calculator also reports weekly_pay as the product of wage and weekly hours, and monthly_pay as annual salary divided by twelve so you can compare against listings that quote monthly figures. That three-factor product is the transparent model used in offer comparisons, freelance planning, and classroom budgeting problems: it does not invent overtime multipliers, paid-leave credits, tax withholdings, employer benefits, or local labor-law adjustments. This calculator returns the normalized hourly_wage, weekly_hours, and weeks_per_year you submitted, the derived weekly_pay, annual_salary, and monthly_pay, a method tag hourly_times_hours_times_weeks, a formula string that documents the three identities, and the precision used for rounding. There is no currency conversion, no inflation path, and no payroll calendar of biweekly or semi-monthly periods: the engine either multiplies three finite non-negative numbers inside the supported range or rejects the input with invalid_input. Rejected cases include missing hourly_wage, weekly_hours, or weeks_per_year, non-finite values, magnitudes above the documented ceiling, and any negative wage, hours, or weeks, because a negative pay rate or negative schedule does not define a meaningful annual salary in this model.
How wage, hours, and weeks are read and how the product stays reproducible
Common schedule choices include forty hours and fifty-two weeks for a full-time year, or fewer weeks when unpaid leave or seasonal shutdowns reduce the working year. Optional leading plus signs and scientific notation on numeric strings are allowed when they parse as finite decimals; embedded spaces, hex prefixes, and non-numeric tokens are rejected with a clear message so a bad cell does not become a wrong annual figure. Zero for any factor is valid and yields a zero annual salary when that factor is zero. The preferred fields are hourly_wage for the pay rate per hour, weekly_hours for hours worked in a typical week, and weeks_per_year for how many weeks you actually work in a year, but aliases hourly, wage, rate, pay_rate, and hour_rate for the wage, hours, hours_per_week, week_hours, and hrs_week for weekly hours, and weeks, weeks_worked, annual_weeks, and year_weeks for the year count are accepted so spreadsheets, query strings, and typed forms can reuse the same contract. Negative hourly_wage, weekly_hours, or weeks_per_year is rejected with invalid_input so the model stays a non-negative pay calculator rather than a signed ledger. An optional precision field, with aliases decimals and dp, chooses how many decimal places to expose for all numeric outputs, defaulting to ten and capped at fifteen so JSON goldens stay stable. Pair the free browser run on this page with the priced API when you need the identical mathematical result inside an automated pipeline without re-implementing the annualization yourself.
Where hourly-to-salary thinking fits in offers, freelancing, and software
Developers call the same contract from scripts to seed deterministic test vectors for compensation calculators, to normalize user-entered wage and schedule before offer-comparison demos, or to satisfy product-challenge statements that demand an annual_salary field rather than a hand-waved estimate. On this page the work runs entirely in your browser; through the API each successful lookup costs $0.002, failed validation is not charged, and nothing is stored after the response returns. That split — free interactive exploration and a priced, identical API — matches the rest of the KIT tier-A catalog and lets you move from a classroom demo to an automated pipeline without changing the mathematical result. Pair it with cost-per-use or rule-of-seventy-two tools when you need related everyday money math, and with other life endpoints when you are building a small lab of free, deterministic personal-finance helpers.
Integration use cases
Worksheets and test fixtures
Generate reproducible annual_salary figures for classroom budgets, offer-letter tools, property tests, and CI assertions.
Technical questions
How is annual salary defined?
annual_salary = hourly_wage × weekly_hours × weeks_per_year. Weekly pay is wage × hours; monthly_pay is annual_salary / 12.