The monthly jobs report, read sector by sector
A chart-first read of the US Employment Situation: payrolls by industry, slack, participation, education, wages, and jobless claims, from live FRED data.
The Employment Situation report lands on the first Friday of most months and gets reduced to a single number by lunchtime. That number is real, but it is one line of a report that also covers eleven industry sectors, six measures of unemployment, participation by age and education, wages, hours, and job openings. This page is the rest of it.
Real data, not a synthetic sample. Every figure is pulled from FRED by a script in this repo, committed as static JSON, and rendered client-side as dependency-free SVG. Nothing here is a screenshot, so re-running the script and rebuilding updates every chart on the page at once.
Monthly series cover August 2026. Weekly claims run through August 29, 2026. Source: FRED, from the Bureau of Labor Statistics, the Employment and Training Administration, and ADP.
- Jobs added, August 2026
- +162,000
- 3-month average
- +71,333
- Unemployment (U-3)
- 4.1%
- Openings per job seeker
- 1.05
- Real wage growth
- -0.22 pts
- Participation, prime age
- 83.4%
The headline number
The latest month came in at +162,000 jobs. The three-month average is +71,333 and the twelve-month average +50,250, which is the more useful pair: a single print is noisy and gets revised in each of the two months after publication.
Two surveys sit behind this report. The payroll count comes from the establishment survey, which asks businesses how many people are on payroll. The unemployment rate comes from the household survey, which asks people whether they are working. Different samples, different methods, and they disagree regularly. Neither is the correction to the other.
Which sectors are hiring
Change in payroll employment by industry
The eleven BLS supersectors. Together they partition total nonfarm payrolls, so the latest column sums to the headline number.
| Sector | ||||
|---|---|---|---|---|
| Mining & Logging | +3,000 | -667 | +2,000 | 609,000 |
| Construction | +22,000 | +14,333 | +120,000 | 8,359,000 |
| Manufacturing | +16,000 | +14,333 | +23,000 | 12,638,000 |
| Trade & Transport | +16,000 | +18,000 | +35,000 | 28,778,000 |
| Information | -23,000 | -12,333 | -115,000 | 2,745,000 |
| Financial | -11,000 | -6,667 | -99,000 | 9,086,000 |
| Prof. & Business | +10,000 | +20,333 | +152,000 | 22,527,000 |
| Education & Health | +29,000 | +30,333 | +539,000 | 27,974,000 |
| Leisure & Hospitality | +62,000 | -4,333 | +131,000 | 17,001,000 |
| Other Services | +3,000 | +1,333 | +27,000 | 6,035,000 |
| Government | +35,000 | -3,333 | -212,000 | 23,323,000 |
FRED (Federal Reserve Bank of St. Louis): USMINE, USCONS, MANEMP, USTPU, USINFO, USFIRE, USPBS, USEHS, USLAH, USSERV, USGOVT. Authoring agency: U.S. Bureau of Labor Statistics. Data through August 2026.
The eleven supersectors partition total nonfarm payrolls, so the latest column sums to the headline number. The generator asserts that on every run and fails rather than publishing a table that quietly disagrees with the chart above it.
This month 9 of eleven sectors added jobs and
2 shed them. The largest gain was Leisure & Hospitality at +62,000; the largest loss was Information at -23,000.
Read the three-month average column when a single month looks strange. A sector can post an outlier on a strike, a seasonal-adjustment artifact, or one large employer, and the twelve-month total is what survives all three.
Eleven lines is deliberately dense. Use the legend to switch sectors off: the useful reading is which lines sit persistently below zero, not any single month.
A second opinion
Change in ADP private payrolls by sector
ADP counts private payrolls from its own processing records, weekly, on a different method from the BLS establishment survey. Government is absent by construction. Where the two disagree, the disagreement is the interesting part.
| Sector | ||||
|---|---|---|---|---|
| Natural Resources & Mining | -4,000 | -1,250 | -55,000 | 1,623,000 |
| Manufacturing | +7,000 | -1,750 | -69,000 | 12,469,000 |
| Trade & Transport | +0 | +750 | +15,000 | 29,029,000 |
| Information | +0 | +250 | +13,000 | 2,815,000 |
| Financial | +3,000 | +2,750 | +48,000 | 8,736,000 |
| Prof. & Business | +2,000 | +3,500 | +51,000 | 22,215,000 |
| Education & Health | +14,000 | +3,250 | +579,000 | 26,667,000 |
| Leisure & Hospitality | -5,000 | -2,500 | +24,000 | 16,390,000 |
| Other Services | +2,000 | +2,250 | +75,000 | 4,699,000 |
FRED (Federal Reserve Bank of St. Louis): ADPWINDNRMINNERSA, ADPWINDMANNERSA, ADPWINDTTUNERSA, ADPWINDINFONERSA, ADPWINDFINNERSA, ADPWINDPROBUSNERSA, ADPWINDEDHLTNERSA, ADPWINDLSHPNERSA, ADPWINDOTHSRVNERSA. Authoring agency: ADP. Data through July 18, 2026.
ADP counts private payrolls from its own payroll-processing records, weekly, on a different method from the BLS establishment survey. Government is absent by construction. It is not a preview of the BLS number, and where the two disagree the disagreement is the interesting part rather than something to resolve.
How much slack is left
The gap between U-3 and U-6 is the labor-market weakness the headline rate does not count: discouraged workers, and people working part time who want full-time work. It widens before U-3 moves in most downturns.
Above the reference line there is more than one posted opening for every job seeker. That is historically unusual and it is what gives workers pricing power.
Quits is a confidence measure, since people resign into a job they believe exists. Layoffs is the series that moves when something actually breaks, and it tends to stay flat until it does not.
Who is in the labor force
The headline participation rate has fallen since 2000 largely because the population is aging. The prime-age line strips that out, and it is the one that answers whether working-age people are returning to work.
The four education lines move together but at very different levels, and the gap widens in every downturn. Recessions are not distributed evenly across educational attainment.
Wages against prices
The gap between the two lines is real wage growth. Nominal wage gains that trail inflation are a pay cut in purchasing terms, which is why the earnings number on its own is not enough. Average hourly earnings are also sensitive to composition: when low-wage sectors shed jobs the average rises without anyone getting a raise.
Early warning
Claims are weekly, so they turn well before the monthly payroll number. Initial claims count new separations; continued claims count how hard it is to find the next job. Continued claims rising while initial claims stay flat is the hiring-freeze signature.
The Sahm rule compares the three-month average unemployment rate against its low over the prior year. Readings at or above the marked threshold have coincided with the start of every recession since 1970, though the rule describes a pattern rather than causing one.
How this page is built
The pipeline is four steps, and it is the same shape I would use for any recurring external-data report.
- Pull.
pnpm gen:jobsfetches roughly forty series from FRED's open CSV endpoint. No API key, so the script runs anywhere. - Derive. Levels are fetched raw. Every derived view, the monthly change, the rolling averages, the twelve-month totals, the openings ratio, is computed in the generator as a small pure function rather than pulled pre-transformed. That keeps the arithmetic in one reviewable place.
- Check. The generator refuses to write output if the eleven supersectors stop summing to the headline payroll change. A wrong series ID or a drifted scale factor fails the run instead of shipping a plausible-looking table.
- Commit and render. The JSON is committed, imported at build time, and rendered as inline SVG. No chart library and no runtime data fetch, which keeps the page fast and the content-security policy tight.
Weekly series are the detail that decides the shape of step one. Jobless claims and ADP publish weekly, so observations have to be keyed by full date. The existing generator for the economic dashboards on this site keys by month, which is correct for its monthly series and would silently discard four observations in five here. That is why this post has a generator of its own rather than an extra flag on that one.
One caveat worth stating plainly, because it is the kind of thing that quietly goes wrong: the date on this page is the newest observation, not the date the script last ran. A run date always looks current, which is exactly what makes it the wrong number to publish.