Hiring velocity is the rate at which a company opens new roles, set against its size. This guide gives you a formula for the metric that you can compute for any company from dated job postings and a stated headcount, with no access to the employer's own records. It works one example end to end, shows how to measure a company against a cohort of its own industry and size band, and sets the result beside the official hires rate and job openings rate.
How to measure hiring velocity: the formula
To measure hiring velocity, count the job postings a company opened in a window, divide by its headcount, and scale to 30 days: velocity = 100 × postings opened ÷ employees × (30 ÷ days in the window). The result is postings opened per 100 employees per 30 days, a rate that compares companies of any size.
hiring velocity = 100 × postings opened ÷ employees × (30 ÷ days in the window)We found no definition of the term at a statistics office or a standards body, so the definition has to travel with the number: which postings, which headcount, which window.
- Postings opened, not postings open. Velocity is a flow: what was added during the window. Open postings are a stock, and the stock stays high where roles are slow to fill.
- Per 100 employees. Forty new postings are a surge at a company of 300 and routine at one of 30,000. Official rates use the same scale: the US Bureau of Labor Statistics computes its hires rate by dividing hires by employment and multiplying by 100.
- Per 30 days. Thirty days is one of the three windows of the weekly Market Series, so a company and its cohort are read over the same span. The scaling term lets you compute over 7 or 180 days and still state the result per 30.
Compute three companions from the same counts.
| Measure | Formula | What it tells you |
|---|---|---|
| Hiring velocity | 100 × new ÷ employees × (30 ÷ days) | How fast roles are being opened, for the company's size |
| Net velocity | 100 × (new − closed) ÷ employees × (30 ÷ days) | Whether the stock of open roles is growing or shrinking |
| Open-postings rate | 100 × open ÷ (employees + open) | How much of the organisation, filled and advertised, is being recruited for |
| Close ratio | closed ÷ open at the end of the window | How quickly roles leave the board, against those still on it |
Three of the four share their algebra with an official statistic, with postings in place of hires and job openings. Velocity is built like the hires rate. The open-postings rate is built like the Bureau's job openings rate: openings divided by the sum of employment and openings, times 100. Eurostat's job vacancy rate has the same form, with occupied posts for employment. The close ratio is built like the hires-per-job-opening ratio of a Bureau article: hires during a month over jobs open at its end. The forms match, but the numbers are not interchangeable.
The inputs: dated postings and a stated headcount
The counts come from two datasets of the hiring data, and the denominator from Employee Headcount, part of announcements and scale. The data dictionary defines every field.
| Input | Dataset | How to read it |
|---|---|---|
| New postings | Hiring Activity | Postings seen opening on each closed UTC day |
| Closed postings | Hiring Activity | Postings closed that day: the role left the board, filled, withdrawn or reposted |
| Open postings | Hiring Activity | Postings open at the end of the day: a stock, where the other two are flows |
| Employees | Employee Headcount | The count the company states, with the date it refers to |
A posting already published when a company's postings were first observed is a baseline: Job Postings flags it and Hiring Activity leaves it out of the new postings, so a first observation never registers as a burst of hiring. Each day of Hiring Activity is written once, after the day closes, and never revised, so the counts of a past window are point-in-time.
The query builds one row per company for the 30 days ending on the latest as-of Sunday of Market Series. It sums new_postings and closed_postings of Hiring Activity over the window, reads open_postings at both ends, and takes from Employee Headcount the latest employees whose as_of date falls on or before the end. The last line keeps companies that had a row before the window opened, which makes the set a same-store cohort.
create view company_velocity as
with w as (
select max(as_of) as end_day from market_series
),
activity as (
select h.company_id,
min(h.day) as first_day,
sum(case when h.day > w.end_day - 30 then h.new_postings else 0 end) as new_30d,
sum(case when h.day > w.end_day - 30 then h.closed_postings else 0 end) as closed_30d,
sum(case when h.day = w.end_day then h.open_postings else 0 end) as open_end,
sum(case when h.day = w.end_day - 30 then h.open_postings else 0 end) as open_start,
sum(case when h.day <= w.end_day - 30
and h.day > w.end_day - 60 then h.new_postings else 0 end) as new_prev
from company_hiring_daily h
cross join w
where h.day <= w.end_day
group by h.company_id
),
size as (
select company_id, employees, as_of
from (
select c.company_id, c.employees, c.as_of,
row_number() over (partition by c.company_id
order by c.as_of desc, c.employees desc) as rn
from company_headcounts c
cross join w
where c.as_of <= w.end_day
) latest
where rn = 1 and employees > 0
)
select a.company_id,
s.employees,
s.as_of as headcount_date,
case when s.employees <= 10 then '1-10'
when s.employees <= 50 then '11-50'
when s.employees <= 200 then '51-200'
when s.employees <= 1000 then '201-1000'
when s.employees <= 5000 then '1001-5000'
else '5000+' end as size_band,
a.new_30d, a.closed_30d, a.open_start, a.open_end, a.new_prev,
100.0 * a.new_30d / s.employees as velocity,
100.0 * (a.new_30d - a.closed_30d) / s.employees as net_velocity,
100.0 * a.open_end / (s.employees + a.open_end) as open_rate,
1.0 * a.closed_30d / nullif(a.open_end, 0) as close_ratio
from activity a
join size s on s.company_id = a.company_id
cross join w
where a.first_day <= w.end_day - 30;The same formula works on a slice: count the new postings of one job function or one country in Job Postings and keep the company's headcount as the denominator.
Reading one company against its industry and size band
Read a velocity twice against a cohort: for level and for direction.
Level, against the size band. Take the quartiles of velocity across the companies of each band in the view. The span from the 25th to the 75th percentile is the normal range of that band on your definition and your window.
select size_band,
count(*) as companies,
percentile_cont(0.25) within group (order by velocity) as p25,
percentile_cont(0.50) within group (order by velocity) as median,
percentile_cont(0.75) within group (order by velocity) as p75
from company_velocity
group by size_band
having count(*) >= 20;The floor of 20 companies is a choice: set yours before you look at a result.
Direction, against the industry. Market Series carries weekly series of postings opened for each industry and each size band, over 7, 30 and 180 days. Every row holds the count for the window, the cohort of companies it is counted over, the count for the window before on the same cohort, and the growth between the two. Growth has no scale, so it compares directly with the company's own change in new postings.
select dimension_kind, dimension, "count", cohort, previous, growth,
1.0 * "count" / cohort as postings_per_company
from market_series
where metric = 'hiring_new'
and window_days = 30
and as_of = (select max(as_of) from market_series)
and ( (dimension_kind = 'industry' and dimension = 'consumer_electronics')
or (dimension_kind = 'size' and dimension = '1001-5000'));Here hiring_new is the family of postings opened in the window, and dimension_kind with dimension choose the cut: the industry label of the company's website, or a size band. The count divided by cohort is postings opened per company, which says nothing about size inside a band, so the level is read per 100 employees. The cohorts are same-store, so growth is a change in what the same companies did. Industry and size band are separate cuts: for a cohort that is both at once, filter the view to the peer list you already keep.
A worked example: Acme Robotics over 30 days
Acme Robotics is an invented company and every figure here is illustrative. It makes home robots, and its website carries the industry label consumer electronics.
Assumptions:
- Stated headcount: 1,200 employees, dated before the end of the window, in the band of 1,001 to 5,000.
- Open postings on the day before the window: 40.
- In the 30-day window: 27 new postings and 15 closed.
- In the 30 days before: 18 new postings.
- Quartiles of velocity in the size band, from the view: 0.60, 1.10 and 1.90.
- Market Series, postings opened over 30 days, size band: count 4,500, cohort 180, previous 4,000.
- Market Series, postings opened over 30 days, industry: count 1,150, previous 1,000.
| Step | Working | Result |
|---|---|---|
| Open postings at the end | 40 + 27 − 15 | 52 |
| Hiring velocity | 100 × 27 ÷ 1,200 × (30 ÷ 30) | 2.25 |
| Net velocity | 100 × (27 − 15) ÷ 1,200 | 1.00 |
| Open-postings rate | 100 × 52 ÷ (1,200 + 52) | 4.15 per cent |
| Close ratio | 15 ÷ 52 | 0.29 |
| Growth in Acme's new postings | (27 − 18) ÷ 18 | 0.50 |
| Growth in the size band | (4,500 − 4,000) ÷ 4,000 | 0.125 |
| Growth in the industry | (1,150 − 1,000) ÷ 1,000 | 0.15 |
| Postings per company in the size band | 4,500 ÷ 180 | 25.0 |
Level. At 2.25 postings per 100 employees per 30 days, Acme stands above the third quartile of its band, 1.90: it opens roles faster than three quarters of the companies of its size. The raw count hides this: Acme opened 27 postings against 25.0 for the average company of its band, and only the rate shows that it did so from the small end of a band that runs to 5,000 employees.
Direction. Acme's new postings grew by 50 per cent on the window before, against 12.5 per cent for its size band and 15 per cent for its industry: more than three times the pace of either cohort.
Composition. A net velocity of 1.00 says the stock of open roles grew by 12, one per 100 employees in a month. The open-postings rate says about one role in 24, filled or advertised, is being advertised, and the close ratio says 29 roles left the board for every 100 still on it.
Hiring velocity benchmarks: is there a normal range by company size?
We found no official benchmark for hiring velocity and no published normal range by company size. Official labour statistics measure hires and job openings, and publish them by size of establishment and, for hires, by size of firm. For a rate built on postings, the working benchmark is the interquartile range of your own cohort in each size band.
Three official series come closest.
- Hires and job openings by establishment size, monthly. The Bureau's Job Openings and Labor Turnover Survey, a sample of approximately 21,000 establishments, publishes both rates for six size classes.
- Hires by firm size, quarterly. The US Census Bureau's Quarterly Workforce Indicators report hires for private-sector firms in five national size categories, from 0 to 19 employees to 500 or more, with a hiring rate stated as hires as a percentage of average employment.
- Vacancies by size of business. The UK Office for National Statistics publishes estimates of vacancies by size of business.
The table gives the Bureau's rates for private-sector establishments in August 2026, in per cent, seasonally adjusted and preliminary, from its release of 29 September 2026.
| Establishment size | Hires rate | Job openings rate |
|---|---|---|
| 1 to 9 employees | 3.0 | 4.3 |
| 10 to 49 employees | 3.9 | 4.4 |
| 50 to 249 employees | 4.0 | 4.3 |
| 250 to 999 employees | 3.4 | 4.4 |
| 1,000 to 4,999 employees | 3.0 | 5.7 |
| 5,000 or more employees | 1.9 | 5.2 |
| Total private | 3.6 | 4.5 |
In that month the hires rate ran from 1.9 per cent in the largest establishments to 4.0 per cent in those of 50 to 249 employees. Two differences keep the table from being a normal range for velocity.
- It counts hires and openings, not postings. In the Bureau's technical note, hires are all additions to the payroll during the month, and a job opening is a position open on the last business day that meets three conditions: it exists with work available, it could start within 30 days, and the employer is actively recruiting from outside the establishment. One posting can stand for several such openings, or for none.
- It sizes establishments, not companies. The Bureau's glossary defines an establishment as an economic unit usually at a single physical location, and a firm as a business of one or more establishments. A branch of 40 people is counted in the class of 10 to 49, whatever the size of its owner.
Hiring velocity next to hires per month, time to fill and headcount growth
Hiring velocity counts roles advertised. Hires per month counts people who joined, time to fill counts the days one role took, and headcount growth is the net change once leavers are subtracted. The first and the last can be measured from outside, from dated postings and stated headcounts: the other two need the employer's own records.
| Metric | Formula | What it counts | What you need |
|---|---|---|---|
| Hiring velocity | 100 × postings opened ÷ employees, per 30 days | Roles advertised, new and replacement | Dated postings and a stated headcount |
| Hires rate | 100 × hires in the month ÷ employment | People added to the payroll | The employer's payroll records |
| Time to fill | Days from opening a role to filling it | The speed of one hire | The employer's recruiting records |
| Headcount growth | (employees now − employees a year before) ÷ employees a year before | Net change after leavers | Two stated headcounts, each with its date |
Hires per month. In August 2026 US non-farm employers, government included, made 5.2 million hires, a rate of 3.3 per cent, and recorded 5.1 million separations, the Bureau's release shows. Most hiring replaces people who left: the Census Bureau's guide to its indicators notes that hiring comes mostly from worker turnover and not from growth in employment. So a company can open 2 roles per 100 employees every month on a flat headcount, and velocity and headcount growth are different numbers.
Time to fill. The nearest official standard we found is a time-to-hire standard for US federal agencies: guidance from the Office of Personnel Management asks them to manage hiring towards an overall 80-calendar-day timeframe, with 66 days as the standard period from a validated hiring need to a tentative job offer. We found no official benchmark of time to fill for private companies. From postings, the nearest measure is the days between a posting's first-seen date and its close date, over the postings that closed in the window, leaving out baselines, whose first-seen date is not their opening date.
Headcount growth. Employee Headcount holds stated headcount over time, so growth compares two dated counts. Read velocity for the signal and headcount growth for the confirmation.
Checks to run on sample data
A posting records an intention to hire, and a rate is only as sound as its counts. Run these checks on sample data first.
- Reconcile stock and flow. Open postings at the end minus open postings at the start should be close to new minus closed. A larger rise marks postings first observed already open: they are baselines, flagged in Job Postings and rightly kept out of velocity.
- Date the denominator. Print the headcount date beside every velocity, and decide the oldest count you accept before you look at results. Where a company states no headcount, read the growth in its new postings, which needs no denominator.
- Match the numerator to the denominator. Where a headcount is stated for a whole group, sum the postings of its brands and subsidiaries first. Their rows carry the listed parent's identifiers, so grouping by ISIN does it.
- Respect small denominators. At 50 employees one posting moves velocity by 2.0. Show the counts beside the rate and set a minimum headcount for any ranking.
- Read gross with net. A role taken down and posted again as a new posting adds one to closed and one to new: velocity rises and net velocity does not.
- Leave late days out of a strict test. A day written after its normal schedule carries a flag, and a back-test limited to what was known on each date drops the flagged days.
How Fokals delivers the inputs
The hiring data is refreshed daily and delivered by REST API or as bulk files, and Market Series is written weekly, as of each Sunday. The methodology sets out how the opening and closing of a posting are dated. For the same counts in a research process, see using hiring data in equity research between earnings; for a revenue team, timing outreach with hiring signals.
Frequently asked questions
What is the formula for hiring velocity?
Hiring velocity is 100 times the postings a company opened in a window, divided by its employees, then multiplied by 30 over the number of days in the window. A company of 1,200 employees that opened 27 postings in 30 days has a velocity of 2.25 postings per 100 employees per 30 days. State the window and the date of the headcount with the number.
What is a good hiring velocity for a company of my size?
We found no official benchmark and no published normal range. The useful reference is the spread of your own cohort: compute the same rate for every company in the size band and read the company against the quartiles. A value above the 75th percentile is fast for its size, a value below the 25th is slow, and the span between them is the normal range on your definition.
Is hiring velocity the same as time to fill?
No. Hiring velocity is a rate for a whole company: roles opened per 100 employees in a period. Time to fill is a duration for one role: the days from opening it to filling it. A company can open roles quickly and fill them slowly. From job postings, the nearest measure to time to fill is the number of days between a posting's first-seen date and its close date.
Can I compare hiring velocity from job postings with the official hires rate?
Compare the direction, not the level. The US hires rate counts every addition to the payroll in a month as a percentage of employment, and it was 3.3 per cent for all non-farm employers in August 2026. A posting is an advertised role that may lead to several hires or to none, and the official count takes in every hire, whether or not the role was ever advertised. The two rates share a form and count different things.
How long a window should I use for hiring velocity?
Thirty days suits most uses: it smooths the days of the week on which employers publish and still moves within a quarter. Use 7 days only to time a change you already see over 30, and 180 days for the direction of a trend. Whatever the window, scale the result to 30 days so that every figure is stated in the same unit.
Which datasets do I need to compute hiring velocity?
Three, and a fourth for detail. Hiring Activity gives the daily counts of new, closed and open postings for each company. Employee Headcount gives the stated number of employees and the date it refers to. Market Series gives the weekly count of postings opened across each industry and each size band, with the cohort of companies behind it. Job Postings adds each role, for the velocity of one job function or one country.
The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.
What this page says about the products it names was checked against their public documentation on 7 October 2026. Product and company names are trademarks of their owners. Fokals is not affiliated with them or endorsed by them.