Job titles do not tell you the level

Salary by words in the job title · snapshot 2026-10-26 · 8,049 postings with a range

2,504postings with 'senior'
$185,791…their median
3,825postings with no level word
$193,500…their median

Here is a result that looks like a data bug and is not: over this whole dataset, postings whose title contains "senior" have a lower median than postings whose title contains no level word at all — $185,791 against $193,500. The same inversion appears inside technical roles ($195,500 vs $243,000).

Level word in titlePostingsMedianp75
junior143$100,811$124,605
mid3,825$193,500$264,500
senior2,504$185,791$216,104
staff+1,577$241,800$284,762

Two things produce it. The word "senior" is applied to a much wider band of work than it was a decade ago — a senior support specialist and a senior staff engineer both match the regex — and the unlabelled bucket is not junior. It is full of titles like "Member of Technical Staff", "Software Engineer II" and "Forward Deployed Engineer" at AI labs where no level adjective means a senior band by market default. Titles are a labelling convention, not a compensation structure.

The ladder inside technical roles

Level wordPostingsMedianp25p75
junior14$132,000$68,619$150,000
mid1,091$243,000$188,641$320,000
senior810$195,500$170,000$224,000
staff+652$255,787$219,500$308,700

Restricted to engineering and data/ML, the ladder is monotonic except at the "senior" step, where the naming problem survives ($195,500 for senior words against $243,000 for none). If you want a defensible level signal from this data, use the company page and the range overlap, not the adjective.

Related: role families ranked · the dataset.

A longer read: One company, one $75,500 gap between role families on dev.to.