A web developer in San Jose-Sunnyvale-Santa Clara has a median wage of $166,670. In San Luis Obispo-Paso Robles the median is $42,530. That is a 3.92-fold difference for the same job title, which is unusually wide even by the standards of a country this large — and it means a national average for this role is close to meaningless.
The top tenth of web developers earn $162,290 or more; the bottom tenth earn under $48,100. That is a 3.37× gap within the same occupation, in the same year. A spread this wide means the job title is not what determines pay — specialisation, employer type, seniority or book of business is. Expect the early years to sit near the bottom of the band rather than the middle, and treat the $92,650 median as a waypoint, not a destination.
The top of the table is spread across several states rather than concentrated in one, which points away from a pure cost-of-living story. Where a role pays 3.92× more in one market than another without a single expensive state dominating, the usual cause is local demand density — a few metros where the industry clusters and employers compete for the same small pool. The web developer concentration table further down shows where that is happening.
| Metropolitan area | Median | Hourly | LQ | Employed |
|---|---|---|---|---|
| San Jose-Sunnyvale-Santa Clara CA | $166,670 | $80.13 | 2.2 | 1,130 |
| San Francisco-Oakland-Fremont CA | $152,450 | $73.29 | 1.33 | 1,420 |
| Washington-Arlington-Alexandria DC-VA-MD-WV | $134,350 | $64.59 | 2.71 | 3,840 |
| Seattle-Tacoma-Bellevue WA | $130,440 | $62.71 | 3.69 | 3,470 |
| Olympia-Lacey-Tumwater WA | $111,560 | $53.64 | 4.89 | 290 |
| Detroit-Warren-Dearborn MI | $108,550 | $52.19 | 1.01 | 870 |
| Boston-Cambridge-Newton MA-NH | $108,520 | $52.17 | 1.19 | 1,450 |
| Baltimore-Columbia-Towson MD | $107,590 | $51.73 | 1.29 | 790 |
| Los Angeles-Long Beach-Anaheim CA | $107,290 | $51.58 | 0.82 | 2,310 |
| Minneapolis-St. Paul-Bloomington MN-WI | $106,890 | $51.39 | 0.91 | 800 |
| Trenton-Princeton NJ | $106,730 | $51.31 | 0.98 | 110 |
| St. Louis MO-IL | $106,360 | $51.14 | 0.82 | 490 |
| Vallejo CA | $106,190 | $51.05 | 0.6 | 40 |
| New York-Newark-Jersey City NY-NJ | $104,820 | $50.39 | 0.98 | 4,200 |
| Provo-Orem-Lehi UT | $103,970 | $49.99 | 3.8 | 520 |
| Virginia Beach-Chesapeake-Norfolk VA-NC | $103,440 | $49.73 | 1.17 | 400 |
| Winchester VA-WV | $102,380 | $49.22 | 1.02 | 30 |
| Charlotte-Concord-Gastonia NC-SC | $101,980 | $49.03 | 0.83 | 510 |
| Maryland nonmetropolitan area | $101,890 | $48.98 | 0.71 | 40 |
| Charlottesville VA | $101,210 | $48.66 | 2.44 | 130 |
| Southern Michigan nonmetropolitan area | $99,920 | $48.04 | 0.51 | 30 |
| Evansville IN | $99,720 | $47.94 | 1.13 | 70 |
| Sacramento-Roseville-Folsom CA | $98,560 | $47.38 | 0.39 | 190 |
| San Diego-Chula Vista-Carlsbad CA | $98,300 | $47.26 | 0.76 | 520 |
| Providence-Warwick RI-MA | $98,140 | $47.18 | 1.27 | 410 |
| Metropolitan area | Median | Hourly | LQ | Employed |
|---|---|---|---|---|
| San Luis Obispo-Paso Robles CA | $42,530 | $20.45 | 1.16 | 60 |
| San Juan-Bayamon-Caguas PR | $47,250 | $22.72 | 0.59 | 190 |
| West South Dakota nonmetropolitan area | $51,100 | $24.57 | 1.63 | 50 |
| East South Dakota nonmetropolitan area | $51,100 | $24.57 | 2.1 | 130 |
| Rapid City SD | $52,600 | $25.29 | 1.81 | 60 |
| Fayetteville-Springdale-Rogers AR | $54,120 | $26.02 | 0.68 | 80 |
| Sioux Falls SD-MN | $54,300 | $26.11 | 1.79 | 140 |
| Daphne-Fairhope-Foley AL | $56,030 | $26.94 | 0.84 | 30 |
| McAllen-Edinburg-Mission TX | $56,070 | $26.96 | 0.39 | 50 |
| Hill Country Region of Texas nonmetropolitan area | $57,050 | $27.43 | 0.74 | 70 |
Morgantown has 8.25× the national concentration of web developers — the densest market in the country for this role, with 250 employed locally. Pay there is $79,190, which does not put it near the top of the pay table. Concentration and compensation are different things — a dense market is easier to get hired in and easier to move around within, but the competition that makes it dense also caps what employers need to offer.
| Metropolitan area | Median | Hourly | LQ | Employed |
|---|---|---|---|---|
| Morgantown WV | $79,190 | $38.07 | 8.25 | 250 |
| Olympia-Lacey-Tumwater WA | $111,560 | $53.64 | 4.89 | 290 |
| Provo-Orem-Lehi UT | $103,970 | $49.99 | 3.8 | 520 |
| Seattle-Tacoma-Bellevue WA | $130,440 | $62.71 | 3.69 | 3,470 |
| Washington-Arlington-Alexandria DC-VA-MD-WV | $134,350 | $64.59 | 2.71 | 3,840 |
| Charlottesville VA | $101,210 | $48.66 | 2.44 | 130 |
| San Jose-Sunnyvale-Santa Clara CA | $166,670 | $80.13 | 2.2 | 1,130 |
| East South Dakota nonmetropolitan area | $51,100 | $24.57 | 2.1 | 130 |
| Rapid City SD | $52,600 | $25.29 | 1.81 | 60 |
| Sioux Falls SD-MN | $54,300 | $26.11 | 1.79 | 140 |
| Lawrence KS | $78,080 | $37.54 | 1.76 | 40 |
| West South Dakota nonmetropolitan area | $51,100 | $24.57 | 1.63 | 50 |
| Metropolitan area | Median | Hourly | LQ | Employed |
|---|---|---|---|---|
| New York-Newark-Jersey City NY-NJ | $104,820 | $50.39 | 0.98 | 4,200 |
| Washington-Arlington-Alexandria DC-VA-MD-WV | $134,350 | $64.59 | 2.71 | 3,840 |
| Seattle-Tacoma-Bellevue WA | $130,440 | $62.71 | 3.69 | 3,470 |
| Chicago-Naperville-Elgin IL-IN | $96,870 | $46.57 | 1.37 | 2,790 |
| Los Angeles-Long Beach-Anaheim CA | $107,290 | $51.58 | 0.82 | 2,310 |
| Dallas-Fort Worth-Arlington TX | $96,740 | $46.51 | 0.91 | 1,660 |
| Boston-Cambridge-Newton MA-NH | $108,520 | $52.17 | 1.19 | 1,450 |
| San Francisco-Oakland-Fremont CA | $152,450 | $73.29 | 1.33 | 1,420 |
| San Jose-Sunnyvale-Santa Clara CA | $166,670 | $80.13 | 2.2 | 1,130 |
| Houston-Pasadena-The Woodlands TX | $89,040 | $42.81 | 0.71 | 1,060 |
| Atlanta-Sandy Springs-Roswell GA | $93,590 | $44.99 | 0.76 | 990 |
| Denver-Aurora-Centennial CO | $92,060 | $44.26 | 1.23 | 900 |
Figures come from the BLS Occupational Employment and Wage Statistics programme, May 2025 release, SOC code 15-1254. OEWS surveys employers, so it reports what is actually paid rather than what job advertisements claim, and it excludes the self-employed. Estimates are published for 169 of 528 metropolitan areas; the remaining 359 had too few survey responses for BLS to publish without risking disclosure, so they are absent here rather than estimated. For a specialised role that is normal. Read the methodology.