Technical writing
BLS JOLTS: The Job Openings and Labor Turnover Data Behind Every Fed Labor Market Statement
Every time the Federal Reserve chair describes the labor market as “tight” or “cooling,” there is a good chance the statement rests on a single monthly survey: the Bureau of Labor Statistics Job Openings and Labor Turnover Survey, universally abbreviated JOLTS. Released once a month with a roughly five-week lag, JOLTS provides the only federal data on how many unfilled jobs exist, how many workers are being hired, and — critically — how many are quitting voluntarily. That quit count is the closest thing the US has to a real-time confidence index for workers.
What JOLTS Is and Where It Comes From
JOLTS was launched in December 2000, partly at the Federal Reserve's urging, to fill a gap that the nonfarm payroll survey left unaddressed. The monthly payroll survey (Current Employment Statistics, or CES) tells you the net change in jobs — the economy added 180,000 jobs last month — but it says nothing about the underlying gross flows that produced that net number. Two economies can both show 180,000 net new jobs: one through vigorous hiring offset by moderate separations, another through depressed hiring with minimal separations. JOLTS separates those pictures.
The survey samples approximately 21,000 business establishments each month, drawn from BLS's own Quarterly Census of Employment and Wages (QCEW) establishment frame. Each sampled establishment reports job openings, hires, and separations for the reference month. The sample is stratified by industry and geography. Because QCEW covers roughly 97% of all UI-covered employment, the JOLTS frame is essentially the universe of US employers. BLS publishes results at the national level and for nine Census divisions, plus breakdowns by major NAICS industry sector.
The Four Core JOLTS Metrics
JOLTS measures four distinct labor market flows, each with its own count and a corresponding rate (expressed as a percentage of total employment). Understanding the definitions matters because each metric has specific inclusions and exclusions that affect interpretation.
Job openings count unfilled positions that, as of the last business day of the month, meet three conditions: the position has a specific start date within the next 30 days; at least one employee would be hired to fill it; and active recruiting is underway outside the establishment. That third condition — active external recruiting — is what distinguishes JOLTS openings from an internal vacancy or a perpetually posted position that management has quietly frozen. JOLTS is measuring actual labor demand, not administrative postings.
This definition also explains why JOLTS openings diverge from job posting counts from private platforms such as Indeed or LinkedIn. Private platform counts aggregate every active listing, including positions that have already been filled and not taken down, roles posted simultaneously on multiple boards (counted as one position in JOLTS, many times on Indeed), and positions that are recruiting passively rather than actively. Over long stretches the two series correlate reasonably well, but they routinely diverge at turning points — precisely the moments when the signal matters most.
Hires count all additions to the establishment's payroll during the reference month, including new hires, rehired former employees, on-call and temporary workers placed back on payroll, and transfers from other locations of the same firm. Part-time and full-time positions are both counted. Hires capture the realized execution of labor demand: openings are the intention; hires are the outcome.
Separations are the counterpart to hires — all workers who left the payroll during the month. BLS breaks separations into three components. Quits are voluntary resignations: the worker chose to leave. Layoffs and discharges are involuntary: the employer ended the relationship, including both permanent layoffs and temporary furloughs. Other separations cover retirements, deaths, disabilities, transfers out to other establishments, and separations for any other reason. Over a full business cycle, total separations should approximately equal total hires, because net employment change is the difference between the two.
The Quit Rate: The Fed's Preferred Tightness Signal
Among the four core metrics, the quit rate commands the most attention from policymakers and economists. The logic is straightforward: workers quit voluntarily when they are confident they can find another job — or when they already have one lined up. A high quit rate therefore signals strong labor demand from the worker's perspective. It is also associated with wage-seeking behavior: workers who quit for new jobs typically receive larger wage increases than those who stay put, so a high quit rate is a leading indicator of wage inflation.
The quit rate remained in a narrow band of roughly 1.7% to 2.3% for most of the 2010s expansion. It collapsed to 1.4% in April 2020 as workers became reluctant to leave secure employment during the pandemic shock, then rebounded explosively as labor markets tightened in the reopening. The quit rate peaked at 3.0% in April 2022 — the highest reading in the JOLTS series' history — the period widely described as the “Great Resignation.” Federal Reserve Chair Jerome Powell cited the quit rate repeatedly in 2021 and 2022 FOMC press conferences as evidence that the labor market was “clearly unsustainably hot.” The series declined steadily through 2023 and into 2024, returning toward pre-pandemic norms of around 2.3%, which the Fed interpreted as evidence that the labor market was normalizing without a recession-level labor market deterioration.
Layoffs and Labor Hoarding
The layoff and discharge rate tells the inverse story from the quit rate: rising layoffs signal that employers are shedding workers, which indicates softening demand. What made the 2021–2024 labor market particularly unusual was that the layoff rate remained historically low even as the Federal Reserve raised rates at the fastest pace since the 1980s. The layoff rate ranged between 0.9% and 1.2% through most of 2022 and 2023, well below the 1.4% to 2.0% range seen during the pre-pandemic expansion of 2017–2019.
Economists coined the term “labor hoarding” to describe the phenomenon. Employers who had struggled to hire workers during the 2021–2022 labor shortage were reluctant to lay off workers in response to slowing demand, fearing they would be unable to rehire when conditions improved. The result was a labor market where job openings fell substantially — from roughly 12 million in early 2022 to under 9 million by late 2023 — while unemployment remained low, because the decline in openings was not accompanied by a corresponding increase in layoffs. This dynamic allowed the Fed to maintain its “soft landing” narrative: reducing labor market tightness by cooling demand (falling openings) without inducing significant job losses (stable layoffs).
The Beveridge Curve and Matching Efficiency
The Beveridge Curve is an economic relationship that plots the job openings rate on the vertical axis against the unemployment rate on the horizontal axis. In a stable labor market, the two move in opposite directions along a downward-sloping curve: when labor demand is strong, openings are high and unemployment is low; during recessions, openings fall and unemployment rises. The curve captures this inverse relationship across the business cycle.
What matters for policy analysis is not just the position on the curve but shifts of the curve itself. An outward (rightward) shift — more openings for a given level of unemployment — implies that the labor market is matching workers to jobs less efficiently than before. Workers who are unemployed are not being connected to the openings that exist. This can happen for structural reasons (skills mismatch, geographic mismatch, information barriers) or cyclical ones (workers holding out for better matches when demand is strong).
The post-COVID Beveridge Curve shifted dramatically outward in 2021 and 2022. At the peak in early 2022, job openings reached approximately 11.9 million while unemployment stood at around 5.9 million workers — a ratio of roughly two openings per unemployed person, far above the roughly one-to-one ratio that had prevailed before the pandemic. Fed economists, including those at the Federal Reserve Bank of San Francisco and the Board of Governors, published analyses arguing that this outward shift meant the labor market could cool substantially (openings falling back toward the curve) before unemployment needed to rise significantly. That argument — sometimes called the “vacancies channel” of disinflation — became the intellectual foundation for the soft landing thesis. Whether the curve has fully renormalized or remains permanently shifted continues to be debated as of 2025.
The Job Openings-to-Unemployed Ratio
Fed Chair Powell popularized the job openings-to-unemployed ratio as a summary statistic for labor market tightness, citing it in testimony and press conferences throughout 2022 and 2023. The ratio compares JOLTS job openings (a flow-adjusted stock of unfilled demand) to the count of unemployed workers from the CPS (a stock of available supply). When the ratio is above 1.0, there are more openings than unemployed workers in aggregate, implying that even if every unemployed worker filled one opening, vacancies would remain. During the peak in early 2022, the ratio reached approximately 2.0 — historically unprecedented — before declining toward 1.0 to 1.2 by mid-2024.
The ratio has limitations as a tightness measure. It compares an aggregate count of openings to an aggregate count of unemployed workers without accounting for the geographic or occupational distribution of either. A ratio of 1.5 nationally may mask regions where openings vastly exceed available workers alongside regions where the reverse is true. Nevertheless, as a single-number summary of aggregate demand versus supply in the labor market, it has proved durable in Fed communication.
JOLTS by Industry
BLS publishes JOLTS data broken down by major NAICS sectors: total private, mining and logging, construction, manufacturing, trade/transportation/utilities, information, financial activities, professional and business services, education and health services, leisure and hospitality, federal government, and state and local government. The industry breakdown reveals that aggregate JOLTS figures often mask divergent sector dynamics.
Healthcare and social assistance consistently posts among the highest job opening rates of any major sector, reflecting structural long-run demand driven by an aging population and chronic shortages of licensed clinical workers. This sector never fully recovered its pre-pandemic employment level before reopening and continued to post elevated openings even as aggregate openings declined. Leisure and hospitality, by contrast, showed the most extreme pandemic dynamics: the sector lost roughly 8 million workers in March and April 2020, saw its layoff rate spike to levels that dwarfed the rest of the economy, and then experienced a surge in openings as consumers returned to restaurants, hotels, and entertainment venues faster than workers chose to return to the sector's historically low-wage positions.
Information sector openings — concentrated in software, internet publishing, and data processing — surged during the pandemic-era technology boom and then fell sharply in 2022 and 2023 as large technology firms conducted significant layoff rounds. Tracking JOLTS information-sector layoffs alongside weekly UI claims from the Department of Labor provided a real-time window into the technology sector downturn that the aggregate JOLTS numbers obscured.
JOLTS vs. Private Job Posting Data
The proliferation of high-frequency private labor market data — particularly the Indeed Hiring Lab's weekly job posting indices and LinkedIn's Economic Graph data — has created both a complement and a competitor to JOLTS. Private platform data offers several practical advantages: it is published weekly or even daily, covers millions of postings (far larger than JOLTS's 21,000 establishment sample), and is often available broken down by occupation, remote-work status, and required experience level.
The fundamental methodological difference is what is being counted. JOLTS counts unfilled positions that meet active-recruiting criteria on the last business day of the month. Indeed counts distinct job postings that are live on the platform on a given day, regardless of whether those positions are being actively filled, have already been filled, or represent multiple postings for a single role. Research has found that a meaningful fraction of Indeed listings at any point in time correspond to positions that have already been filled. This creates an upward level bias in platform posting counts relative to JOLTS, and it can cause the two series to diverge at turning points when employers slow down in taking down filled listings.
In practice, researchers use both. JOLTS is the authoritative federal benchmark — the series the Fed cites in official communications — while private platform data provides higher-frequency updates between monthly JOLTS releases and finer occupational cuts that JOLTS does not support.
How to Access JOLTS Data
BLS publishes JOLTS through its public website at bls.gov/jlt and via the BLS public data API at api.bls.gov. The monthly release typically occurs approximately five weeks after the reference month, on a Tuesday morning. Historical JOLTS data begins in December 2000.
For most quantitative work, the most convenient access route is the Federal Reserve Bank of St. Louis's FRED database, which hosts the full JOLTS series in clean, ready-to-use format with a well-documented API. Key FRED series identifiers include: JTSJOL (job openings level, seasonally adjusted, thousands), JTSJOR (job openings rate), JTSHIL (hires level), JTSQUL (quits level), JTSQUR (quit rate), JTSLAL (layoffs and discharges level), JTSLAL (layoffs rate), and JTSQULHEA (quits, healthcare sector). The “seasonally adjusted” versions of each series are almost always preferred for time-series analysis, as JOLTS exhibits strong seasonal patterns (retail hiring in November–December, construction in spring, etc.) that dominate cyclical signals in unadjusted data.
Python: Plotting the Beveridge Curve and Quit Rate from FRED
The following script uses the fredapi Python package to pull JOLTS series directly from FRED, construct the Beveridge Curve, and plot the quit rate over time. Install dependencies with pip install fredapi pandas matplotlib and obtain a free FRED API key at fred.stlouisfed.org/docs/api/api_key.html.
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from fredapi import Fred
# Replace with your FRED API key (free at fred.stlouisfed.org)
fred = Fred(api_key="YOUR_FRED_API_KEY")
# Pull JOLTS series (seasonally adjusted, thousands)
job_openings = fred.get_series("JTSJOL") # Job openings level
hires = fred.get_series("JTSHIL") # Hires level
quits = fred.get_series("JTSQUL") # Quits level
layoffs = fred.get_series("JTSLAL") # Layoffs and discharges level
quit_rate = fred.get_series("JTSQUR") # Quit rate (%)
# Unemployment level for the Beveridge Curve denominator
unemployed = fred.get_series("UNEMPLOY") # Thousands, SA
# Compute job openings rate: openings / (openings + nonfarm payroll employment)
# BLS publishes the openings rate directly as JTSJOR; use it here for convenience
openings_rate = fred.get_series("JTSJOR") # Job openings rate (%)
unemp_rate = fred.get_series("UNRATE") # Unemployment rate (%)
# Align all monthly series on a common date index
bev = pd.DataFrame({
"openings_rate": openings_rate,
"unemp_rate": unemp_rate,
"quit_rate": quit_rate,
}).dropna()
# Label three eras for the Beveridge Curve
pre_covid = bev["2001-01":"2020-01"]
covid_shock = bev["2020-02":"2020-12"]
recovery = bev["2021-01":]
fig, axes = plt.subplots(1, 2, figsize=(14, 6))
# --- Left panel: Beveridge Curve ---
ax = axes[0]
ax.scatter(pre_covid["unemp_rate"], pre_covid["openings_rate"],
s=12, alpha=0.6, color="#0b4a8f", label="Pre-pandemic (2001-2020)")
ax.scatter(covid_shock["unemp_rate"], covid_shock["openings_rate"],
s=30, alpha=0.9, color="#c0392b", label="COVID shock (2020)")
ax.scatter(recovery["unemp_rate"], recovery["openings_rate"],
s=12, alpha=0.6, color="#27ae60", label="Recovery (2021-present)")
ax.set_xlabel("Unemployment Rate (%)")
ax.set_ylabel("Job Openings Rate (%)")
ax.set_title("Beveridge Curve: Job Openings vs. Unemployment")
ax.legend(fontsize=8)
ax.grid(True, alpha=0.3)
# Annotate the peak openings point
peak_idx = bev["openings_rate"].idxmax()
peak_row = bev.loc[peak_idx]
ax.annotate(
"Peak openings
" + str(peak_idx)[:7],
xy=(peak_row["unemp_rate"], peak_row["openings_rate"]),
xytext=(peak_row["unemp_rate"] + 0.8, peak_row["openings_rate"] - 0.5),
arrowprops=dict(arrowstyle="->", color="black"),
fontsize=8,
)
# --- Right panel: Quit rate over time ---
ax2 = axes[1]
ax2.plot(quit_rate.index, quit_rate.values, color="#0b4a8f", linewidth=1.2)
ax2.axhline(y=quit_rate["2015-01":"2020-01"].mean(), color="gray",
linestyle="--", linewidth=0.8, label="Pre-pandemic avg")
ax2.set_title("JOLTS Quit Rate (%), 2001-present")
ax2.set_ylabel("Quit Rate (%)")
ax2.set_xlabel("Date")
ax2.legend(fontsize=8)
ax2.grid(True, alpha=0.3)
# Annotate the April 2022 peak
peak_quit_idx = quit_rate.idxmax()
peak_quit_val = quit_rate.max()
ax2.annotate(
"Peak 3.0%
" + str(peak_quit_idx)[:7],
xy=(peak_quit_idx, peak_quit_val),
xytext=(pd.Timestamp("2019-01-01"), peak_quit_val - 0.3),
arrowprops=dict(arrowstyle="->", color="black"),
fontsize=8,
)
plt.tight_layout()
plt.savefig("jolts_beveridge_and_quits.png", dpi=150, bbox_inches="tight")
print("Saved jolts_beveridge_and_quits.png")
# Print a summary table of the latest month
latest = bev.iloc[-1]
print("\nLatest JOLTS snapshot (" + str(bev.index[-1])[:10] + "):")
print(" Job openings rate: " + str(round(latest["openings_rate"], 1)) + "%")
print(" Unemployment rate: " + str(round(latest["unemp_rate"], 1)) + "%")
print(" Quit rate: " + str(round(latest["quit_rate"], 1)) + "%")
The script produces two panels. The left panel plots the Beveridge Curve with pre-pandemic, COVID-shock, and recovery arcs color-coded to show the outward shift and partial renormalization. The right panel plots the quit rate time series with the pre-pandemic average annotated as a reference line, making the Great Resignation peak visible at a glance. The summary table printed at the end gives the most recent monthly snapshot across all three indicators.
To extend this analysis, the FRED series JTSQULHEA (healthcare quits) and JTSQULLAH (leisure/hospitality quits) can be added to compare sector-specific quit dynamics against the aggregate, revealing that healthcare's quit rate remained elevated long after the aggregate normalized.
Limitations and Practical Cautions
The five-week publication lag is the most operationally significant limitation. Financial markets and policy analysts typically consume JOLTS at release, but the data is already five weeks stale. The ADP National Employment Report and weekly UI claims data fill in the higher-frequency gap between releases, though neither directly measures job openings or quits.
JOLTS is a sample survey of 21,000 establishments, not a census. At the national level, sampling error is modest: BLS reports a coefficient of variation below 3% for the headline job openings figure. At the industry-division level, sampling error is substantially larger. Treat single-month changes in narrow industry-region combinations with caution, and prefer three-month moving averages for any sector-level analysis.
The JOLTS job openings definition requires active external recruitment. This means the series can miss “phantom openings” — positions employers have budgeted but are not actively filling — and can lag when employers slow recruiting operations before formally eliminating positions. At turning points, the series may understate the speed of deterioration if employers quietly pause recruiting before conducting layoffs.
Finally, JOLTS is not a job-level dataset. It measures establishment-level aggregates: a single establishment's total hires, total quits, and total openings. It cannot tell you whether a software engineer quit or a cashier quit, or whether the open position is entry-level or senior. For occupational granularity, the BLS Occupational Employment and Wage Statistics (OEWS) program is the appropriate complement, though OEWS measures employment levels and wages rather than flows.
JOLTS measures labor market flow dynamics; the BLS Quarterly Census of Employment and Wages (QCEW) provides the underlying employment stock at the county-industry level that anchors those flows. The two programs share an establishment frame and are designed to complement each other. See BLS QCEW: The County-Level Employment and Wages Dataset Behind Every Local Economic Analysis.
Interpreting quit-rate pressure on wages requires a benchmark for what workers are actually being paid. The BLS Occupational Employment and Wage Statistics program publishes annual occupational wage distributions for every metropolitan area. See BLS OEWS: Occupational Employment and Wage Statistics.
The Federal Reserve's response to JOLTS data — adjusting the federal funds rate based on labor market slack — flows through the banking system and appears in weekly bank balance sheet data. The Fed H.8 Statistical Release tracks assets and liabilities of commercial banks in real time. See Federal Reserve H.8: Bank Balance Sheets and the Weekly Pulse of Credit.