Rent affordability calculator
This rent affordability calculator turns gross monthly income and a chosen rent-to-income percentage into a clear monthly rent ceiling.
Run — free
It also shows the equivalent annual rent budget and the gross income left after paying rent at that limit. The result is a planning estimate rather than a landlord approval or a complete household budget, so you can choose a conservative percentage that reflects your taxes, debts, savings goals, utilities, insurance, and local housing costs.
Choose a limit that fits your whole budget
A rent-to-income percentage is a screening rule, not a universal promise that a home is affordable. Start with your gross monthly income, meaning income before taxes, retirement contributions, health insurance, or other deductions. Then select the largest share you are willing to devote to rent. A familiar benchmark can be a useful starting point, but your own limit may need to be lower when take-home pay is reduced by taxes, debt payments, childcare, transportation, medical costs, or aggressive savings goals. It may be higher only when the rest of the budget genuinely supports that choice. Enter the percentage as a number such as 25 or 30, not as a decimal such as 0.30. The calculator multiplies gross monthly income by that percentage and reports the resulting rent ceiling. Because the currency is not converted, use the same currency when comparing the result with listings, deposits, and other expenses. Treat the answer as a boundary for exploration, then test it against the money that actually reaches your account each month.
Understand what the result includes and excludes
The maximum monthly rent is the amount produced by your selected ratio, while the annual rent budget is that monthly amount multiplied by twelve. Remaining monthly income is gross income minus the calculated rent, so it is not the same as spendable cash after tax. The calculation does not include utilities, renter insurance, parking, internet, application fees, deposits, moving costs, furnishings, or periodic rent increases. If a listing bundles some services into rent, compare its total recurring housing cost with an unbundled alternative rather than comparing rent labels alone. Income that varies through commissions, overtime, tips, or freelance work also deserves care: a stable baseline or a conservative monthly average is generally more useful than a recent peak. The tool deliberately does not infer taxes, family size, credit requirements, or local landlord rules. Those factors vary too much to hide behind one formula. Its purpose is narrower and transparent: apply the exact percentage you chose to the gross monthly income you supplied, with no network calls or external assumptions.
Use the estimate when searching and deciding
Use the monthly ceiling as an initial listing filter, not as a target you must spend. Searching below the ceiling preserves room for utilities and unexpected costs, while searching slightly above it can still be informative if you expect to negotiate or share rent. Before applying, build a take-home-pay budget that includes every recurring housing expense and a realistic allowance for irregular bills. Compare the resulting total with current spending and with the savings buffer you want to maintain. If income is shared, include only amounts that are dependable and available for the household; if income is uncertain, run several scenarios using lower and typical months. You can also compare percentage limits to see how a stricter rule changes the monthly and annual budget. The API costs $0.002 per request, while the same deterministic calculation can run free in the browser. Neither route stores context or decides whether a landlord will approve an application. Approval policies can consider credit, income documentation, guarantors, occupancy, and other criteria that are outside this estimate.
What you can do with it
Set a rental search ceiling
Turn a monthly income and personal ratio limit into a clear maximum price before browsing listings.
Compare conservative scenarios
Run several percentage limits to see how much room each choice leaves in gross monthly income.
Plan for a changing income
Compare rent ceilings based on a stable baseline, a typical month, and a cautious lower-income month.
FAQ
What does the calculator cost?
It runs free in your browser. Each API request costs $0.002.
Should I enter gross or take-home income?
Enter gross monthly income before taxes and deductions. Use a separate take-home budget to confirm that the result fits your actual expenses.
Does the maximum include utilities?
No. The result applies the selected percentage to rent alone. Add utilities, insurance, parking, and other housing costs separately.
Which currency does it use?
Any currency works because no conversion occurs. Income and the rents you compare must use the same currency.
Does this guarantee that a landlord will approve me?
No. Landlord screening may use different ratios and may also consider credit, documentation, guarantors, or other requirements.
How should I handle variable income?
Use a dependable baseline or run several scenarios. A cautious lower-income month can provide a safer ceiling than a recent peak.
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/finance/rent-affordability \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"gross_monthly_income":6000,"rent_to_income_percent":30}'const res = await fetch("https://api.kit.forhosting.com/finance/rent-affordability", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"gross_monthly_income": 6000,
"rent_to_income_percent": 30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/finance/rent-affordability",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"gross_monthly_income": 6000,
"rent_to_income_percent": 30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/finance/rent-affordability", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"gross_monthly_income":6000,"rent_to_income_percent":30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"gross_monthly_income":6000,"rent_to_income_percent":30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/finance/rent-affordability", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"gross_monthly_income": 6000,
"rent_to_income_percent": 30
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "finance.rent_affordability",
"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. |