Federal Labor Rates · Composite Labor Rate

What does a federal contractor hour actually cost the government — and how would you ever check?

Every federal agency has to report what it bought in labor hours and what it paid for them, contract by contract. Almost nobody reads that file. We do: the median federal services contract worked out to $147.43 per direct labor hour in FY2025, against $142.43 in FY2024 — total dollars invoiced divided by the hours reported behind them. The figure falls at every step as contracts get bigger. Here is what is in the file, and how the platform puts it on the contract you are actually pricing against.

See the numbers ↓

Included with Growth accounts. There are two kinds of number on this page and we label every one of them: the market figures are real, measured against the government’s own published file. The product screens are the real tool, on sample data.

What The File Shows

Government contract labor rates, FY2025: a $147.43 median hour, up from $142.43.

Under FAR 52.204-14, agencies collect what each services contract spent on direct labor hours and what it invoiced. It is published, it is per-contract, and it is the only broad record of its kind. These are the medians it produces — measured 8 September 2026, against the file as loaded through FY2025.

$147.43
Median composite, FY2025
FY2024 $142.43
32,205
Contract filings measured, FY2025
30,640 distinct contracts · FY2024 37,528
41%
Smallest band to largest, FY2025
FY2024 −38%
+21%
Median, FY2016 to FY2025
Higher in all ten years
The bigger the contract, the lower the hourMeasured — real data

Median composite $/hr by the contract’s own reported labor hours — invoiced dollars ÷ direct labor hours. Monotonic across all five bands in FY2025, and again in FY2024.

$162.44
FY24 $158.08
Under 5k
16,863 filings
$138.84
FY24 $132.93
5k–25k
9,419 filings
$125.90
FY24 $118.51
25k–100k
4,294 filings
$104.90
FY24 $101.99
100k–500k
1,426 filings
$95.31
FY24 $97.23
500k+
203 filings

Bars are FY2025 and start at zero — no truncated axis. Band labels are the contract’s own reported direct labor hours for the year. The pattern is what the file reports; larger contracts also carry a different labor mix, and nothing here measures why the rate falls.

Ten years, and it has not gone down onceMeasured — real data

Median composite $/hr across all measured services contracts, by fiscal year. Every year is higher than the one before it — $121.87 in FY2016 to $147.43 in FY2025, a rise of 21%.

$121.87
FY16
12,196
$122.02
FY17
17,569
$124.85
FY18
16,987
$125.07
FY19
22,617
$127.55
FY20
27,688
$129.11
FY21
32,465
$133.33
FY22
32,347
$137.94
FY23
36,071
$142.43
FY24
37,528
$147.43
FY25
32,205

Bars start at zero — no truncated axis. The figure under each year is the contract filings behind that year’s median: reporting grew from 12,196 to 32,205 over the decade, so the population under this line is not the same population throughout, and the rise should be read with that in mind. Medians only: this file is contractor self-reported and is never summed on this page, because a single outlier moves a total and cannot move a median.

How this is measured
One row per contract and referencing vehicle, per fiscal year — so the 32,205 FY2025 filings above are 30,640 distinct contracts, some of them reported under two vehicles. The composite is one division and nothing else: total dollars invoiced ÷ direct labor hours reported.
Both halves are contractor self-reported and government-collected under FAR 52.204-14 — a reporting requirement, not an audit.
Computed rates outside $20$500/hr are excluded from these medians, and that guardrail is disclosed wherever the figures appear.
Every FY2025 median on this page is published beside its FY2024 twin — the opening summary, the heading above, the headline figure, all five size bands, and the ten-year series.
What this number is not
Not a labor rate, and not a price. Federal reporting rules define “dollars invoiced” as the contract’s total invoiced value — materials, travel and other direct costs included — so the quotient is directional. It tracks a real billing rate most closely on Time-and-Materials work, and least on fixed-price equipment or construction work.
Not complete. Coverage is partial. Of the FY2025 contract-years that do appear in the inventory, roughly half carry a usable hours-and-dollars pair (42,118 of 80,394); how many covered contracts file nothing at all is not measurable from this file in either direction, so the real share can only be lower. Defense work is also visibly under-represented relative to its share of federal services buying — DoD reports against a higher dollar threshold than civilian agencies.
Not a settled FY2025. Fewer contract-years carried a usable FY2025 report than FY2024 (42,118 against 47,157), so FY2025 may still be incompletely reported. That is exactly why FY2024 sits beside it above.
Not a forecast, and not an explanation. Nothing here predicts next year’s rate or what any bidder would offer, and the size pattern is an observation — we do not claim to know why it happens.

Source: the federal Service Contract Inventory, published by the government on acquisition.gov. Figures measured 8 September 2026 against the file as loaded, FY2016FY2025. FY2025 medians cover 32,205 filings across 30,640 contracts; FY2024, 37,528 filings across 35,310. Every figure on this page is an output of one recorded query, run once so that a count and the median beside it can never come from two different populations.

Related, from the same record: Half of Federal Services Dollars Now Ride on 419 Awards — services money is moving into a shrinking set of very large awards, measured on the same size axis as the first chart above. All Market Intelligence →

On Your Own Pursuit

From the market median to the one contract you are actually bidding against.

The figures above are the whole market. What changes a bid is the incumbent’s own history on the specific contract in front of you — and that is a contract record you already had open.

1On the Contract

The rate is already on the contract you were reading.

No separate lookup, no rate tool to go find. Open any contract record and, where the incumbent filed a Service Contract Inventory report for it, the composite sits inline: what was invoiced, the direct labor hours behind it, and an estimated staffing level. It is one division, shown with its own source line and its own caveats attached — never a bare number on a card.

intelligent.win/contract/FA862224F8799

The Labor Rate band sits inline on the contract record itself — the composite hourly rate for the most recent reported year, the direct labor hours behind it, and an estimated staffing level, with the reported subcontractor share and the full Service Contract Inventory source line attached underneath it.

In this image: companies are fictional and dollar figures are illustrative. Agencies, buying offices and codes are the real federal record; any contract number shown is altered so it resolves to nothing.

Showing the top of the page — full capture 3,229px tall, expand for all of it.
2The Whole History

Five years of it — and the real year-over-year, never a fitted line.

One year is a data point. The escalation is the story: whether the incumbent has climbed hard, held flat under a customer squeezing them, or step-changed at a modification — a mod-flagged year is marked so you judge it for yourself. Every percentage here is the actual change against the prior year, never a trend line drawn through the points, and a partial year is excluded from the average rather than quietly blended into it.

Four people at $140, or forty at $55? That reads very differently — so the same screen divides the hours into an estimated headcount, and the divisor is yours to set: 1,920 hours a year by default, because nobody bills every hour on the calendar. Your own shop’s convention goes straight in. Every reported period is listed with its own hours, its named-subcontractor share, and whether it counted toward the escalation average, so you can see exactly which years the number rests on.

intelligent.win/intelligence/labor-rate

The full history for one contract: five reported fiscal years, escalating an average of 3.4% a year. Every year-over-year figure is the actual change against the prior year, never a fitted trend line, and the modification-driven year is flagged where it sits. Below the chart, every reported period is listed with its own hours, its subcontractor share and whether it counted toward the average — and the 1,920 hrs/yr FTE divisor is stated as an assumption, not a fact.

In this image: companies are fictional and dollar figures are illustrative. Agencies, buying offices and codes are the real federal record; any contract number shown is altered so it resolves to nothing.

Showing the top of the page — full capture 1,920 × 1,497, expand for all of it.

What You Actually Get

Everything the labor-rate view carries — and what it deliberately refuses to.

One division, shown with its own evidence. No price-to-win, no should-cost, no recommendation about what to bid.

In the Product
The composite $/hr inline on any contract record where the incumbent filed a report — invoiced dollars ÷ direct labor hours, with its source line attached
The full reported history: every fiscal year on file, the real year-over-year change for each, and an escalation average taken over completed years only
Direct labor hours as reported, and the named-subcontractor share of them where the filing carries one
An estimated FTE count at a divisor you set — 1,920 hours a year by default, your own shop’s convention if you prefer, and the divisor stated inline every single time
The contract type beside the figure, because a Time-and-Materials composite and a fixed-price one are not the same kind of number
Deliberately Not Here
A labor-category rate card — this is one blended composite across whatever mix was actually staffed that year, and it is never a per-role rate
A forecast of next year’s rate, or any prediction of what a bidder would offer
A fitted trend line — every percentage shown is a real change against the prior year, and a partial year never enters an average silently
A rate for a contract nobody filed a report on. Absence renders as “not reported” — never as zero, and never quietly filled in from a similar contract
A price-to-win, a should-cost, or a recommendation about what to bid. The number is evidence; the bid is yours

Stop pricing a recompete against a number somebody half-remembered from the last one.

The government already collects what the incumbent invoiced and the labor hours behind it. We put it on the contract record — with the caveats attached, and never as a price.

Or see how the whole platform works first →

Common Questions

Three things people ask before they trust a number like this.

Is this the same as GSA schedule labor rates?

No, and the difference matters. GSA schedule rates are ceiling prices a company negotiated by labor category on its own schedule contract — a published rate card, agreed in advance. These figures are what was actually invoiced against the direct labor hours a contractor reported on a services contract, across every agency, whether or not a schedule was involved. One is a price list; this is a measurement taken from what the record reports. And because it is a single blended figure across whatever mix was staffed that year — and because the dollar side is the contract’s total invoiced value, materials and travel included — it is never a per-role rate, and never a rate anybody charged.

Can I use this to set my bid price?

Not on its own, and we would be suspicious of any tool that said otherwise. Federal reporting rules define the dollar side as the contract’s total invoiced value — materials, travel and other direct costs included — not isolated labor cost, so the number is directional. It is closest to a real billing rate on Time-and-Materials work and least reliable on fixed-price equipment, construction or maintenance work, and the product labels the contract type beside every figure for exactly that reason. Use it as an anchor for what has historically cleared with a customer. The bid is still yours.

What if the contract I care about has no rate?

Then it says so. Coverage is partial: of the FY2025 contract-years that do appear in the inventory, roughly half carry a usable hours-and-dollars pair, and how many covered contracts file nothing at all is not measurable from the file in either direction — so the real share can only be lower than half, never higher. Defense work is also visibly under-represented relative to its share of federal services buying, because DoD reports against a higher dollar threshold than civilian agencies. Where nothing was filed, the record renders as “not reported” rather than as zero, and we never fill the gap in from a similar contract. An absence you can see is more useful than a number you cannot trust.