Job Costing
How to Calculate Construction Labor Productivity (PF & PI), With Formulas
If you self-perform work, two numbers tell you whether a job is winning or losing before the final cost report ever lands: the Performance Factor (PF) and the Productivity Index (PI). Here is exactly how to calculate both.
Published June 14, 2026 · 7 min read
Key takeaway
Performance Factor = Earned Hours ÷ Actual Hours. Above 1.0 you are beating your estimate; below 1.0 you are burning labor faster than you are earning it. Track it weekly by cost code, not monthly by job, and you can correct a slipping crew while the work is still in front of you.
Why labor productivity is the number that matters
On a self-perform project, materials and equipment are largely fixed once you buy them. Labor is the variable that decides your margin — and it is the one thing you can still influence on a Tuesday morning. That is why experienced PMs watch labor productivity more closely than any other metric: it is the earliest, most controllable signal of where a job is headed.
The problem is that "we feel behind" is not a number you can manage. Productivity tracking converts the foreman's gut feel into two ratios you can trend, compare across crews, and act on.
The two formulas you actually need
Both metrics compare the hours you should have spent (earned) against the hours you did spend (actual). The only inputs are your estimated unit rate, the quantity installed, and the hours your crew burned.
- •Earned Hours = Quantity Installed × Estimated Hours per Unit (your budget rate for that cost code).
- •Performance Factor (PF) = Earned Hours ÷ Actual Hours. PF > 1.0 means you are ahead of estimate; PF < 1.0 means you are behind.
- •Productivity Index (PI) is the same ratio, often expressed the inverse way (Actual ÷ Earned) so that lower is better — confirm which convention your team uses before comparing numbers.
- •Cost/Schedule terms: in earned-value language, the same idea appears as CPI (Cost Performance Index) and the labor "Performance Factor" tracked against a baseline.
A worked example
Say your estimate for cost code 16-120 (branch conduit) budgeted 0.25 hours to install one linear foot, and you bid 4,000 LF. That is a budget of 1,000 hours.
Three weeks in, your crew has installed 1,500 LF and logged 430 actual hours. Earned Hours = 1,500 × 0.25 = 375. Performance Factor = 375 ÷ 430 = 0.87.
A PF of 0.87 means you are spending about 15% more labor than you earn. Left alone across the full 4,000 LF, that 1,000-hour budget trends toward roughly 1,150 hours — a 150-hour overrun you can still attack while 2,500 LF remain. Catch it at month-end instead, and the conduit is already in the wall.
How to track it without a spreadsheet marathon
The reason most contractors do not track PF weekly is data entry. The inputs live in three places — the estimate (budget hours), the daily report (actual hours), and the field (quantity installed) — and stitching them together by hand every Friday is a job nobody wants.
The fix is to make the daily report the single source of truth. When foremen log manhours against cost codes and record quantities installed in the same pass, earned hours, actual hours, and PF compute themselves. That is exactly how Field PM's productivity tracking and S-curve forecasting work: the daily report you already collect becomes the labor productivity dashboard, by cost code, with no re-keying.
Common mistakes that make the number lie
- •Mixing cost codes: a blended PF across a whole job hides the one trade that is bleeding. Track per cost code.
- •Counting hours but not quantities: actual hours without quantity installed gives you spend, not productivity. You need both halves.
- •Forgetting rework: hours spent fixing punch-list items still count as actual hours. If PF is dropping, check whether rework is the cause.
- •Comparing against a stale estimate: if scope changed via a change order, update the earned-hours basis or your PF will look worse (or better) than reality.
Frequently asked questions
What is a good Performance Factor on a construction job?+
A PF of 1.0 means you are exactly on your estimated labor. Above 1.0 is ahead of plan; below 1.0 is behind. Many contractors target a PF at or slightly above 1.0 and treat anything trending below ~0.95 on an active cost code as a signal to investigate crew size, sequencing, or rework.
What is the difference between Performance Factor and Productivity Index?+
They measure the same thing — earned versus actual hours — but the conventions are inverted. Performance Factor is usually Earned ÷ Actual (higher is better). Productivity Index is often Actual ÷ Earned (lower is better). Always confirm which direction your team uses before comparing numbers between projects.
How often should I calculate labor productivity?+
Weekly, by cost code, on active work. Monthly is too late to correct a slipping crew, and a job-wide number is too blended to be actionable. Weekly per-cost-code tracking catches problems while there is still enough remaining work to recover.
Where do the numbers come from?+
Earned hours come from your estimate (budgeted hours per unit × quantity installed). Actual hours come from time entered on daily reports or a time clock. Quantity installed is recorded by the foreman. When all three flow from one daily report, productivity calculates automatically — which is how Field PM does it.
Run the numbers in the field, not the spreadsheet
Field PM turns daily reports into live job costing, productivity, and billing — built for self-perform contractors. 30-day free trial · no credit card · unlimited foremen, QA/QC, safety & subs always free.
Start free trial →