Visa grant density
The visa grant density indicator was calculated as the number of visas granted as a proportion of those aged 16 and above who are in employment at a 4-digit SOC level, for occupations across the UK between July 2024 and June 2025 (Annual Population Survey (APS) (opens in new tab)). Three quarters of data have been used instead of the full four quarters, as, at the time of analysis, only the most recent three quarters of data are coded against SOC 2020 occupations.
To limit this indicator to grants that may have been made to fill a skills gap, only visas with a subgroup type of Senior or Specialist Worker (Global Business Mobility), Skilled Worker, Health and Care Worker or Seasonal Worker were included in the analysis.
Raw counts of less than 25 at a 4-digit SOC 2020 level and weighted counts of workers less than or equal to 10,000 were suppressed as outlined by the Labour Force Survey (LFS) background and methodology, to reduce the standard error to 20% or below (Labour Force Survey: Background and Methodology (opens in new tab)). An exception was made where the number of visa grants against a given occupation was 0, as the visa grant density would always be 0 regardless of the APS denominator value. Where suppression criteria were met, visa grant indicator data was set to NA to avoid disclosure from anonymised data and to avoid decisions being made from small sample sizes.
To control for outliers the top 1 percentile of occupations with a visa grant density value above 0 were winsorized, in practice this impacted only the top 3 occupations.
Before scaling, the data was transformed to its logarithm, to reduce the skewness in the data. This allows more distinction between the bulk of values in the data which are clustered at one end of the scale, and reduces the impact of outliers. Prior to this a baseline figure of 0.00001 was added to the indicator value for all occupations which were not suppressed to avoid errors in log transforming a 0 value.
Unlike other indicators, the visa density indicator was scaled relative to the year of analysis, rather than to a historical reference period. This is because changes in visa policy are likely to drive a large part of the change over years, making historical comparisons more challenging. This means the visa density indicator will identify occupations showing evidence of high demand relative to other occupations within the year of analysis, but not relative to historical trends. For this reason, this indicator is given less importance in the overall categorisation of demand, as detailed in Table 3 (criteria for overall demand categories).
To account for uncertainty in the APS data used for the size of the 16+ employed population, a lower estimate was created using the upper confidence estimate for the population.
The accompanying data for the release includes an uncertainty flag against certain occupations for this indicator. This identifies two occupations with seasonal trends which may be overrepresented due to using three instead of four quarters of data. It also identifies occupations which were ineligible for visas through the skilled worker and health and social care worker visa routes over the 2022 to 2025 period, as these may have lower visa densities due to ineligibility rather than lack of demand.
In total 30 4-digit SOC code occupations were suppressed for this indicator in the 2025 publication. 48 were suppressed when updating the 2024 analysis to the 2025 methodology.
Online job advert density
This indicator was calculated using the mean volume of quarterly snapshot online job adverts, as a proportion of those aged 16 and above who are in employment (APS (opens in new tab) and Labour demand volumes by SOC 2020, UK, ONS (opens in new tab)). Snapshot online job adverts represent the average number of adverts for a point in time and so are a stable measure for analysing long term trends. For this reason, snapshots were used over alternative measures despite some quality issues outlined in the release (Labour demand volumes by SOC 2020, UK, ONS (opens in new tab)).
Raw counts of less than 25 at a 4-digit SOC 2020 level and weighted counts of workers less than or equal to 10,000 were suppressed as outlined by the Labour Force Survey (LFS) background and methodology to reduce the standard error to 20% or below. Where suppression criteria were met, the indicator data was set to NA to avoid disclosure from anonymised data and to avoid decisions being made from small sample sizes.
Before scaling a log transformation was applied to the data, to reduce the skewness. This allows more distinction between the bulk of values in the data which are clustered at one end of the scale and reduces the impact of outliers. Prior to this a baseline figure of 0.00001 was added to the indicator value for all occupations which were not suppressed to avoid errors in log transforming a 0 value.
To account for uncertainty in the APS data used for the size of the 16+ employed population, a lower estimate for the job adverts rate was created using the upper confidence estimate for the population.
The accompanying data for the release includes an uncertainty flag against certain occupations for this indicator. This identifies occupations in the bottom 5 percentile, as these may be occupations which do not usually advertise for jobs online so may receive a low indicator value despite advertising for roles through other methods. It also flags occupations where there are known issues with the representativeness of the data after consultation with ONS. These latter occupations are listed in Table 5.
There may be some occupations which do not often advertise online but which do not meet the threshold for this uncertainty flag, therefore all low job advert density values should be used with caution.
Occupations which have a high level of turnover may have a higher online job advert density due to a higher number of job adverts, this should be considered when interpreting the occupations in demand for this indicator.
In total, 31 4-digit SOC code occupations were suppressed for this indicator in the 2025 publication. 49 were suppressed when updating the 2024 analysis to the 2025 methodology.
Table 5: Occupations known to be less well represented in online job advert data
Occupation code (SOC 202020 4-digit) | Occupation name |
|---|
| 2317 | Teachers of English as a foreign language |
| 2311 | Higher education teaching professionals |
| 2312 | Further education teaching professionals |
| 2313 | Secondary education teaching professionals |
| 2314 | Primary education teaching professionals |
Year-on-year percentage change in hourly wage
Data from ASHE was used to calculate an indicator for the year-on-year change in annual earnings for occupations across Great Britain (GB). Data for Northern Ireland was not included as this data was not available in the format required at the time of analysis. Data was filtered to a 16+ employed population where a wage value over 0 was provided, earnings had not been impacted by a loss of pay and were for a full adult rate of pay (rather than a trainee or junior rate), to match published ASHE hourly wage methodologies.
The highest of overtime hourly wage or base hourly wage was selected and adjusted by inflation (Consumer price inflation time series, table 15a CPI all items to April (opens in new tab)).
A weighted 50th quantile of the hourly wage was then calculated using the cNORM R package’s weighted.quantile function and the inflation type argument. This median, used in the analysis, will differ from hourly wages published at a 4-digit SOC 2020 level by the ONS, due to the exclusion of NI, inflation adjustment, and use of the higher of overtime or base wage (Earnings and hours worked, occupation by 4-digit SOC: ASHE Table 14 (opens in new tab)). The median hourly wages published by ONS are used in the published report wherever wages are quoted against an occupation.
Raw counts of less than 30 at a 4-digit SOC 2020 level and weighted counts of workers less than or equal to 5,000 were suppressed to avoid disclosure and to ensure data used was reliable. Observations which fell below these suppression criteria were imputed using 3-digit SOC 2020 data, where the 3-digit SOC code data had a count and weight which met the suppression threshold. Any observations where both the 4 and 3-digit SOC 2020 data did not meet suppression thresholds were excluded from the indicator. The year-on-year change was calculated as the percentage change between the 2024 average hourly wage and the 2025 average hourly wage for each 4-digit occupation.
To avoid cases where an occupation had an extremely high or low indicator value due to one year being imputed at a 3-digit level and the other year at a 4-digit SOC 2020 level, thresholds were calculated at 2 standard deviations above and below the mean using 4-digit data after suppression had been applied. Occupations where one year was imputed using 3-digit data and the change in hourly wage indicator value appeared above or below the threshold had their indicator value recalculated for both years at a 3-digit level.
To account for uncertainty in the ASHE data, a lower estimate for year-on-year wage change was created using the upper confidence estimate for wage in 2024 and the lower confidence estimate for wage in 2025.
The accompanying data for the release includes an uncertainty flag against certain occupations for this indicator. This identifies occupations with a lower confidence estimate median wage lower than or equal to National Living Wage (NLW) and where the year-on-year change in wage is lower than or equal to the change in NLW. This is to identify where a year-on-year wage increase may be due to the change in NLW alone.
In total, 58 4-digit SOC code occupations were imputed for this indicator in the 2025 publication. 74 were imputed when updating the 2024 analysis to the 2025 methodology.
Wage premium
The wage premium indicator shows how the hourly wage for each occupation compares to the average hourly wage for occupations in the same ONS skill level (Published skill levels for sub-major groupings (2-digit) of SOC 2020 (opens in new tab)), when controlling for other factors such as sex, location, age and full-time and part-time employment across GB. The source data is ASHE, in line with the year-on-year wage change indicator. Data for Northern Ireland was not included as this data was not available in the format required at the time of analysis.
Data was filtered to a 16+ employed population where a wage value over 0 was provided, earnings had not been impacted by a loss of pay and were for a full adult rate of pay, rather than a trainee or junior rate, to match published ASHE hourly wage methodologies. 2025 hourly wage data was used for this indicator.
The highest of overtime hourly wage or base hourly wage was selected and adjusted for inflation (Consumer price inflation time series, table 15a CPI all items to April (opens in new tab)).
A linear regression was run for each group of occupations in the same skill level, with the log average hourly wage as the dependent variable and the age, age squared, SOC 2020 4-digit code, sex, London or South East flag, and type of work (full or part time) as independent variables. Using the lm function from the stats package in R, weighting based on survey weight and returning the model matrix values.
This linear regression was repeated at a SOC 2020 3-digit level.
The coefficient for the SOC 2020 4-digit and 3-digit code was extracted for each occupation.
To account for uncertainty in the regression analysis, the standard error of the regression coefficient was used to create a lower and higher wage premium estimate for each occupation.
The wage premium demand indicator value is calculated as the coefficient for each occupation minus the weighted 50th quantile coefficient for all occupations of the same skill level, using the cNORM R package’s weighted.quantile function and the inflation type argument.
A lower estimate for the wage premium indicator was calculated by taking the lower confidence estimate for the coefficient for each occupation and subtracting the weighted 50th quantile higher confidence estimate coefficient for occupations in the same skill level, calculated from the higher confidence estimates. This was to ensure a higher level of confidence that occupations in demand for this indicator were not in demand due to random variation in the data.
Raw counts of less than 30 at a 4-digit SOC 2020 level and weighted counts of workers less than or equal to 5,000 were suppressed to avoid disclosure and to ensure data used was reliable.
Observations which fell below these suppression criteria were imputed using 3-digit SOC 2020 data, where the 3-digit SOC code data had a count and weight which met the suppression threshold. Any observations where both the 4 and 3-digit SOC 2020 data did not meet suppression thresholds were excluded from the indicator.
In total, 52 4-digit SOC code occupations were imputed for this indicator in the 2025 publication. 67 were imputed when updating the 2024 analysis to the 2025 methodology.
Year-on-year change in hours worked
Data from ASHE was used to calculate an indicator for the year-on-year change in weekly hours worked for occupations across GB. Data for Northern Ireland was not included as this data was not available in the format required at the time of analysis. Data was filtered to a 16+ employed population where a wage value over 0 was provided, earnings had not been impacted by a loss of pay and were for a full adult rate of pay (rather than a trainee or junior rate), to match published ASHE paid hours worked methodologies.
A weighted 50th quantile of the hours worked was then calculated using the cNORM R package’s weighted.quantile function and the inflation type argument for each SOC 2020 occupation. Raw counts of less than 30 at a 4-digit SOC 2020 level and weighted counts of workers less than or equal to 5,000 were suppressed to avoid disclosure and to ensure data used was reliable.
Observations which fell below these suppression criteria were imputed using 3-digit SOC 2020 data, where the 3-digit SOC code data had a count and weight which met the suppression threshold. Any observations where both the 4 and 3-digit SOC 2020 data did not meet suppression thresholds were excluded from the indicator.
The year-on-year change was calculated by subtracting the 2024 median number of hours worked for each 4-digit occupation from the 2025 median number of hours worked.
To avoid cases where an occupation had an extremely high or low indicator value due to one year being imputed at a 3-digit SOC 2020 level and the other year at a 4-digit SOC 2020 level, a threshold was calculated at 2 standard deviations above and below the mean using 4-digit SOC 2020 data after suppression had been applied. Occupations where one year was imputed using 3-digit SOC 2020 data and their change in hours worked indicator value appeared above or below the threshold had their indicator value recalculated for both years at a 3-digit SOC 2020 level.
In total, 58 4-digit SOC code occupations were imputed for this indicator in the 2025 publication. 74 were imputed when updating the 2024 analysis to the 2025 methodology.
To account for uncertainty in the ASHE data, a lower estimate for year-on-year hours change was created using the upper confidence estimate for hours in 2024 and the lower confidence estimate for hours in 2025.
The accompanying data for the release includes an uncertainty flag against certain occupations for this indicator. This identifies occupations where the year-on-year change in proportion of part time workers is higher than the mean + 1 standard deviation in the 2023 to 2025 data for all occupations. This is to identify where large changes in the proportion of part time workers may be having an impact in the average change in hours, rather than a change in demand.