Remote developers earn more, and so do developers with graduate or professional degrees
Key takeaways for your policy review
- Remote work comes with higher pay in the market. Fully remote developers earn about $12,000 (≈12%) more on average than hybrid developers, and the median remote developer earns about $12,800 more. If you reduce remote options, expect to compete against these higher remote pay levels when hiring and retaining talent.
- The gap holds up under every test we ran. A classic t-test, a version that allows for unequal spread (Welch), a 10,000-sample bootstrap, and a median-based test all point the same way. We are confident the gap is not a fluke of the sample.
- Education level is linked to pay in the US and Canada. Average salaries rise from $160,988 (Bachelor's) to $182,221 (Master's) to $197,701 (Professional). The differences across the three groups are statistically significant, though the gap between Master's and Professional degrees on its own is not clearly established.
- Satisfaction is fairly even across roles. Most job titles average 6 to 8 out of 10, so pay differences between roles are much larger than satisfaction differences.
- These are associations, not proof of cause. Remote workers in the survey are more concentrated in high-paying countries such as the US, and role and seniority also differ between groups. See More views for a country-by-country check.
Workforce snapshot: satisfaction, pay and age
A first look at the full survey (all 20,407 respondents, before any outlier removal) to understand who is in the data and spot anything unusual.
Average job satisfaction by job title
Diagnostic: Most job satisfactions are between a small range of 6 and 8 out of 10, and the outlier is the highest average job, 'Retired', at 10 out of 10.
Satisfaction barely moves across roles. The "Retired" score of 10 comes from a single respondent, so it should be ignored. Support and QA roles sit at the bottom (about 6.0 to 6.6), which may be worth watching for retention.
Mean salary by job title
Diagnostic: The mean salary for Financial analysts or engineers is exceptionally high, suggesting it may include a few high earners, while other jobs have relatively similar averages, except for student who earns less than half of the second lowest earning job title.
Switch to "Median" to see the effect of a few very high earners: the financial analyst average of $501,248 drops to a median of $87,249. Medians give a more realistic picture of a typical salary. Senior leadership and engineering managers earn the most in typical terms.
Annual salary vs. age
To keep the public dashboard free of individual-level records, each respondent is counted into a 1-year × 0.1-log-salary cell; darker cells hold more people. Salary uses a log scale (as in the notebook) because pay is highly right-skewed.
Diagnostic: Most survey respondents are between 18 and 65 years old, with fewer observations between 65 and 100. Values below 10 and above 100 are anomalies and could be data entry errors.
Typical pay climbs sharply from the early 20s (median about $24,000 to $29,000) to the mid-30s (about $93,000), then rises slowly to roughly $100,000 to $117,000 after 45. Both pay and respondent counts change in steps at ages 25, 35, 45 and 55, which suggests age was originally collected in ranges. A handful of impossible ages (1, 3, 9, 126, 151) are data-entry errors and have little influence on the results.
Do remote developers earn more than hybrid developers?
Yes. We compared 7,803 hybrid and 6,933 remote developers using six complementary methods.
Descriptive statistics
Remote developers earn more at the middle and top of the range: the median is $12,796 higher and the 75th percentile is $150,000 vs $116,015. At the bottom (25th percentile) the two groups are almost identical.
Two-sample t-test: manual vs built-in
Step-by-step manual calculation
| Step | Hybrid | Remote |
|---|---|---|
| 1. Sample size, n | 7,803 | 6,933 |
| 2. Mean (USD) | 101,790.28 | 113,861.33 |
| 3. Variance | 1.2059e+11 | 3.4829e+10 |
| 4. Pooled SD (USD) | 283,271.53 | |
| 5. Degrees of freedom | 14,734 | |
| 6. t-value | 2.5819 | |
| 7. p-value (two-tailed) | 0.0098 | |
Formulas used
s_p = √[ ((n_r−1)·var_r + (n_h−1)·var_h) / (n_r + n_h − 2) ] t = (mean_r − mean_h) / ( s_p · √(1/n_r + 1/n_h) ) p = 2 · P(T_df > |t|), df = n_r + n_h − 2 t-value = 2.58192643415008 p-value = 0.009834615719730384 → Reject H0
Comparison with Python's built-in test
| Method | t | p | df | Result |
|---|---|---|---|---|
| Manual (pooled) | 2.5819 | 0.0098 | 14,734 | Reject H₀ |
| scipy, equal_var=True | 2.5819 | 0.0098 | 14734.0 | Reject H₀ |
| Welch, equal_var=False | 2.6675 | 0.0077 | 12242.59 | Reject H₀ |
Discrepancies: none. The manual and built-in results match exactly. Assumptions: the variances are unequal (1.2059e+11 vs 3.4829e+10), so Welch's t-test is better. It gives a slightly smaller p-value but reaches the same conclusion.
The p-value of 0.0098 means that if remote and hybrid developers truly earned the same on average, a gap this large would show up by chance less than 1% of the time. That is below the 5% threshold, so we reject the null hypothesis: there is statistically significant evidence of a difference, with remote workers earning more on average than hybrid workers.
Bootstrapped distributions (10,000 replications)
We re-drew each group 10,000 times (each resample the same size as its group: 7,803 hybrid, 6,933 remote) and recorded the average each time. This shows how much the average could plausibly vary.
Figure A · Bootstrap distributions of mean salary
Figure B · Distribution of difference in mean salary (remote − hybrid)
Figure C · Standardized distribution of difference in mean salary
The two bell curves barely overlap, and the difference curve sits almost entirely above $0: only 0.72% of the 10,000 resamples showed hybrid earning as much as or more than remote. Standardized (difference divided by its standard error), the curve centres at 2.582, matching the t-value of 2.5819.
t-test on bootstrapped data
| Data | t | p | df | Result (α = 0.05) |
|---|---|---|---|---|
| Original sample (Q2b) | 2.5819 | 0.0098 | 14734.0 | Reject H₀ |
| Bootstrapped means | 265.2385 | 0.0000 | 19998.0 | Reject H₀ |
Same conclusion, but the bootstrap p-value is far smaller. That is not extra evidence: the test treats 10,000 resampled averages as if they were 10,000 independent people, which artificially inflates the sample size. The original-sample p-value of 0.0098 is the one to rely on.
95% confidence intervals for the salary gap
| Method | Lower (USD) | Upper (USD) | Includes $0? |
|---|---|---|---|
| Formula-based (t-distribution, original data) | 2,907.05 | 21,235.05 | No |
| Bootstrap (2.5th–97.5th percentile) | 2,482.15 | 20,531.61 | No |
Raw notebook output
Formula-based approach: 2907.053682806223 21235.05467170664 Boostrap approach: [ 2482.15064749 20531.61255668]
Both methods agree that remote developers earn between roughly $2,500 and $21,000 more per year on average. Neither range includes zero, so both reach the same conclusion. The small difference between the two comes from unequal variance and right skew: a few very high earners remain even after removing the top outlier.
Median comparison: Mood's median test vs bootstrapped medians
Mood's median test · share above the overall median ($81,909)
| Contingency table | Hybrid | Remote |
|---|---|---|
| Above median | 3,584 | 3,784 |
| At or below median | 4,219 | 3,149 |
Bootstrapped medians (10,000 each) extra view
Plotted from the same bootstrapped medians used in the notebook's test.
| Test | Statistic | p-value | Result |
|---|---|---|---|
| Mood's median test | χ² = 109.4902 | 1.2672835968463248e-25 | Reject H₀ |
| Bootstrapped medians (t-test, df 19998.0) | t = 820.4392 | 0.0000 | Reject H₀ |
Looking at the typical (median) developer instead of the average, the remote advantage is even clearer: 55% of remote developers earn above the overall median compared with 46% of hybrid developers. Mood's p-value is almost 0, and the p-value from bootstrapping is also 0.0000, mainly due to inflated sample size. Both reject the null hypothesis.
Does a higher degree mean higher pay?
We compared Bachelor's, Master's and Professional degree holders working in the US and Canada using one-way ANOVA (after the $33M outlier was removed).
Descriptive statistics
Each step up in education comes with a higher average and median salary. Note the group sizes: Professional degree holders are the smallest group (301), so their figures are less precise.
One-way ANOVA
Raw notebook output
F-value: 17.496593804540815 p-value: 2.7018236862697174e-08
The p-value is far below 0.05, so we reject the null hypothesis: at least one education group's average salary is statistically different from the others. ANOVA does not say which pairs differ; the bootstrap views below help with that.
Bootstrapped distributions (10,000 replications)
Figure A · Bootstrap distributions of mean salary
Figure B · Pairwise difference in mean salary
Figure C · Standardized pairwise difference
Pairwise bootstrap 95% intervals extra view
2.5th–97.5th percentiles of the same bootstrapped differences shown in Figure B.
Master's holders earn about $21,170 more than Bachelor's holders on average, and Professional holders about $36,728 more; neither range includes $0. Professional vs Master's (+$15,558) is less certain: its range runs from −$7,154 to +$40,828, so the data cannot rule out no difference between those two groups.
ANOVA on bootstrapped data
| Data | F | p | Result (α = 0.05) |
|---|---|---|---|
| Original sample (Q3b) | 17.496593804540815 | 2.7018236862697174e-08 | Reject H₀ |
| Bootstrapped means | 66010.10234082476 | 0.0 | Reject H₀ |
Between the original sample and bootstrapped data, both ANOVAs reject the null hypothesis, but the bootstrapped p-value is lower. As in Part 2, ANOVA treats the bootstrap values as independent observations, which artificially inflates the sample size, so the bootstrap p-value is not as meaningful. Rely on the original-sample result.
Additional context for your policy decision
These views go beyond the commissioned tests. They use the same cleaned data (after removing the $33M outlier) and only aggregated figures.
Salary across all four work arrangements
In-person roles pay the least (median $48,726); flexible "your choice" arrangements sit close to hybrid.
Job satisfaction by work arrangement
Remote (7.31) and fully flexible (7.39) workers report slightly higher satisfaction than hybrid (7.11) and in-person (6.91) workers.
Where in the pay range does the remote premium appear?
The remote premium is concentrated in the upper half: at the 75th and 90th percentiles remote developers earn $34,000 to $38,000 more, while at the 10th percentile hybrid developers actually earn more.
Is the remote premium just a country effect?
Countries with at least 150 respondents in each group. The US contributes the most remote workers (2,189) and pays the most, which inflates the overall remote average. Still, remote developers earn a higher median than hybrid developers within 5 of these 6 countries (India is the exception), so the premium is not only a country effect. In the US and Canada combined, the median is $155,000 remote vs $134,000 hybrid.
How to read these results
- Mean vs median
- The mean is the average; the median is the middle salary. Developer pay is pulled up by a few very high earners, so the median is closer to what a typical developer earns.
- p-value
- The probability of seeing a gap at least this large if there were truly no difference. Below 0.05 we call the result statistically significant.
- 95% confidence interval
- A range that, with 95% confidence, contains the true difference. If it excludes $0, the difference is significant.
- Bootstrap
- Re-drawing the sample with replacement 10,000 times to see how much an average or median would vary from sample to sample.
- Welch's t-test
- A version of the t-test that does not assume both groups have the same spread. Used because hybrid salaries vary more than remote ones.
- Mood's median test
- Checks whether each group has a similar share of people above the overall median. Robust to extreme salaries.
- ANOVA
- Tests whether three or more group averages are all equal. A significant result means at least one differs.
Data: Stack Overflow Developer Survey 2025, cleaned course dataset (rows with missing salary removed). Self-reported salaries converted to USD. One extreme salary ($33,552,715) was removed before Parts 2 and 3. Random seed 22; all figures on this page are reproduced from the analysis notebook. Only aggregated values are embedded in this page; no individual survey responses are published.