Technical writing

BLS JOLTS: The Federal Dataset That Measures Why Workers Quit

· 12 min read· AI Analytics
Federal DataBLSLabor MarketsEconomics

The unemployment rate tells you how many people are out of work. It says nothing about why — whether workers are scarce or plentiful, whether employees are confident enough to quit without another job lined up, or whether employers are posting openings they cannot fill. The Bureau of Labor Statistics' Job Openings and Labor Turnover Survey fills that gap. Published monthly since December 2000, JOLTS tracks the flows through the labor market: how many positions employers are actively recruiting for, how many people were hired, how many quit, how many were laid off, and how many left for other reasons. During the 2021–2022 “Great Resignation,” JOLTS became front-page data. Federal Reserve Chair Jerome Powell cited it in nearly every press conference. It is worth understanding how it is built.

What JOLTS measures and why it differs from the unemployment rate

The unemployment rate, published in the Bureau of Labor Statistics' monthly Current Population Survey, measures the supply side of the labor market: the share of people actively seeking work who cannot find it. A low unemployment rate means few people who want jobs lack them. That is useful, but it is a stock measure — a snapshot of a pool at a point in time.

JOLTS measures flows and demand. Job openings capture what employers want but do not yet have: unfilled positions they are actively recruiting for. Hires capture how many people started jobs during the month. Separations — the umbrella category — capture how many people left jobs, broken into three components: quits (voluntary departures by the worker), layoffs and discharges (involuntary separations initiated by the employer), and other separations (retirements, deaths, transfers to other locations, and disability separations).

The conceptual distinction matters for policy. An economy with low unemployment and high job openings is tight from the employer's perspective: demand for workers exceeds supply. An economy with low unemployment and low openings is tight from the worker's perspective: nearly everyone who wants work has it, but employers are not expanding. The job openings-to-unemployed ratio— total JOLTS openings divided by total CPS unemployed persons — is the single number the Federal Reserve watched most closely from 2021 through 2024. At its 2022 peak, there were roughly 2.0 job openings for every unemployed person, a ratio without precedent in the JOLTS series. That ratio, more than the unemployment rate alone, drove the Fed's assessment that the labor market was unsustainably hot.

Survey design and data structure

JOLTS is an establishment survey. The Bureau of Labor Statistics draws a sample of approximately 16,000 business establishments each month from the universe of employers covered by state unemployment insurance programs. The sample is stratified by state, industry, and size class. Establishments rotate through the sample over time to reduce respondent burden; a typical establishment stays in the survey for 18 months. Response is voluntary but participation rates are high relative to other federal surveys because respondents are businesses rather than households.

Establishments report their counts as of the last business day of the reference month. Job openings are defined precisely: a position must be open on the last business day of the month, have work available to start within 30 days, and be the subject of active recruiting efforts (posting, advertising, or contacting agencies). A position that exists in a budget but is not being actively filled does not count. This definition means JOLTS openings are a conservative measure of labor demand: they capture only the actively recruiting subset of unfilled needs.

BLS produces two sets of estimates from the JOLTS sample: seasonally adjusted and not seasonally adjusted. Seasonal adjustment removes predictable calendar effects — the surge in leisure and hospitality hiring in summer, the retail hiring spike in November and December, the education-sector layoff pattern in May and June. For trend analysis and Federal Reserve communication, seasonally adjusted series are standard. For industry-specific research where seasonality is itself interesting (healthcare versus construction versus retail), the unadjusted series preserves the signal.

The series runs back to December 2000, giving roughly 25 years of monthly data by mid-2026. That history spans three recessions (the 2001 dot-com collapse, the 2008 financial crisis, and the 2020 pandemic shock) and two sustained expansions. The full span makes JOLTS the definitive record of how labor market flows behave across the business cycle.

The quits rate as a proxy for worker confidence

Among all the JOLTS series, the quits rate — quits as a percentage of total employment — has attracted the most analytical attention. The logic is straightforward: workers quit voluntarily when they believe they can find a better job. A rising quits rate signals worker confidence in the labor market. A falling quits rate signals either that workers are satisfied where they are or, more often, that they are afraid to leave. During recessions, the quits rate collapses; during tight labor markets, it rises.

The 2021–2022 episode made the quits rate famous. Following the 2020 pandemic shock, quits collapsed to 1.6 percent in April 2020 — workers were not going anywhere during mass lockdowns. As the economy reopened, quits rebounded. By November 2021, the total private quits rate reached 3.0 percent, the highest monthly reading in the JOLTS series to that point, representing approximately 4.5 million workers voluntarily leaving their jobs in a single month. Leisure and hospitality led, with quits rates regularly exceeding 5.0 percent — meaning one in twenty workers in bars, restaurants, and hotels quit every month. The media called it the Great Resignation. Labor economists called it a barometric reading of the most worker-favorable labor market in a generation.

The quits rate normalizes across industry size, which makes cross-industry comparison meaningful. An industry with 5 million workers and 150,000 quits has the same 3.0 percent quits rate as an industry with 500,000 workers and 15,000 quits. Without that normalization, comparing absolute quit counts across industries of different scale produces misleading rankings.

How the Fed uses JOLTS in monetary policy

The Federal Reserve does not set interest rates based on the unemployment rate alone. The Phillips curve — the theoretical relationship between unemployment and inflation — broke down as a reliable policy guide in the 2010s, when unemployment fell below 4.0 percent without generating the wage inflation the model predicted. JOLTS offered an alternative framework.

The job openings-to-unemployed ratio became the Fed's preferred indicator of labor market tightness after 2021 because it captured the demand side more directly than the unemployment rate. Jerome Powell's 2022 and 2023 press conference transcripts contain repeated references to JOLTS: openings needed to “come down substantially” to rebalance supply and demand without requiring unemployment to spike. The Fed's argument was that a reduction in openings, even without a corresponding rise in unemployment, would reduce the wage pressure driving services inflation. This is the “immaculate disinflation” thesis — the idea that the ratio could fall from 2.0 to 1.0 through openings declining rather than unemployment rising.

Between mid-2022 and mid-2023, total job openings fell from roughly 12 million to 9 million. Unemployment rose only modestly. The ratio returned to approximately 1.4 by late 2023. Whether this validated the Fed's framework or reflected other dynamics is still debated in the macroeconomics literature — but the centrality of JOLTS to that debate means the dataset has moved from a specialist labor statistics tool to a core input in central bank communication.

API access and series IDs

The BLS Public Data API provides programmatic access to JOLTS series at no cost, with no registration required for basic access. Registered API keys allow higher request limits (50 series per query versus 25, 500 requests per day versus 25). Registration is free at bls.gov.

JOLTS series IDs follow a structured format. The prefix JTS identifies the survey. The next eight characters encode the industry and area codes; 00000000is the total nonfarm aggregate. The next two characters identify the data element: JO for job openings level, JOR for job openings rate, HI for hires level, HIR for hires rate, QUfor quits level, QUR for quits rate, LD for layoffs and discharges level, LDR for layoffs rate, TS for total separations level, TSR for total separations rate. The final character is the seasonal adjustment flag: S for seasonally adjusted, Ufor unadjusted.

The two most-cited aggregate series are:

  • JTS00000000JOLS — Total nonfarm job openings level, seasonally adjusted
  • JTS00000000QURS — Total nonfarm quits rate, seasonally adjusted

Note: the prompt-specified series IDs JTS00000000JOL and JTS00000000QUR are the unadjusted variants; add S as the final character for the seasonally adjusted versions that appear in most Federal Reserve communications.

Python snippet: querying the BLS API

The BLS v2 API accepts POST requests with a JSON body specifying series IDs and date range. The response is JSON with a nested data structure. The snippet below uses requests and pandas to pull the total job openings level and total quits rate for the full available history and write them to a combined DataFrame.

import requests
import pandas as pd

BLS_API = "https://api.bls.gov/publicAPI/v2/timeseries/data/"

# Series to pull: total job openings (SA) and total quits rate (SA)
SERIES = [
    "JTS00000000JOLS",   # job openings level, seasonally adjusted
    "JTS00000000QURS",   # quits rate, seasonally adjusted
]

def fetch_jolts(series_ids, start_year, end_year, api_key=None):
    """
    Fetch JOLTS series from the BLS v2 API.
    api_key is optional but raises the rate limit from 25 to 500 req/day.
    """
    payload = {
        "seriesid": series_ids,
        "startyear": str(start_year),
        "endyear": str(end_year),
        "calculations": True,
        "annualaverage": False,
    }
    if api_key:
        payload["registrationkey"] = api_key

    resp = requests.post(BLS_API, json=payload, timeout=30)
    resp.raise_for_status()
    return resp.json()

def parse_jolts(response):
    """Convert BLS JSON response to a tidy DataFrame."""
    frames = []
    for series in response["Results"]["series"]:
        sid = series["seriesID"]
        rows = []
        for obs in series["data"]:
            rows.append({
                "series_id": sid,
                "year": int(obs["year"]),
                "period": obs["period"],        # M01 through M12
                "value": float(obs["value"]),
                "footnotes": obs.get("footnotes", []),
            })
        df = pd.DataFrame(rows)
        # Convert period (M01..M12) to month integer
        df["month"] = df["period"].str.lstrip("M").astype(int)
        df["date"] = pd.to_datetime(
            df["year"].astype(str) + "-" + df["month"].astype(str) + "-01"
        )
        frames.append(df)
    return pd.concat(frames, ignore_index=True)

# Pull 2015 through 2025 (BLS API max span is 20 years per request)
raw = fetch_jolts(SERIES, 2005, 2025)
df = parse_jolts(raw)

# Pivot to wide format: one column per series
wide = df.pivot_table(index="date", columns="series_id", values="value")
wide.columns.name = None
wide = wide.sort_index()

print(wide.tail(12).to_string())
print("Peak quits rate:", wide["JTS00000000QURS"].max(),
      "in", wide["JTS00000000QURS"].idxmax().strftime("%Y-%m"))

A few implementation notes. The BLS API caps the date range per request at 20 years; to pull the full JOLTS history back to December 2000, make two requests (2000–2019 and 2020–present) and concatenate. The value field returns as a string in the raw JSON; always cast to float before arithmetic. Provisional data for the most recent two months carries a footnote code P and may be revised in subsequent releases.

Industry breakdown: healthcare, leisure, and professional services

JOLTS publishes separate series for 19 supersectors and selected major industries, aligned to NAICS. The industry-level data reveals patterns that aggregate totals obscure. Three sectors illustrate the range.

Healthcare and social assistance (NAICS 62) is the largest employment sector in the US by establishment count and has structural labor demand that persists through recessions. JOLTS openings in healthcare rarely fall below 1.0 million even during contractions, because demand for care workers is driven by demographics rather than the business cycle. The healthcare quits rate is moderate — typically 1.6 to 2.2 percent — because positions require credentials that limit portability and because nonprofit hospitals and long-term care facilities often have internal promotion ladders that reduce voluntary turnover. The pandemic years were an exception: nurse quits reached record levels in 2021 as burnout and better-paying travel nurse contracts created unusual churn.

Leisure and hospitality (NAICS 71–72)consistently posts the highest quits rate of any sector, often 4.0 to 5.5 percent monthly in expansions. This reflects the sector's structural characteristics: low wages, high seasonality, a large share of part-time and tipped workers, and low barriers to switching between employers within the same occupation. The leisure and hospitality quits rate is the most sensitive barometer of worker confidence in the lower-wage labor market. When leisure and hospitality quits spike, it signals that workers in the bottom wage quartile see better options — and it typically predates wage acceleration in the sector by two to three months, as employers respond with pay increases to reduce turnover.

Professional and business services (NAICS 54–56)has a more muted quits rate — typically 2.2 to 3.0 percent — but a structurally elevated openings level relative to the size of the sector's workforce. The professional services sector contains a wide range of occupations from high-turnover temporary help agencies (NAICS 561) to low-turnover management consulting and accounting firms. Separating these within the JOLTS industry breakdown requires using the more granular industry-level series codes rather than the supersector aggregate.

To build an industry comparison, use the BLS series ID structure to pull multiple industry variants. The eight-character industry code between JTS and the data element encodes the NAICS. Healthcare corresponds to JTS540099900000using BLS's JOLTS industry coding; leisure and hospitality corresponds to JTS700000000000. The BLS Series Report tool at bls.gov/data/ provides a series ID builder that generates the correct codes without requiring memorization of the encoding schema.

How investigative journalists use JOLTS

JOLTS data is most useful in journalism not as a standalone dataset but as a benchmark against which to measure industry or company-specific claims about labor market conditions.

The most common pattern is industry normalization. A company arguing it cannot find workers because of a labor shortage can be assessed against the JOLTS openings rate for its industry sector: is the company's reported difficulty filling positions above or below the sector average? A staffing crisis that tracks the industry average is a sector-wide condition; one that is significantly above the average may reflect company-specific factors (wages, working conditions, management) that the company is choosing to frame as a market problem.

Wage negotiation coverage is another application. When employers argue that wage increases are unsustainable or that workers are demanding too much, the JOLTS quits rate for the relevant sector provides a market-conditions baseline. A sector with quits rates at historical highs is a sector where workers have demonstrated, at scale, that they can and do leave for better opportunities. The quits rate contextualizes whether a wage demand is realistic relative to revealed worker behavior.

Recession indicators are a third use case. JOLTS data tends to lead unemployment claims data in downturns: job openings begin falling before layoffs spike, because employers slow hiring before they accelerate firing. Tracking the month-over-month trend in openings — particularly in cyclical sectors like construction, manufacturing, and professional services — provides early-cycle warning that labor demand is softening before it shows up in the unemployment rate. The BLS releases JOLTS data with a two-month lag (the January survey results are released in March), so journalists covering leading labor market indicators often combine JOLTS with higher-frequency private-sector data (Indeed job postings, ADP payrolls) to triangulate the trend.

Geographic limitations matter for local journalism. JOLTS is a national survey; it does not publish state- or metro-level estimates. For city- or state-level coverage, the relevant supplement is the BLS Local Area Unemployment Statistics (LAUS) program for unemployment rates and the Quarterly Census of Employment and Wages (QCEW) for employer-level counts by county. JOLTS industry breakdowns combined with QCEW geographic employment data can produce a rough approximation of local labor market tightness, though the combination requires care about different reference periods and definitional inconsistencies.

Revisions and seasonal adjustment caveats

JOLTS data is subject to revision. Each monthly release revises the previous two months of data as late survey responses arrive and seasonal adjustment factors are recalculated. Once per year, typically in February, BLS publishes a comprehensive revision that extends back five years and updates the seasonal adjustment factors using the most current data. These annual revisions can shift historical readings by meaningful amounts — the peak 2021–2022 quits rate has been revised slightly in both directions across successive annual benchmarks.

For time-series analysis, always download the full vintage of data at the time of your analysis rather than relying on previously cached pulls. FRED (Federal Reserve Economic Data, fred.stlouisfed.org) maintains the current-vintage JOLTS series and is often the fastest access path for the seasonally adjusted aggregates; the BLS API is required for the full industry breakdown and for unadjusted series that FRED does not carry.


For DOL enforcement data covering the same workers JOLTS tracks as quits: Wage theft by employer: using DOL Wage and Hour Division enforcement data to find labor violations →

For OSHA inspection records covering the workplaces those workers are leaving: OSHA inspection records: how to query 100 years of workplace safety enforcement →

For Census ACS data that denominates industry workforce counts against demographic context: The demographic backbone: using Census ACS data to contextualize every other federal dataset →