cityparity

How cityparity calculates cost of living and equivalent salary

Updated July 2026 · the same engine that runs the interactive calculator

cityparity's headline number is the salary you would need in city B to keep the same net cash you keep in city A. It is solved, not looked up: the tool works out your net cash at home, then searches for the gross salary abroad that lands you in the same place after taxes, childcare, healthcare, and the rest of the social safety net. This page walks through exactly how that number is computed, what goes into it, and where it stops.

The standard cost-of-living calculator tells you whether a city is cheaper or more expensive than another, based mostly on rent and groceries. That is the easy half of the question, and it is almost never what people actually want to know. The harder half is the social safety net, and nobody puts it in dollars. US childcare averages around $1,200 a month per kid; in Germany it is capped at a small fraction of that. US health insurance premiums plus deductibles plus out-of-pocket can exceed $20,000 a year for a family; in most of Europe the equivalent is functionally zero. The US average is 11 paid vacation days; Portugal's statutory minimum is 22. US FMLA gives 12 weeks of unpaid parental leave; Norway gives 49 weeks at full pay. Each of those is real money that an ordinary cost-of-living comparison ignores.

How the headline number is solved

The equivalent salary comes from a search, not a formula. The tool computes your net cash in the source city (take-home pay minus living costs, plus any government benefits), then finds the gross salary in the target city that produces the same net cash. It does this by bisection: guess a salary, run the full tax-and-cost stack for the target city, check whether the result overshoots or undershoots, and narrow in until the two sides match within a few hundred dollars. Everything is computed in the target city's own currency, so an exchange-rate swing does not quietly distort the comparison. We match net cash on purpose, because net cash is what actually lands in your account after the country has taken its taxes and handed back its benefits.

  1. Compute net cash at home. Gross salary minus income tax and payroll, minus living costs (housing, childcare net of benefits, healthcare, transit, food, travel home), plus government benefits.
  2. Guess a gross salary abroad. A candidate number in the target city's own currency, which the search will refine.
  3. Run the full target stack on the guess. Real progressive brackets and payroll, then city-median living costs and benefits, to see what net cash that guess leaves.
  4. Narrow in by bisection. Overshoot, lower the guess; undershoot, raise it. Repeat until target net cash equals source net cash within a few hundred dollars.
  5. Report the matched gross. That salary is the equivalent. It is a modeling result, not a promise that such an offer exists.

Taxes

Tax calculation uses each country's actual progressive bracket structure plus payroll contributions: Social Security and Medicare in the US, National Insurance in the UK, Trygdeavgift in Norway, Krankenversicherung in Germany, and so on. State and local tax stacks where it applies; flat-tax regimes get a simpler treatment. We do not model itemized deductions or pension contribution quirks beyond the basic retirement contribution percentage. Those move the result a few percent in either direction but do not change the headline answer. Inbound and expat tax regimes (the Netherlands 30% ruling, Spain's Beckham Law, Italy's impatriati) are modeled honestly: the ones that genuinely lower a normal salary's tax reduce the figure, and the ones that do not are flagged as not changing it.

Cost of living, childcare, and healthcare

Cost-of-living uses city-median values: rent or own (0 to 5 bedrooms), monthly grocery and dining baselines scaled by a lifestyle multiplier, transit (car-dependent or transit-only), discretionary spend, travel back to your origin city, and property tax if you own. Childcare uses city-specific monthly daycare and after-school costs scaled by kid ages, with government child allowances subtracted where they exist (Norway, Sweden, Germany, France, and the UK all have meaningful per-child benefits). Healthcare distinguishes universal-coverage countries from US-style premium-plus-deductible systems, because the cost variance matters as much as the average. A bad year in the US private system is significantly worse than a bad year on the NHS, Krankenkasse, or Forsakringskassan.

One honest caveat on consumption taxes

European city prices already have VAT baked into the sticker price: what you see on a Berlin grocery shelf or an Amsterdam menu is what you pay, tax included. US prices work the other way. The tag says $4.99, then state and local sales tax gets added at the register, anywhere from 0% in Oregon or Delaware to over 9% in parts of California. Our lifestyle spending figures (groceries, dining, discretionary, transit) are calibrated to what residents actually pay each month in each city, so the consumption tax is already folded into both sides of the comparison. We just do not break it out as its own line item the way we do for income tax.

Currency conversion

Currency conversion is live, fetched from a free exchange-rate API with a 24-hour cache and a hardcoded fallback when the API is unreachable. The rate badge at the top of the calculator shows which mode is active. Because the solve happens in the target city's currency, the exchange rate only ever converts the final answer for display, so it cannot distort the underlying comparison.

What we leave out

Weather, language, time zone from family, cuisine, and visa complexity all matter, sometimes more than the financials. We do not try to price them. Use the tool for the financial picture and your own judgment for the rest.

RSU income is counted on the source side only. The default assumption is that you will leave your current employer when you relocate, which means the grant does not follow you. If you will keep the same employer, set RSU to $0 on the input or treat the comparison as directional.

A few honest caveats on the numbers themselves. For countries that tax spouses separately (Norway, Sweden, Denmark, Ireland, Finland), the tool currently runs household income through a single progressive ladder, which slightly overstates the bill for two-earner couples; that is on the fix list. Every figure is nominal, in the data's last-updated year, with no inflation adjustment. We do not price one-time moving costs (visas, shipping, the realtor on both ends) because those sit in their own budget, not your monthly run-rate. And accuracy scales with how much you tell us: five inputs gets a directional answer, sixteen or more gets a precise one. The confidence label at the top of the calculator says which you are looking at.

Sources and freshness

Every numeric input has a citation and a last-updated date. Hover any row in the Breakdown view to see them. Tax brackets come from each country's tax authority. Median rents come from local rental indices (Zillow, ImmoScout, Bostadsformedlingen, and equivalents). Vacation and parental leave figures come from BLS Employee Benefits Surveys for the US and OECD employment data for everywhere else. Childcare costs come from government reports where available, with private compilers used to fill gaps. We update annually because most of the underlying data refreshes annually. The data badge at the top of the calculator shows the year range across the active comparison; if you see a date more than a year old, treat the result as directional.

Why this exists

The original reason: somebody we knew got an offer in Oslo, a 30% pay cut on paper, and was nervous about it. Once we did the math properly, accounting for state-covered childcare, healthcare, and parental leave that the US offer was never going to match, the Oslo number came out equivalent or better depending on the family-size assumption. We wanted that math to be transparent, defensible, and not buried behind a premium tier or a signup form. If a number looks wrong, push back through the contact page and we will take another look.

Related reading

Common questions

How does cityparity calculate an equivalent salary?

It matches net cash, not gross. The tool computes the net cash you keep at home, then searches by bisection for the gross salary abroad that produces the same net cash, running the full tax-and-cost stack on each guess until the two sides match within a few hundred dollars, all in the target city's currency.

Why match net cash instead of gross salaries?

Gross is the one number that does not survive the border. Two countries tax, subsidize, and charge for daily life differently, so the same gross keeps a different share once income tax, childcare, and healthcare come out. Net cash is what lands in your account after taxes and benefits, so it is the honest thing to hold equal.

Does it include taxes, childcare, and healthcare?

Yes. Income tax uses each country's real progressive brackets plus payroll contributions. Childcare uses city daycare costs minus per-child government benefits. Healthcare separates universal-coverage systems from US-style premium-plus-deductible plans. Those three lines usually decide the comparison.

How current is the data?

Every input carries a source and a last-updated date, refreshed roughly annually. Tax brackets come from each country's tax authority, rents from local rental indices, vacation and leave from BLS and OECD data. Figures are nominal, in the data's last-updated year.

What does it leave out?

Weather, language, distance from family, and visa complexity are not priced. One-time moving costs sit outside the monthly run-rate. RSUs are counted on the source side only. Two-earner couples in separate-filing countries currently run on the conservative side, which is being refined.

Figures come from cityparity's per-city engine, computed from official sources with a per-value audit trail; currency conversions use rates that drift daily. Treat any single number as a strong estimate and run your own inputs.

Run your own two cities through the calculator →