HERE Technologies and Wherobots announce partnership Learn More

What is the HRRR Model? NOAA Rapid Refresh Forecast

Authors

The High-Resolution Rapid Refresh (HRRR) model is a numerical weather prediction (NWP) model from the National Oceanic and Atmospheric Administration (NOAA). It runs every hour on a 3 km grid over the contiguous United States, with an Alaska domain every three hours. Each run starts from the latest radar, satellite, aircraft, and surface observations and produces an 18-hour forecast, extended to 48 hours on the 00, 06, 12, and 18 UTC runs. HRRR is a convection-allowing model: its grid is fine enough to represent individual thunderstorms. Forecasters use it as short-range guidance for severe weather, aviation, wildfire smoke, and renewable energy.

The archive back to 2014 is public on AWS. This article tests one claim: the hard part of using HRRR in spatial analysis is format. One day of output is 886 GB in 2,184 files of GRIB2, the binary format weather centers use for gridded forecasts. WherobotsDB reads its values only after conversion. The warnings that the National Weather Service (NWS) issued from that guidance are already a table in the Havasu catalog, NWS watches and warnings.

Key takeaways

  • Each run starts from the 13 km Rapid Refresh (RAP) and adds radar observations every 15 minutes.
  • At forecast hour 3, the GRIB2 files hold 173 surface fields, 40 pressure levels, and 50 native model levels. 15-minute surface output runs to hour 18.
  • HRRR resolves storms directly. The 13 km Global Forecast System (GFS) and the 12 km North American Mesoscale (NAM) parent estimate storms with a formula (convective parameterization).
  • NOAA's Rapid Refresh Forecast System (RRFS) is the planned successor; the RAP and HRRR stay in operation for now.

What is the HRRR model?

The HRRR is a regional, hourly updated forecast system developed at NOAA's Global Systems Laboratory (GSL) in Boulder and run operationally at the National Centers for Environmental Prediction (NCEP). It became an operational NCEP model on 30 September 2014, after several years as an experimental system. Dowell and colleagues describe it in The High-Resolution Rapid Refresh (HRRR): An Hourly Updating Convection-Allowing Forecast Model. Part I (Weather and Forecasting, 2022). It runs WRF-ARW, the Advanced Research version of the Weather Research and Forecasting (WRF) model, at storm scale over the conterminous United States and Alaska. New observations enter every hour.

At 3 km, thunderstorms, squall lines, sea breezes, and mountain winds appear in the grid itself. The forecast stops at 18 or 48 hours, so HRRR covers this afternoon and tonight, and global models cover the days beyond.

The current operational version is HRRR version 4 (HRRRv4), implemented on 2 December 2020. Version 3 (July 2018) added the Alaska domain and 36-hour runs every six hours, and version 4 extended those runs to 48 hours.

How HRRR works

The grid

The HRRR grid over the contiguous United States (CONUS) is a Lambert conformal conic projection of 1,799 by 1,059 points at 3 km spacing. It is centered on 97.5°W with standard parallels at 38.5°N, as listed in the Herbie HRRR documentation. Each cell represents about 9 square kilometers. Spatial work in a geographic or web projection first reprojects this grid to another coordinate reference system.

Convection-allowing resolution

Coarser models cannot resolve thunderstorm updrafts, so they estimate convection with a parameterization scheme. Below about 4 km, the model equations represent storms directly. Weisman, Skamarock, and Klemp showed that 4 km grid spacing reproduces much of the mesoscale structure of squall lines (Monthly Weather Review, 1997). Kain and colleagues compared 2 km and 4 km WRF forecasts in the first generation of operational convection-allowing NWP (Weather and Forecasting, 2008). HRRR runs at 3 km with no deep convective parameterization. Its dynamical core, the part that solves the equations of air motion, is WRF-ARW. Skamarock and Klemp described it in A time-split nonhydrostatic atmospheric model for weather research and forecasting applications (Journal of Computational Physics, 2008). Its cloud microphysics, the rules for how rain, snow, and ice form in clouds, follow the aerosol-aware scheme of Thompson and Eidhammer (2014).

The hourly cycle and data assimilation

Data assimilation combines a short model forecast with new observations to produce the best estimate of the current atmosphere, the analysis that each forecast starts from. HRRR builds each starting state this way:

  1. The RAP parent. The 13 km Rapid Refresh covers North America. It assimilates aircraft, radiosonde, surface, satellite, and radar observations every hour. Benjamin and colleagues described it in Monthly Weather Review (2016). It replaced the Rapid Update Cycle (RUC) on 1 May 2012.
  2. Hybrid ensemble-variational analysis. The Gridpoint Statistical Interpolation (GSI) analysis combines two estimates of forecast error. One is fixed. The other comes from an ensemble, a set of forecasts run side by side. Hu and colleagues documented GSI hybrid assimilation for the Rapid Refresh in 2017.
  3. Storm-scale radar assimilation. Radar reflectivity is assimilated every 15 minutes over the hour before each HRRR forecast. This puts existing storms into the starting state. Since HRRRv4, the CONUS HRRR also runs the HRRR Data Assimilation System (HRRRDAS), a 36-member, 3 km ensemble. It assimilates reflectivity directly with an ensemble Kalman filter, a method that adjusts every ensemble member toward the observations. The ensemble Kalman filter goes back to Evensen (1994).
Timeline chart of the 24 HRRR runs started on 11 December 2021. Each row is one cycle from 00 to 23 UTC, with a short purple bar for the pre-forecast radar assimilation hour and a long bar for the forecast. Twenty rows extend 18 hours and the 00, 06, 12, and 18 UTC rows extend 48 hours
The 24 HRRR CONUS runs of 11 December 2021, counted from the forecast files on AWS in Wherobots: 20 cycles reach 18 hours and 4 cycles reach 48 hours.

HRRR variables and output files

Forecast hours 0 to 18 are each written as four GRIB2 files, and hours 19 to 48 of the extended runs as three (no wrfsubh). Files are named hrrr.tHHz.wrfPRODUCTfFF.grib2 for cycle HH and forecast hour FF:

FileContents
wrfsfc2D surface and single-level fields: 2 m temperature and dewpoint, 10 m wind and gusts, composite reflectivity, precipitation, CAPE (convective available potential energy), updraft helicity, visibility, cloud ceiling, radiation, smoke
wrfprs3D fields on 40 pressure levels
wrfnat3D fields on 50 native model levels
wrfsubh15-minute surface fields for forecast hours 0 to 18

HRRR variables follow the GRIB2 short names. Common ones are TMP (temperature), DPT (dewpoint), UGRD and VGRD (east-west and north-south wind), GUST (wind gust), and REFC (composite reflectivity, the model's strongest simulated radar echo in each column). Others are APCP (accumulated precipitation), CAPE, and MXUPHL (maximum updraft helicity, a sign of rotating storms called supercells). The list continues with VIS (visibility), DSWRF (downward shortwave radiation for solar), and MASSDEN (near-surface smoke). Each GRIB2 message holds one variable at one level and one time. A companion .idx file lists the byte offset of every message, so a client can fetch a single field with an HTTP range request.

Where HRRR data lives

  • AWS. The NOAA HRRR bucket, noaa-hrrr-bdp-pds, holds GRIB2 files since 2014 through the NOAA Open Data Dissemination program, with mirrors on Google Cloud and Azure.
  • Zarr. The University of Utah builds the hrrrzarr bucket on AWS from the same GRIB2 files. Zarr stores gridded arrays as many small chunks that cloud tools can read separately. Gowan and colleagues describe the bucket in Using cloud computing to analyze model output archived in Zarr format (2022).
  • NOAA Operational Model Archive and Distribution System (NOMADS). NCEP's NOMADS server serves the most recent days.

Blaylock, Horel, and Liston described the first cloud archive of HRRR output in Cloud archiving and data mining of High-Resolution Rapid Refresh forecast model output (Computers and Geosciences, 2017).

HRRR vs RAP, GFS, and NAM

ModelGrid spacingDomainRunsForecast lengthConvection
HRRR3 kmCONUS, AlaskaHourly (Alaska every 3 h)18 h; 48 h at 00, 06, 12, 18 UTCResolved
RAP13 kmNorth AmericaHourlyShort rangeParameterized
NAM12 km, with 3 km nestsNorth America; nests over CONUS, Alaska, Hawaii, Puerto Rico4 per day84 h (nests 60 h)Parameterized at 12 km
GFSabout 13 kmGlobal4 per day16 daysParameterized

The RAP is HRRR's parent, with the same hourly cycle on a 13 km grid over a larger domain. NOAA's Environmental Modeling Center documents both. The Global Forecast System runs on the Finite-Volume Cubed-Sphere (FV3) dynamical core. The North American Mesoscale model's 3 km CONUS nest matches HRRR's spacing but runs 4 times a day. NOAA plans to retire the NAM when the RRFS goes operational.

How accurate is the HRRR model?

HRRR is most accurate in its first hours. James and colleagues documented HRRR forecast performance across versions (2022). Their verification covers simulated radar reflectivity, precipitation, 2 m temperature and dewpoint, 10 m wind, cloud ceiling, and visibility. Dowell and colleagues attribute the gains in reflectivity and precipitation forecasts since 2014 to better data assimilation and physics.

Any single run is limited in storm placement, lead time, and spread:

  • Storm placement. A forecast storm a few kilometers or 30 minutes off counts as both a miss and a false alarm in point verification. For this reason, Roberts and Lean introduced the fractions skill score (2008). It scores high-resolution precipitation over neighborhoods, so a nearby storm earns credit.
  • Lead time. Errors grow with forecast hour. They grow fastest for where new storms will start.
  • One deterministic answer. A single HRRR run carries no spread. Forecasters compare consecutive hourly runs, called a "time-lagged ensemble", to judge confidence.

HRRR model examples

  • Tornado outbreaks. On the night of 10 to 11 December 2021, a supercell produced a tornado with a 165.6-mile continuous track from Woodland Mills, Tennessee, to Falls of Rough, Kentucky. It was rated EF4, a rating on the Enhanced Fujita scale of tornado damage. Both facts come from the NWS Paducah event summary.
  • Wildfire smoke. HRRR-Smoke adds smoke emissions from satellite fire radiative power, as described by Ahmadov and colleagues (IGARSS 2017). Chow and colleagues showed that it simulated the Camp Fire smoke plume during the fire's first days in November 2018 (BAMS, 2022).
  • Wind and solar energy. HRRR's 80 m wind and shortwave radiation fields serve wind and solar forecasting. Turner and colleagues estimated the economic value of HRRR improvements for wind energy, worker output during precipitation, and freeze protection in agriculture (BAMS, 2022).
  • Aviation and utilities. Flight planners use the ceiling, visibility, and convective fields. Utilities can join forecast gusts to power line maps to decide where to stage crews before a storm. Catastrophe modeling uses the same join of hazard to assets.

HRRR in Wherobots

WherobotsDB reads the public HRRR archive on AWS in place with the Spark text and binaryFile readers. The Wherobots catalogs hold no HRRR table. The WherobotsDB raster readers, RS_FromPath and RS_FromNetCDF, take GeoTIFF and NetCDF. Forecast values therefore reach WherobotsDB after a conversion to Cloud Optimized GeoTIFF or NetCDF.

The running example is the night of 10 to 11 December 2021. It uses the 00 UTC HRRR run of 11 December, whose forecast hours span the hours the long-track tornado was on the ground (02:49 to 05:47 UTC). The queries read these sources:

SourceFormatSize or rowsWhat the queries read
HRRR CONUS archive, noaa-hrrr-bdp-pds on AWS, 11 December 2021GRIB2 files2,184 files, 886.2 GBFile paths and sizes only; file contents never read
HRRR index files of the 00 UTC run, forecast hour 3Plain-text .idx, one line per GRIB2 message711, 1,136, and 173 lines (wrfprs, wrfnat, wrfsfc)Message number, start byte, variable, and level
NWS watches and warnings, noaa.nws_watch_warningsHavasu table with warning polygons146 tornado warnings in the time windowOffice, issue time, damage tag, polygon
US Census TIGER counties, us_census.tiger_countyHavasu table with county polygons256 counties touched by a warningCounty ID, name, state, boundary
American Community Survey 5-year estimates, us_census.acs_5yr_estimatesHavasu tableCounty rows of table B01003, total populationPopulation estimate per county

One engine read all of them with SQL.

HRRR file inventory for one day

-- HRRR CONUS GRIB2 files for 11 December 2021, by product, plus a total row
-- binaryFile lists path and length; the file contents are never read
SELECT regexp_extract(path, 'z\\.(wrf[a-z]+)f[0-9]{2}\\.grib2$', 1) AS product,
       COUNT(*) AS files,
       COUNT(DISTINCT regexp_extract(path, 'hrrr\\.t([0-9]{2})z', 1)) AS cycles,
       ROUND(SUM(length) / 1e9, 1) AS gb
FROM binaryFile.`s3://noaa-hrrr-bdp-pds/hrrr.20211211/conus/hrrr.t*z.wrf*.grib2`
GROUP BY ROLLUP(1)
ORDER BY 1;
ProductFilesCyclesGB
All products2,18424886.2
wrfnat57624448.4
wrfprs57624251.6
wrfsubh4562494.5
wrfsfc5762491.8

One day of HRRR CONUS output is 2,184 GRIB2 files and 886.2 GB; the query took 25 seconds. Two more queries check the schedule and the levels:

-- Surface files per cycle: the last forecast hour shows which cycles run to 48 hours
SELECT CAST(regexp_extract(path, 'hrrr\\.t([0-9]{2})z', 1) AS INT) AS cycle_utc,
       COUNT(*) AS files,
       MAX(CAST(regexp_extract(path, 'wrfsfcf([0-9]{2})', 1) AS INT)) AS last_forecast_hour
FROM binaryFile.`s3://noaa-hrrr-bdp-pds/hrrr.20211211/conus/hrrr.t*z.wrfsfcf*.grib2`
GROUP BY 1 ORDER BY 1;

-- Messages and levels in the three main files of forecast hour 3
SELECT 'wrfprs' AS product, COUNT(*) AS messages,
       COUNT(DISTINCT CASE WHEN split(value, ':')[3] = 'TMP' AND split(value, ':')[4] LIKE '% mb'
                           THEN split(value, ':')[4] END) AS levels_or_names
FROM text.`s3://noaa-hrrr-bdp-pds/hrrr.20211211/conus/hrrr.t00z.wrfprsf03.grib2.idx`
UNION ALL
SELECT 'wrfnat', COUNT(*),
       COUNT(DISTINCT CASE WHEN split(value, ':')[3] = 'TMP' AND split(value, ':')[4] LIKE '% hybrid level'
                           THEN split(value, ':')[4] END)
FROM text.`s3://noaa-hrrr-bdp-pds/hrrr.20211211/conus/hrrr.t00z.wrfnatf03.grib2.idx`
UNION ALL
SELECT 'wrfsfc', COUNT(*), COUNT(DISTINCT split(value, ':')[3])
FROM text.`s3://noaa-hrrr-bdp-pds/hrrr.20211211/conus/hrrr.t00z.wrfsfcf03.grib2.idx`;

The 00, 06, 12, and 18 UTC cycles have 49 surface files each, forecast hours 0 to 48. The other 20 cycles have 19 files each, hours 0 to 18. At forecast hour 3, the pressure-level file holds 711 messages with temperature on 40 pressure levels. The native-level file holds 1,136 messages with temperature on 50 hybrid model levels. The surface file holds 173 messages under 97 distinct variable names.

One HRRR field fetched by byte range

-- Byte ranges of selected fields in the 00 UTC run, forecast hour 3 (valid 03 UTC, 11 December 2021)
WITH idx AS (
  SELECT CAST(split(value, ':')[0] AS INT) AS msg,
         CAST(split(value, ':')[1] AS BIGINT) AS start_byte,
         split(value, ':')[3] AS variable, split(value, ':')[4] AS level
  FROM text.`s3://noaa-hrrr-bdp-pds/hrrr.20211211/conus/hrrr.t00z.wrfsfcf03.grib2.idx`
),
f AS (
  SELECT length AS file_bytes
  FROM binaryFile.`s3://noaa-hrrr-bdp-pds/hrrr.20211211/conus/hrrr.t00z.wrfsfcf03.grib2`
),
sized AS (
  -- A message ends where the next one starts; the last one ends at the end of the file
  SELECT /*+ BROADCAST(f) */ i.*, f.file_bytes,
         COALESCE(LEAD(start_byte) OVER (ORDER BY msg), f.file_bytes) - start_byte AS bytes
  FROM idx i CROSS JOIN f
)
SELECT msg, variable, level, start_byte, bytes, ROUND(100.0 * bytes / file_bytes, 2) AS pct_of_file
FROM sized
WHERE (variable, level) IN (('REFC', 'entire atmosphere'), ('MXUPHL', '5000-2000 m above ground'),
                            ('GUST', 'surface'), ('CAPE', 'surface'), ('TMP', '2 m above ground'),
                            ('UGRD', '10 m above ground'), ('APCP', 'surface'), ('MASSDEN', '8 m above ground'))
ORDER BY msg;

The file is 149,002,436 bytes, and dropping the WHERE clause lists all 173 messages. Composite reflectivity (REFC) is message 1, bytes 0 to 490,253, which is 0.33% of the file. The 2 to 5 km updraft helicity field (MXUPHL), the field forecasters scan for rotating storms, is 29,408 bytes.

Horizontal strip representing a 149 MB HRRR GRIB2 surface file with 173 messages drawn to scale. Seven highlighted messages are labeled. REFC composite reflectivity is 0.33 percent of the file, GUST 0.88 percent, and MXUPHL updraft helicity 0.02 percent. TMP 2 m temperature is 0.80 percent, UGRD 10 m wind 1.60 percent, APCP precipitation 0.38 percent, and CAPE 0.24 percent
The surface file of the 00 UTC HRRR run, forecast hour 3, on 11 December 2021: 173 fields in 149 MB. Composite reflectivity is 0.33% of the file, one HTTP range request.

Tornado warnings joined to counties and population

The NWS warning polygons record where forecasters issued severe weather warnings, with HRRR among their guidance. Warnings are forecasts too. These counts measure exposure to warnings and leave HRRR unscored. The query below takes every tornado warning issued from 18 UTC on 10 December to 12 UTC on 11 December. It joins each warning to the US Census county boundaries it touched. It adds each county's population from the American Community Survey and counts the 3 km HRRR cells per county.

-- Tornado warnings per county, 10 to 11 December 2021, with population and HRRR cell count
WITH tor AS (
  SELECT WFO, ETN, ISSUED, DAMAGETAG, geometry
  FROM wherobots_open_data.noaa.nws_watch_warnings
  WHERE VTEC_YEAR = 2021 AND PHENOM = 'TO' AND SIG = 'W'
    AND ISSUED >= TIMESTAMP '2021-12-10 18:00:00' AND ISSUED < TIMESTAMP '2021-12-11 12:00:00'
),
pop AS (
  SELECT geoid, estimate AS population
  FROM wherobots_open_data.us_census.acs_5yr_estimates
  WHERE table_id = 'B01003' AND variable = 'B01003_001' AND geo_level = 'county'
),
per_county AS (
  -- 146 warning polygons, broadcast to every county partition and indexed with an R-tree
  SELECT /*+ BROADCAST(t) */ c.GEOID, c.NAMELSAD, c.STATEFP,
         ROUND(ST_AreaSpheroid(c.geometry) / 9e6) AS hrrr_cells,   -- 3 km x 3 km = 9 km2
         COUNT(*) AS warnings,
         MAX(CASE WHEN t.DAMAGETAG = 'CATASTROPHIC' THEN 1 ELSE 0 END) AS catastrophic,
         MIN(t.ISSUED) AS first_warning
  FROM wherobots_open_data.us_census.tiger_county c
  JOIN tor t ON ST_Intersects(c.geometry, t.geometry)
  GROUP BY c.GEOID, c.NAMELSAD, c.STATEFP, c.geometry
)
SELECT pc.*, p.population
FROM per_county pc LEFT JOIN pop p ON p.geoid = pc.GEOID
ORDER BY warnings DESC, population DESC;

The query returns in about 6 seconds. The summary query reuses the three named subqueries above, each a common table expression (CTE), and replaces the final SELECT:

-- Same tor, pop and per_county CTEs as above, then:
SELECT (SELECT COUNT(*) FROM tor) AS tornado_warnings,
       (SELECT COUNT(DISTINCT WFO) FROM tor) AS nws_offices,
       (SELECT SUM(CASE WHEN DAMAGETAG = 'CATASTROPHIC' THEN 1 ELSE 0 END) FROM tor) AS catastrophic_warnings,
       (SELECT SUM(CASE WHEN DAMAGETAG = 'CONSIDERABLE' THEN 1 ELSE 0 END) FROM tor) AS considerable_warnings,
       (SELECT ROUND(SUM(ST_AreaSpheroid(geometry)) / 1e6) FROM tor) AS warned_km2_with_overlap,
       (SELECT ROUND(ST_AreaSpheroid(ST_Union_Aggr(geometry)) / 1e6) FROM tor) AS warned_km2_union,
       COUNT(*) AS counties, COUNT(DISTINCT substr(pc.GEOID, 1, 2)) AS states,
       SUM(p.population) AS population_in_counties,
       SUM(pc.catastrophic) AS catastrophic_counties,
       SUM(CASE WHEN pc.catastrophic = 1 THEN p.population ELSE 0 END) AS population_in_catastrophic_counties,
       SUM(CASE WHEN pc.warnings >= 5 THEN 1 ELSE 0 END) AS counties_with_5_plus
FROM per_county pc LEFT JOIN pop p ON p.geoid = pc.GEOID;
  • 146 tornado warnings from 15 NWS offices. 7 carried the catastrophic damage tag and 19 the considerable tag. Catastrophic is the top damage threat in NWS impact-based warnings, used for a violent tornado confirmed on the ground.
  • 256 counties in 11 states, home to 16,195,876 people. 42 counties had five or more warnings.
  • 15 counties fell under a catastrophic-tag warning, with 381,157 residents.
  • The warnings cover 184,096 km² counted with overlaps and 132,014 km² as a union.
CountyWarningsCatastrophic tagHRRR 3 km cellsPopulation
Muhlenberg County, Kentucky12yes13830,591
Ohio County, Kentucky12yes17223,735
Craighead County, Arkansas11no205113,249
Hopkins County, Kentucky11yes16045,119
Christian County, Kentucky10yes20872,069
McLean County, Kentucky10yes749,114

Graves County, Kentucky, home of Mayfield, had 4 tornado warnings, one with the catastrophic tag. It has 36,630 residents and about 160 HRRR grid cells. A zonal statistic, such as a mean, summarizes the grid cells inside a zone; for Graves County it averages about 160 HRRR values. A 12 km grid cell covers 16 times the area of a 3 km cell, which is why HRRR resolution matters at the county scale and below.

Map of Missouri, Illinois, Indiana, Kentucky, Tennessee, Arkansas, and Mississippi with counties shaded by the number of tornado warnings on the night of 10 to 11 December 2021. Warning polygons are outlined. Seven catastrophic-tag polygons are filled red in a line from northwest Tennessee across western Kentucky through Mayfield
NWS tornado warnings from 18 UTC on 10 December to 12 UTC on 11 December 2021, joined to counties in Wherobots: 146 warnings over 256 counties and 16.2 million residents. The red catastrophic-tag polygons trace the long-track storm.

Grouping the same warnings by issue hour lines them up with the forecast files of the 00 UTC run. Warnings peaked at 24 in the 02 UTC hour (forecast hour 2). The 7 catastrophic-tag warnings were issued between 02 and 05 UTC, inside forecast hours 2 to 4.

-- Tornado warnings per issue hour, labeled with the forecast hour of the 00 UTC HRRR run
SELECT date_trunc('hour', ISSUED) AS issue_hour_utc,
       (unix_timestamp(date_trunc('hour', ISSUED)) - unix_timestamp(TIMESTAMP '2021-12-11 00:00:00')) / 3600
         AS hrrr_00z_forecast_hour,
       COUNT(*) AS warnings,
       SUM(CASE WHEN DAMAGETAG = 'CATASTROPHIC' THEN 1 ELSE 0 END) AS catastrophic,
       SUM(CASE WHEN DAMAGETAG = 'CONSIDERABLE' THEN 1 ELSE 0 END) AS considerable
FROM wherobots_open_data.noaa.nws_watch_warnings
WHERE VTEC_YEAR = 2021 AND PHENOM = 'TO' AND SIG = 'W'
  AND ISSUED >= TIMESTAMP '2021-12-10 18:00:00' AND ISSUED < TIMESTAMP '2021-12-11 12:00:00'
GROUP BY 1, 2
ORDER BY 1;
Stacked bar chart of tornado warnings issued per UTC hour from 23 UTC on 10 December to 11 UTC on 11 December 2021. Each bar is labeled with the matching forecast hour of the 00 UTC HRRR run. Counts rise to 23 and 24 at 01 and 02 UTC. Red catastrophic-tag segments sit at 02, 03, and 04 UTC, under a red line marking the tornado on the ground from 02:49 to 05:47 UTC
Tornado warnings per issue hour, 10 to 11 December 2021, labeled with the matching HRRR 00 UTC forecast hour. The 7 catastrophic-tag warnings fall in forecast hours 2 to 4.

From inventory to forecast values

A Wherobots Job Run, a script run on a schedule, produces HRRR values per county or building. It fetches the needed fields by byte range. It converts each field to a Cloud Optimized GeoTIFF or NetCDF file. It appends the file to a Havasu table partitioned by cycle and forecast hour. RS_NetCDFInfo lists a converted file's variables. RS_ZonalStats then returns the maximum updraft helicity or gust per county from the join above. RS_Value samples the field at building footprints from Overture buildings. WherobotsDB runs raster and vector data in one engine; most stacks pick one. Forecast, warnings, and population can sit in one SQL query, the pattern of how to score every building in a state for catastrophe risk.

Through the Wherobots Model Context Protocol (MCP) Server, AI agents run the same queries. The models people use every day were trained on text, documents, databases, and the internet. The county join adds which counties and how many people were under a warning.

HRRR research and what changes at scale

From the RUC to the HRRR

Hourly updated forecasting at NOAA began with the Rapid Update Cycle. Benjamin and colleagues described its one-hour cycle and its three-dimensional variational (3D-Var) assimilation in An hourly assimilation-forecast cycle: the RUC (Monthly Weather Review, 2004). The RAP replaced it in 2012 with a North American domain, the WRF-ARW model, and GSI assimilation. HRRR nested a 3 km storm-scale model inside that cycle.

Convection-allowing models and their limits

Convection-allowing models changed severe weather forecasting. Their output shows storm structure that forecasters can read: a supercell's updraft helicity track, a squall line's leading edge, a bow echo. The open problem is predictability. Forecasts of individual storm cells lose skill within hours. Researchers moved toward ensembles and toward scores that credit a nearby storm. Stensrud and colleagues set the next goal, short ensemble forecasts that extend warning lead times, in Convective-scale warn-on-forecast system: a vision for 2020 (BAMS, 2009).

From HRRR to RRFS

The Rapid Refresh Forecast System is NOAA's successor to the current regional models. Version 1 runs a 3 km grid over all of North America on the Unified Forecast System's FV3 dynamical core, as described on the RRFS version 1 page. It makes 18-hour forecasts every hour and 84-hour forecasts every six hours, and adds the RRFS Ensemble Forecast System (REFS). NWS Service Change Notice 26-48 announced the RRFS and REFS implementation, first for 31 August 2026 and then for 6 October. The 2 October 2026 update set it for 3 November 2026. RRFS and REFS replace the NAM, the High-Resolution Ensemble Forecast (HREF), the Short-Range Ensemble Forecast (SREF), and the High-Resolution Window Forecast System (HiresW). In the Q&A notes of the June 2026 NWS webinar on RRFS, NOAA stated that the RAP and HRRR will not be retired at this time.

Machine learning emulators

Abdi and colleagues trained a data-driven emulator of HRRR called HRRRCast at 6 km over CONUS (Artificial Intelligence for the Earth Systems, 2026). An emulator is a neural network that imitates a physics model's output; HRRRCast has ResNet and graph neural network variants. A trained emulator runs in seconds, which makes large ensembles affordable. The open questions are extremes, physical consistency, and how to verify a model trained on another model's output. HRRR's public archive supplies the training data.

What scale changes

One day of CONUS output is 886.2 GB of GRIB2, so analysis over years of HRRR needs many machines working in parallel. Joining a forecast grid to millions of buildings, parcels, or circuits is a raster-vector spatial join. It repeats for every cycle and forecast hour. Jia Yu, Jinxuan Wu, and Mohamed Sarwat introduced distributed spatial processing on Apache Spark with GeoSpark (ACM SIGSPATIAL 2015). Yu, Zhang, and Sarwat described its spatial partitioning, indexing, and join design in Spatial data management in Apache Spark: the GeoSpark perspective and beyond (GeoInformatica, 2019). GeoSpark became Apache Sedona, the engine under WherobotsDB. Raster processing at scale explains how WherobotsDB reads only the tiles a query needs from rasters stored outside the database.

Open problems

  • Format. GRIB2 suits meteorological tools. Spatial engines read Cloud Optimized GeoTIFF, Zarr, and GeoParquet. An analysis pipeline converts first, and the conversion choices (projection, levels, compression) affect the results.
  • Verification against impacts. Point and neighborhood scores measure meteorology. Scoring a forecast by the buildings, people, or circuits it put under a correct warning needs a join like the one above, run against observed storm reports.
  • Uncertainty. A single HRRR run gives one answer, with no spread between possible outcomes. Time-lagged runs, REFS, and emulator ensembles each estimate the spread differently. Stochastic modeling of losses needs that spread as input.
  • Version changes. Each upgrade changes model biases, so a multi-year archive mixes four HRRR versions.

Conclusions

The evidence shows that HRRR is an hourly 3 km storm forecast. The hard part of using it in spatial analysis is its GRIB2 file format.

  1. HRRR is a forecast for the next 18 to 48 hours. Its hourly 3 km runs resolve storms. Each forecast stops at 18 hours, or 48 hours on four cycles a day. For later days, use GFS, which covers 16 days at about 13 km.
  2. HRRR fields can be fetched one at a time by byte range. The .idx file puts composite reflectivity at 0.33% of a 149 MB surface file and updraft helicity at 29 KB. Downloading the whole file for reflectivity moves about 300 times the bytes.
  3. HRRR output needs conversion before SQL. WherobotsDB reads GeoTIFF and NetCDF. A scheduled job run converts the needed fields and appends them to a Havasu table partitioned by cycle and forecast hour.
  4. HRRR is scored against observations, and warnings are forecasts too. The 146 tornado warnings of 10 to 11 December 2021 are forecasts. The county join measures exposure to warnings. Verifying HRRR needs observed storm reports.
  5. HRRR's 3 km grid suits county analysis better than a 12 km grid. Graves County holds about 160 HRRR cells and about 10 cells of a 12 km grid. County zonal statistics carry meaning at 3 km and little at 12 km.
  6. A single HRRR run gives no measure of spread. Compare consecutive hourly runs or use an ensemble such as REFS before acting on a single forecast.

Read more from Wherobots

Join NOAA warnings, HRRR inventories, and census boundaries in one SQL query with a Wherobots free trial at cloud.wherobots.com.

Frequently asked questions

What is the HRRR model?

The HRRR, or High-Resolution Rapid Refresh, is NOAA’s hourly updated weather forecast model for the United States. It runs on a 3 km grid over the contiguous US every hour and over Alaska every three hours. Each run starts from the latest radar, satellite, aircraft, and surface observations. Developed at NOAA’s Global Systems Laboratory, it has run operationally at NCEP since 30 September 2014.

Is the HRRR model going away?

Not yet. HRRRv4, implemented on 2 December 2020, is the current operational version. NOAA’s Rapid Refresh Forecast System (RRFS) is a 3 km system covering all of North America, with an ensemble called REFS. It is scheduled to go operational on 3 November 2026 and replaces the NAM, HREF, SREF, and HiresW. NOAA has said the RAP and HRRR will not be retired at this time.

How accurate is the HRRR model?

HRRR is most accurate in the first few forecast hours and for features its 3 km grid resolves. Its reflectivity, precipitation, temperature, dewpoint, wind, ceiling, and visibility forecasts improved across versions 1 to 4, as documented by James and colleagues in Weather and Forecasting (2022). Exact storm placement and timing remain uncertain. Forecasters compare consecutive hourly runs. They verify with neighborhood scores such as the fractions skill score, which give credit for a storm forecast near the right place.

How often does HRRR update?

HRRR runs every hour. Every run covers forecast hours 0 to 18, and the 00, 06, 12, and 18 UTC runs extend to 48 hours. On 11 December 2021, the AWS archive holds 49 surface files for each of those four cycles and 19 for each of the other 20. A sub-hourly file adds 15-minute surface fields for the first 18 hours, and HRRR Alaska runs every three hours.

What is the resolution of HRRR?

HRRR has 3 km horizontal grid spacing, so each grid cell covers about 9 square kilometers. That is fine enough to represent individual thunderstorms. The CONUS grid is 1,799 by 1,059 points on a Lambert conformal projection, with 50 native vertical levels and output on 40 pressure levels. Output is hourly, with a 15-minute sub-hourly product for surface fields.

Where can I download HRRR data?

HRRR data is free through the NOAA Open Data Dissemination program. On AWS the GRIB2 bucket is noaa-hrrr-bdp-pds, with an archive back to 2014, and Google Cloud and Azure mirror it. The University of Utah publishes a Zarr version in the hrrrzarr bucket. NOMADS at nomads.ncep.noaa.gov serves the most recent days, and every GRIB2 file has an .idx file that allows single-field downloads by byte range.

What is the difference between HRRR and GFS?

HRRR is a regional model at 3 km over the United States with hourly runs and 18 to 48 hour forecasts. GFS, the Global Forecast System, covers the whole globe at about 13 km, runs four times a day, and forecasts 16 days ahead. HRRR resolves individual storms. GFS resolves large-scale weather systems and estimates storms with a formula (convective parameterization).

What are the key differences between the GFS and HRRR weather models?

Domain, resolution, update rate, and range. GFS is global at about 13 km, updates four times a day, and runs to 16 days. HRRR covers the contiguous US and Alaska at 3 km and updates every hour. It runs to 18 hours, or 48 hours four times a day. Use GFS for the next week and HRRR for the next hours, especially for thunderstorms, wind, and smoke.

What is the difference between HRRR and RAP?

The Rapid Refresh (RAP) is HRRR’s parent model. Both update hourly. The RAP runs at 13 km over North America and estimates storms with a formula, called convective parameterization. HRRR runs at 3 km over the US and starts from the RAP. It adds radar data every 15 minutes and resolves storms directly.

What is the difference between HRRR and NAM?

The NAM runs a 12 km North American parent domain to 84 hours and 3 km nests to 60 hours, four times a day. HRRR runs at 3 km every hour to 18 or 48 hours. The NAM is scheduled for retirement when the RRFS goes operational.

What is HRRR smoke?

HRRR-Smoke is the HRRR configuration that adds wildfire smoke and carries it through the forecast. It estimates smoke emissions from fire radiative power, the heat output of fires measured by satellites. Its near-surface smoke field (MASSDEN) and vertically integrated smoke are the source of public HRRR smoke maps and forecasts.