Technical writing
BLS Employment Cost Index: The Quarterly Wage and Benefits Tracker the Federal Reserve Watches Most Closely
The Bureau of Labor Statistics releases the Employment Cost Index every quarter, approximately thirty days after the reference quarter closes. In most months the number passes without remark. In months when the ECI surprises — as it did in the first quarter of 2024, when private-industry wages and salaries rose faster than forecasters expected — it moves financial markets, reshapes Federal Reserve rate-cut timelines, and dominates the central bank's internal analysis. No other wage statistic receives the same explicit deference from the Fed because no other wage statistic is constructed to remove the single most confounding factor in wage measurement: the changing mix of jobs in the economy.
What the Employment Cost Index Measures
The ECI is a fixed-weight quarterly index of changes in employer costs for employee compensation. Compensation is defined broadly to include both wages and salaries and the full array of employer-paid benefit costs: health insurance premiums, paid leave, retirement contributions, legally required payments such as Social Security and Medicare taxes, workers' compensation insurance, and supplemental pay. The index covers three major worker groups: civilian workers (the broadest headline), private industry workers, and state and local government workers. Federal workers are excluded because their compensation is determined through a separate political process that is not responsive to labor market conditions in the way private wages are.
The fundamental methodological commitment that distinguishes ECI from other wage measures is its fixed employment weights. The BLS holds the occupational and industry composition of employment constant across quarters. This means that if the economy shifts toward higher-paying jobs — if software engineers replace manufacturing workers at scale, for example — that compositional shift does not register as ECI growth. The index answers a more precise question: for the same bundle of jobs, how much more are employers paying? Economists describe this as a fixed-weight or Laspeyres-type index, and it is the same principle used to construct price indices such as the CPI.
Average Hourly Earnings, published monthly as part of the Current Employment Statistics program, does not use fixed weights. AHE is a simple ratio of total wage and salary payments to total hours worked. When the job mix shifts toward higher-paying occupations, AHE rises even if no individual worker received a raise. During the early phases of the pandemic, the opposite occurred: mass layoffs concentrated in low-wage service sectors caused AHE to surge by several percent even as many workers saw their incomes collapse. The ECI did not exhibit that artifact. This is why Fed officials, when asked to explain their preference for ECI, consistently describe it as providing a “cleaner signal” on underlying wage inflation.
The ECI is released quarterly, with the first quarter (January data) typically the most watched because it captures annual wage adjustment cycles: most employer compensation reviews and union contract increases take effect at the beginning of the calendar year. The release schedule runs approximately: Q1 data in late April, Q2 in late July, Q3 in late October, and Q4 in late January of the following year.
The National Compensation Survey: Underlying Data Source
The ECI is produced from the National Compensation Survey, a BLS establishment survey that samples approximately 18,000 private and government establishments across the United States. The NCS uses probability sampling with certainty selection for large establishments — major employers are included in every sample rotation because their compensation practices carry sufficient economic weight to justify certain coverage. Smaller establishments are sampled using stratified random methods, with strata defined by industry, region, and establishment size.
Within each sampled establishment, BLS field economists identify a set of sample jobs using a probability-proportional-to-size procedure that weights positions by employment count. Data collectors then gather detailed compensation information for each sampled position: base wage or salary rates, shift differentials, overtime premiums, incentive pay, and the cost of each benefit provided. Benefit cost data — which require employer plan documents, insurance premium schedules, and actuarial valuations — are significantly more complex to collect than wage rates, and this complexity is reflected in the ECI release lag relative to AHE.
Establishments remain in the NCS sample for multiple years. When a returning field economist visits an establishment, they measure the change in compensation for the same sampled positions. This matched-establishment, matched-occupation design is what enables the fixed-weight measurement: because the same jobs are tracked over time, any compensation change observed reflects genuine within-job pay movement rather than compositional drift across the workforce. The occupation-level weights used to aggregate job-level changes to the all-worker ECI are updated periodically using Census occupational employment data, but the updates occur infrequently, and the index is explicitly designed to hold composition fixed between weight updates.
The NCS also produces the Employer Costs for Employee Compensation, or ECEC, release each quarter. Where ECI measures the rate of change in compensation costs, ECEC measures the level: average employer cost per employee-hour worked, broken down into wages and salaries and each benefit category. The two releases are complementary and draw from the same NCS data.
Key Series and Historical Benchmarks
The most closely followed ECI series are the private-industry wages and salaries index (BLS series ID CIU2020000000000A) and the civilian workers total compensation index (CIU2010000000000A). Analysts typically report the four-quarter change — the year-over-year percent increase — to strip out seasonal patterns in quarterly data.
The post-pandemic labor market tightening produced ECI readings not seen since the 1980s. Private-industry wages and salaries, measured year-over-year, reached approximately 5.7% in mid-2022, the highest reading in the modern ECI series going back to 2001 and consistent with levels last seen in the late Reagan era. Benefit costs, which change more slowly than wages (because health insurance premium renegotiations are annual and pension formulas are stickier than spot wages), peaked somewhat later and at lower rates, running around 4.5–5.0% year-over-year through 2022 and into 2023.
By late 2023, private-industry ECI wage growth had decelerated to approximately 4.2% year-over-year, reflecting the cooling labor market as Federal Reserve rate increases worked through the economy. The Fed's stated comfort level for ECI wage growth, consistent with its 2% PCE inflation target, is approximately 3.5% per year. The 3.5% threshold derives from a simple decomposition: if trend productivity grows at roughly 1.5% per year (the pre-pandemic average), then wages can grow at 3.5% without adding to unit labor costs and without pushing services inflation above the 2% target. When ECI wage growth is running above 3.5%, the arithmetic implies either rising unit labor costs, a squeeze on profit margins, or both.
State and local government workers have exhibited a notably different ECI pattern than private industry. Government wage growth was more compressed during the post-pandemic surge, running roughly 1–1.5 percentage points below private sector rates at the peak, because government compensation is constrained by budget cycles, legislative appropriations, and multi-year union contracts that adjust less rapidly to labor market conditions. By 2023, however, many state and local governments facing severe recruiting difficulties for teachers, nurses, and public safety workers were accelerating pay increases, and the government–private differential narrowed.
The Federal Reserve's Use of ECI
The Federal Reserve's preference for ECI over AHE is explicit and well-documented in FOMC communications. Fed Chair Jerome Powell referenced ECI directly in multiple press conferences during the 2022–2024 tightening cycle, distinguishing it from AHE as a more reliable signal of wage inflation pressure. The FOMC minutes and the Summary of Economic Projections released at the December 2023 meeting cited ECI deceleration as one of the encouraging signs supporting the Fed's tentative pivot toward rate cuts — before the Q1 2024 ECI print upended that timeline.
The Q1 2024 ECI surprise illustrates how a single quarterly release can alter monetary policy expectations. When BLS released the January 2024 Employment Cost Index in late April 2024, private-industry wages and salaries posted a quarterly increase of 1.2% (approximately 4.8% annualized), well above the 0.9% consensus forecast. Financial markets immediately repriced Fed rate cut expectations, pushing the first anticipated cut from June to September. Fed officials cited the ECI print in subsequent public remarks as a reason for caution. This episode confirmed the ECI's status as the highest-weight individual wage indicator in the Fed's reaction function.
The theoretical link from ECI to inflation runs through services prices. Labor costs constitute roughly two-thirds of total business costs in the service sectors that dominate core PCE inflation. When ECI accelerates, service-sector firms face rising input costs and typically respond by raising prices, often with a lag of one to two quarters. Federal Reserve research has documented this transmission empirically: a one-percentage-point increase in ECI wage growth translates, with a two-quarter lag, to roughly 0.4–0.6 percentage points of additional core services inflation. The transmission is not one-for-one because profit margins can absorb some of the cost increase, and because productivity growth can offset higher wages in unit cost terms.
The unit labor cost framework formalizes this relationship. Unit labor costs equal compensation per hour divided by output per hour. If ECI grows at 5% and productivity grows at 1.5%, unit labor costs grow at approximately 3.5% — a pace consistent with moderate services inflation. If productivity is flat or falling, the same 5% ECI growth translates to 5% unit labor cost growth, a clearly inflationary trajectory. This is why Fed officials watch ECI jointly with BLS labor productivity releases: the two series together determine whether wage growth is inflationary, and neither alone is sufficient.
Benefits Breakdown: The ECEC Release
The companion Employer Costs for Employee Compensation release provides the level data that the ECI change index does not. The ECEC shows, for the most recent quarter, average employer compensation cost per hour worked across the full workforce. The breakdown illustrates the composition of total compensation and explains why benefits costs matter for the Fed's analysis.
As of recent ECEC releases, total compensation for private industry workers runs approximately $43–$45 per hour worked. Wages and salaries account for roughly 69% of that total, or approximately $30 per hour. Benefits account for the remaining 31%, or approximately $13–$14 per hour. Within the benefits component, the categories are:
Paid leave (vacation, holiday, sick leave, personal leave): approximately $3.00–$3.50 per hour, representing the single largest voluntary benefit category. The employer cost is measured as the wage rate times the leave hours provided, so paid leave costs rise automatically when wage rates rise even without changes to leave policy.
Supplemental pay (overtime, shift differentials, nonproduction bonuses): approximately $1.20–$1.50 per hour. This category is the most cyclically sensitive benefit component, rising in tight labor markets when employers pay sign-on bonuses and year-end incentives and compressing during downturns.
Insurance (predominantly health insurance, plus life and disability): approximately $3.50–$4.00 per hour, with employer-paid health premiums making up the vast majority. Health insurance is the single largest employer-paid benefit by cost and is notably sticky: premiums are set annually through negotiation with insurers, and employers cannot immediately pass through medical cost inflation the way they can adjust spot wages. Annual premium increases of 6–8% have been common throughout the 2020s, creating persistent upward pressure on total compensation costs even as base wage growth moderates.
Retirement and savings (defined benefit pension contributions, defined contribution plan matches, profit-sharing): approximately $1.50–$2.00 per hour. Defined benefit pension costs are particularly opaque because they depend on actuarial assumptions about investment returns and life expectancy; falling interest rates mechanically inflate required pension contributions even without any change in plan generosity.
Legally required benefits (employer Social Security and Medicare taxes, federal and state unemployment insurance taxes, workers' compensation insurance): approximately $2.80–$3.50 per hour. The FICA employer share is 7.65% of covered wages up to the Social Security wage base, making legally required benefits quasi-proportional to wages up to the cap.
The 31% benefits share of total compensation is a key structural fact in labor economics. It means that the full cost of a wage increase to an employer exceeds the wage increase itself: a $1.00 per hour raise that triggers proportional increases in paid leave, FICA, and retirement contributions may cost $1.20–$1.30 per hour in total. This amplification effect is why ECI total compensation growth and ECI wages-only growth track closely but not identically, and why the Fed watches both components.
BLS API Access and Series IDs
The BLS Public Data API v2 is available at https://api.bls.gov/publicAPI/v2/timeseries/data/. ECI series follow a structured ID format. The general pattern for ECI series is:
CIU[ownership][component][industry][occupation][subcategory][seasonal]
The most commonly used ECI series IDs include:
CIU2010000000000A — Civilian workers, wages and salaries, all industries, all occupations, quarterly percent change (not seasonally adjusted).
CIU2020000000000A — Private industry, wages and salaries, all workers, quarterly percent change. This is the primary series watched by the Fed.
CIU2030000000000A — Private industry, benefits, all workers, quarterly percent change.
CIU2010000000000I — Civilian workers, wages and salaries, index level (2005 = 100), not seasonally adjusted.
Unregistered API access allows retrieval of up to ten years of data per series, up to 25 series per request. Registering a free API key at data.bls.gov/registrationEngine/ increases the limit to 20 years of data and 50 series per request — essential for pulling the full ECI history back to 2001 in a single call.
FRED mirrors selected ECI series with more memorable identifiers. FRED series ECIALLCIV (employment cost index, total compensation, civilian workers) and ECIWAG (employment cost index, wages and salaries, private) are updated shortly after each BLS release and can be accessed via the FRED API or downloaded directly.
Python: Fetch ECI and Compare to Average Hourly Earnings
The following script pulls quarterly ECI private-industry wages and salaries since 2019 from the BLS Public Data API, computes a four-quarter rolling average to smooth within-year volatility, and overlays the monthly Average Hourly Earnings year-over-year growth from the Current Employment Statistics program. The comparison illustrates precisely the composition-shift distortion that makes ECI the Fed's preferred measure: AHE moves erratically when job-mix shifts, while ECI provides a smoother, more interpretable signal of underlying wage pressure.
import requests
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
from datetime import datetime
API_URL = "https://api.bls.gov/publicAPI/v2/timeseries/data/"
# ECI and CES series IDs
# CIU2020000000000A - Private industry, wages and salaries, all workers (quarterly % change)
# CES0500000003 - Total private Average Hourly Earnings (dollars, monthly)
SERIES_ECI = "CIU2020000000000A"
SERIES_AHE = "CES0500000003"
# Replace with your registered BLS API key for higher rate limits:
# https://data.bls.gov/registrationEngine/
BLS_API_KEY = "YOUR_REGISTERED_KEY"
end_year = datetime.now().year
start_year = 2019
headers = {"Content-Type": "application/json"}
payload = {
"seriesid": [SERIES_ECI, SERIES_AHE],
"startyear": str(start_year),
"endyear": str(end_year),
"registrationkey": BLS_API_KEY,
}
resp = requests.post(API_URL, json=payload, headers=headers, timeout=60)
resp.raise_for_status()
data = resp.json()
if data.get("status") != "REQUEST_SUCCEEDED":
raise RuntimeError("BLS API error: " + str(data.get("message", "")))
# Parse ECI quarterly series
eci_rows = []
ahe_rows = []
for series_obj in data["Results"]["series"]:
sid = series_obj["seriesID"]
for obs in series_obj["data"]:
period = obs.get("period", "")
year = obs["year"]
value = float(obs["value"])
if sid == SERIES_ECI and period.startswith("Q"):
quarter_map = {"Q01": "01", "Q02": "04", "Q03": "07", "Q04": "10"}
month = quarter_map.get(period, "01")
eci_rows.append({
"date": pd.Period(year + "-" + month, freq="Q").to_timestamp(),
"eci_pct_change": value,
})
elif sid == SERIES_AHE and period.startswith("M"):
eci_rows # AHE is monthly dollars, convert to YoY pct change below
ahe_rows.append({
"date": pd.to_datetime(year + "-" + period[1:] + "-01"),
"ahe_dollars": value,
})
eci_df = pd.DataFrame(eci_rows).sort_values("date").drop_duplicates("date")
ahe_df = pd.DataFrame(ahe_rows).sort_values("date").drop_duplicates("date")
# Compute AHE year-over-year percent change (monthly)
ahe_df["ahe_yoy"] = ahe_df["ahe_dollars"].pct_change(periods=12) * 100
# Resample AHE to quarterly by taking the last month of each quarter
ahe_q = (
ahe_df.set_index("date")
.resample("QS")
.last()
.reset_index()
.rename(columns={"index": "date"})
)
# Compute 4-quarter rolling average of ECI
eci_df["eci_rolling_4q"] = eci_df["eci_pct_change"].rolling(window=4, min_periods=2).mean()
# Merge for aligned plotting
merged = pd.merge(
eci_df[["date", "eci_rolling_4q"]],
ahe_q[["date", "ahe_yoy"]],
on="date",
how="outer",
).sort_values("date")
# Plot
fig, ax = plt.subplots(figsize=(13, 6))
ax.plot(
merged["date"], merged["eci_rolling_4q"],
color="#0b4a8f", linewidth=2.4, label="ECI Private Wages & Salaries (4Q rolling avg, QoQ %)"
)
ax.plot(
merged["date"], merged["ahe_yoy"],
color="#dc2626", linewidth=1.8, linestyle="--",
label="Average Hourly Earnings YoY % (private, monthly)"
)
ax.axhline(3.5, color="#16a34a", linewidth=1.2, linestyle=":", label="Fed comfort threshold ~3.5%")
ax.axhline(0, color="#6b7280", linewidth=0.7)
ax.yaxis.set_major_formatter(mtick.PercentFormatter(decimals=1))
ax.set_ylabel("Percent Change", fontsize=10)
ax.set_title(
"ECI Private Wages vs. Average Hourly Earnings: 2019 to Present",
fontsize=12, fontweight="bold"
)
ax.legend(fontsize=9, loc="upper left")
ax.grid(axis="y", linestyle=":", alpha=0.4)
fig.tight_layout()
plt.savefig("eci_vs_ahe.png", dpi=150)
plt.show()
print("Chart saved to eci_vs_ahe.png")
The ECI series CIU2020000000000A returns quarterly percent changes — the period-over-period movement in the index — rather than index levels. The four-quarter rolling average smooths the within-year seasonality visible in Q1 prints (which capture year-start pay adjustments) and Q4 prints (which often capture end-of-year bonus cycles). The green reference line at 3.5% marks the Fed's approximate comfort threshold: private-industry ECI wage growth at or below that level is consistent, given trend productivity growth of roughly 1.5% per year, with the 2% PCE inflation target. Periods when ECI tracks persistently above the reference line correspond directly to the Fed's tightening phases.
Interpreting ECI for Economic Analysis
Several interpretive principles apply when working with ECI data. First, the quarterly percent change — not the year-over-year change — is what moves markets on release day, because the quarterly figure reflects the most recent three months of compensation behavior. Analysts annualize the quarterly number (multiply by four) to compare it to the Fed's framework, which is stated in annual terms. A quarterly print of 1.2% annualizes to 4.8%, well above the 3.5% comfort threshold.
Second, private industry and state/local government ECI should be read separately. Government wage growth lags private by design: budget constraints, legislative approval requirements, and multi-year collective bargaining agreements mean that public sector wages respond to labor market tightness with a longer lag and smaller amplitude than private wages. This gap has implications for public service recruitment and retention that extend beyond inflation analysis.
Third, benefits costs deserve attention even though they attract less commentary than wages. Health insurance premiums have been rising faster than wages since the early 2000s, and this divergence is compressing take-home pay relative to total compensation for workers in employer-sponsored plans. The ECEC release, which shows benefit cost levels in dollars per hour, is the most direct measure of this compression. Analysts studying real wage growth should compare ECEC total compensation — not just wages — to CPI to get the true picture of employer cost pressures and worker purchasing power simultaneously.
Fourth, ECI revisions are modest but real. BLS revises the index each year when updated occupation employment weights are incorporated. Historical revisions rarely change the qualitative interpretation of a quarter's reading but can shift the precise year-over-year rate by 0.1–0.2 percentage points. Analysts building models on ECI should use vintage data where available to replicate real-time forecasting exercises.
The release calendar and full series documentation are available on the BLS ECI program page at bls.gov. The NCS technical notes, published alongside the annual ECEC data, contain the full methodology for benefit cost measurement including the actuarial approaches used for defined benefit pension costs and the imputation procedures applied when employer plan data are incomplete.
ECI provides the fixed-weight wage signal the Fed uses, but the monthly employment report's Average Hourly Earnings series — which ECI is designed to complement and correct — comes from the Current Employment Statistics program. See BLS Current Employment Statistics: The Monthly Jobs Report Behind Every Payroll Number.
ECI wage growth minus productivity growth equals unit labor cost growth — the inflation signal that ties the ECI to PCE services inflation. For the full productivity context, including how BLS measures output per hour and multifactor productivity, see BLS Multifactor Productivity: The Federal Dataset Behind Long-Run Economic Growth Accounting.