Last time I published what 259 companies' job boards say about pay. Two questions came out of the comments that I could actually answer with the same dataset, so I pulled a fresh snapshot (15,534 de-duplicated postings, 6,826 with a stated annual range) and looked at them.

Short version: on-site engineering roles publish an 11.5% higher midpoint than remote engineering roles at the same companies, and Lever barely publishes pay at all — 9.5% of its postings, versus 53.5% on Ashby.

First: which boards tell you the salary

This is the part I had wrong in my head before measuring. I assumed Ashby was the pay-transparent board because it returns structured salary objects. It is, but only slightly more so than Greenhouse once you read Greenhouse's job descriptions:

Board Postings read With a stated range Rate
Ashby 4,879 2,612 53.5%
Greenhouse 8,933 4,059 45.4%
Lever 1,640 156 9.5%
Workable 83 0 0%

The denominator matters: that is every posting read from the board, not just the ones with pay. So this is a publication rate, not a composition effect.

Two practical consequences:

  • Ashby gives you structured numbers (minValue, maxValue, currencyCode, interval) for half its postings. Cheap and exact.
  • Greenhouse gives you almost as much coverage but as free text inside a 144 MB download of job descriptions. You have to find "the base salary range is 210,000 USD - 310,500 USD" in a wall of marketing copy, and that is where I generated three spectacular parsing bugs last time.
  • Lever is where salary data goes to die. Clean schema, almost nobody uses it.

If you are building a pay dataset and you have to pick one board, pick Ashby. If you need volume, Greenhouse — and budget for the parsing.

Second: the remote gap

Overall, remote postings in this sample have a median midpoint of $191,000 against $211,500 for on-site. That is a 9.7% gap, and the obvious objection is composition: maybe remote postings are concentrated in lower-paying functions.

So I compared remote and on-site within the same role family, requiring at least 60 postings on each side:

Role family Remote median On-site median Gap
other $161,968 $198,000 −18.2%
support / ops $140,600 $170,260 −17.4%
engineering $207,094 $234,000 −11.5%
data / ml $208,437 $226,000 −7.8%
marketing $169,025 $182,750 −7.5%
product $220,000 $230,000 −4.3%
sales $166,500 $156,875 +6.1%

The gap survives controlling for function. It is biggest in support/ops and in the catch-all bucket, solid in engineering, and it reverses for sales — remote sales roles publish 6.1% more, which makes sense if you think of remote sales as covering bigger or more scattered territories.

What I cannot tell you

I can't separate two explanations, and I want to be blunt about it:

  1. The same job pays less when it is remote. Companies discount for location independence.
  2. Remote roles are open to cheaper geographies, so the published range reflects a national or global band rather than a San Francisco one.

Both produce exactly the pattern above. The dataset has a location column, and you could partly untangle it by splitting "remote (US)" from "remote (anywhere)" — but a large share of postings just say "Remote" with no country, so any split I do here would be me assigning geography by vibes. Not doing that.

There is also a smaller caveat: medians mix seniority. A company posting mostly staff-level on-site roles and mostly mid-level remote ones would show this gap without any remote discount existing. I have title, so a title-based seniority regex is the obvious next step, and it is on the list.

The part that is actually useful

If you are negotiating a remote offer, the interesting number is not "what do remote roles pay" — it is what does this company publish for the on-site version of my job. That is a concrete anchor, it comes from the same salary band, and it is a legitimate question: "I noticed the on-site posting for this role has a higher band; is the remote band adjusted for location, and if so, to what?"

In engineering the median difference at these companies is $26,906. That is worth one email.

Get the data

Same free CSV as before, refreshed: 1,459 rows, stratified so all 259 companies appear, CC BY 4.0, no signup:

The remote column is yes/no straight from the board, and role_family is my own regex over the title — so treat the family table as indicative, not as a classification anyone agreed on.

If your own company contradicts the engineering number, I would like to hear it. One counter-example with a real band is worth more than my median.