A self-contained, single-file web tool to benchmark total compensation across countries — including fixed salary, variable pay, and equity — against market medians adjusted for role, seniority, tenure, and job family.
No build step. No dependencies. No backend required. Drop index.html anywhere and it works.
- Home market benchmarking — compares your Fixed, Variable, and Equity against estimated market benchmarks for your country, role, and experience level
- Component breakdown — shows whether each comp element (fixed / variable / equity) is below, within, or above market, with the full calculation explained
- Multi-country mobility advisor — for each target country, analyses that country's own salary benchmarks and cost-of-living (via PPP when available) to recommend whether a move makes financial sense
- No direct currency translation — target country analysis uses local market medians, not a conversion of your home salary
- Explainable scoring — every recommendation shows the arithmetic: factors applied, ratios computed, points awarded
- Auto currency mapping — detects currency from country selection (180+ countries)
- Alias resolution — accepts UAE, USA, UK, South Korea, etc.
- Demo fallback — works fully offline with realistic demo data if no backend is connected
- PPP / COL integration — optionally connects to a
/api/pppendpoint for purchasing-power-parity-based affordability signals - Fully responsive — works on desktop and mobile
# Just open index.html in your browser
open index.html # macOS
start index.html # Windows
xdg-open index.html # Linux- Fork or push this repo to GitHub
- Go to Settings → Pages
- Set source to
mainbranch, root/ - Your tool will be live at
https://<username>.github.io/<repo-name>/
Upload index.html to Netlify, Vercel, Cloudflare Pages, or any web server. No configuration needed.
The tool works in demo mode without a backend. To connect real benchmark data, implement two endpoints:
Request body:
{
"home": {
"country": "India",
"city": "Bengaluru",
"currency": "INR"
},
"role": {
"jobFamily": "Engineering",
"jobTitle": "Senior Engineer",
"industry": "Technology",
"yearsExperience": 10
},
"comp": {
"fixed": 4000000,
"variable": 800000,
"equity": 500000,
"total": 5300000
},
"targets": ["United States", "Singapore", "United Arab Emirates"]
}Expected response:
{
"homeMarket": {
"medianTotal": 4800000,
"medianFixed": 2976000,
"medianVariable": 1104000,
"medianEquity": 720000,
"currency": "INR",
"adjustedForExperience": true,
"sources": ["Mercer 2024", "Aon Radford"]
},
"targets": [
{
"country": "United States",
"currency": "USD",
"medianTotal": 160000,
"medianFixed": 120000,
"medianVariable": 28000,
"medianEquity": 12000,
"adjustedForExperience": true,
"sources": ["Levels.fyi", "Radford"]
}
],
"notes": "Data as of Q1 2025"
}Note:
medianFixed,medianVariable,medianEquityare optional — the tool estimates them from market-norm splits (62% / 23% / 15%) if not provided.
Used to compute purchasing-power-parity signals for the Mobility Advisor.
Expected response:
{
"ok": true,
"country": "India",
"ppp": 24.5,
"fx": 83.5,
"pli": 0.29
}Where ppp = LCU per international dollar (World Bank PPP conversion factor). If this endpoint is absent, the tool degrades gracefully with directional-only mobility recommendations.
The raw market median is adjusted using three multiplicative factors:
Adjusted Median = Base Median × Experience Factor × Title/Seniority Factor × Job Family Factor
| Factor | Example values |
|---|---|
| Experience (0–35 yrs) | 0.70 → 1.45 (curve flattens after ~15 yrs) |
| Title / Seniority | Intern 0.55 · Junior 0.80 · Senior 1.15 · Director 1.55 · C-suite 2.10 |
| Job Family | Engineering 1.08 · R&D 1.06 · IT 1.05 · Marketing 0.98 · Support 0.92 |
| Your comp vs median | Label |
|---|---|
| < 90% | Below market |
| 90% – 110% | Within market |
| > 110% | Above market |
The advisor scores a move out of ~100 points across three signals:
| Signal | Max points | Source |
|---|---|---|
| Home market positioning | ±18 | Are you below/at/above home median? |
| Real pay uplift (PPP-normalized) | ±28 | Target median vs your current in Int$ |
| Affordability / COL delta | ±22 | Annual salary ÷ estimated annual COL |
Score → Recommendation:
- ≥ 35 → ✅ Logical move
- 10–34 →
⚠️ Potentially logical - < 10 → ❌ Not logical (pay/COL)
Target country medians are the target country's own benchmark, not a currency conversion of your current salary.
comp-benchmark/
├── index.html # Complete self-contained tool (HTML + CSS + JS)
├── README.md # This file
├── LICENSE # MIT
└── .github/
└── workflows/
└── deploy.yml # Auto-deploy to GitHub Pages on push to main
The included workflow (.github/workflows/deploy.yml) automatically publishes the tool to GitHub Pages whenever you push to main. No manual steps needed after the first setup.
To activate:
- Push this repo to GitHub
- Go to Settings → Pages → Source → select
GitHub Actions - Every push to
mainwill redeploy automatically
Since everything is in one HTML file, customisation is straightforward:
| What | Where in index.html |
|---|---|
| Add countries | COUNTRIES array (line ~666) |
| Add currency mappings | CURRENCY_BY_COUNTRY object (line ~759) |
| Adjust title/seniority multipliers | titleLevelFactor() function |
| Adjust job family multipliers | FAMILY_FACTOR object |
| Add industries to dropdown | <select id="industry"> in HTML |
| Change positioning thresholds (90/110%) | positionTag() function |
| Change mobility score thresholds | mobilityDecision() function |
| Change demo market base medians | BASE_MEDIAN_BY_COUNTRY object |
| Field | Required | Notes |
|---|---|---|
| Home Country | ✅ | Supports aliases (UAE, USA, UK…) |
| Job Family | ✅ | 11 families available |
| Job Title | ✅ | Free text — drives seniority detection |
| Industry | ✅ | 10 industries available |
| Fixed Salary | ✅ | Annual, in home currency |
| Variable Salary | ✅ | Annual bonus/incentive |
| Equity (Annualized) | ✅ | Enter 0 if no equity |
| Tenure (Years) | ✅ | Used in experience curve |
| Target Countries | Optional | Add for mobility analysis |
| Home City | Optional | Passed to backend if connected |
MIT — free to use, modify, and deploy commercially.