Skip to content
Methodology · updated Aug 2026

How we measure what India earns

Every number on this site is a percentile of real, disclosed compensation records, never an average, never a survey result and never an estimate. This page explains where the data comes from, how each figure is computed and what we refuse to publish.

Where the data comes from

Figures come from Flexiple's India talent graph: 97.9M professional profiles covering skills, job titles, cities and experience. Salary figures use only the subset of profiles that carry a disclosed annual CTC, well under 1 in 100. Every record is a real figure attached to a real profile, published raw with no adjustment, weighting or modelling.

How the numbers are computed

For each cut (a subject, optionally narrowed by city or seniority) we take every disclosed CTC in that exact cell and read percentiles directly from the sorted records: the median (p50), the typical band (p25 to p75) and the top of market (p90). Percentiles are never pooled or averaged across cells; a number either comes straight from the records in its cell or it is not published.

The 25-record rule

A cell publishes a number only once at least 25 people in that exact cut have disclosed pay. Below that threshold the page still renders, but the figure is withheld and the page asks search engines not to index it. We never backfill a thin cell with an estimate, a model or a neighbouring cell's number: withheld, never fabricated. Cells with nobody in them are not pages at all.

Cities

A city earns a page per subject, not globally: Bengaluru, Chennai, Delhi, Hyderabad, Mumbai lead because that is where the records are, and more city cells open as they clear the 25-record gate. Each city figure is measured on profiles located in that city, so a city page and the national page beside it can disagree, and that disagreement is the finding.

Seniority bands

Three experience bands partition every subject: Entry level (0–3 yrs), Mid-level (3–6 yrs), Senior (6+ yrs). The senior band is open-ended, so a 15-year veteran counts in it rather than falling outside the window. Each band is its own cell with its own 25-record gate.

Freshness

The whole graph is re-probed monthly: every pool, every percentile, every city and seniority cell. Each page carries the date of the probe cycle it was built from, currently Aug 2026, so a figure is never older than its label claims.

What this data is not

  • No scraped job listings: advertised ranges describe openings, not what people earn.
  • No self-reported survey panels: nobody types a salary into a form on this site.
  • No estimates or modelled figures: a cell under 25 records is withheld, not predicted.
  • No individual data: every published figure is an aggregate over 25 or more people, and nothing on any page can be traced back to one person.

Limitations

Disclosure is the binding constraint: because well under 1% of profiles disclose pay, many real markets sit under the 25-record gate and stay withheld. Experience and compensation are stated by professionals on their own profiles, so individual records can be wrong even though percentiles over 25+ records are robust to outliers. Where a known measurement gap exists, we say so on the page rather than smooth over it.

Questions about a specific figure? Every salary page has a cite button that captures the exact cut, sample size and date.

Entry level React Developer · Srikalahasti1 yr exp
Currency
Period