Raw model output on the native 0.25° grid — no MOS, no bias correction, no post-processing. Scores understate operational forecast quality. Read the fairness statement →

CastCheck methodology v0.2 · data through 2026-08-30

How far off was each weather model?

Over all available history, across 23 U.S. stations, the most accurate raw daily maximum temperature forecast 1 day ahead is GraphCast (IFS init): mean absolute error 5.04 °F [4.88, 5.22], bias -4.75 °F, on n = 33 scored days.

Scope: raw model output on the native 0.25° grid, daily maximum/minimum taken as the max/min of the four common 6-hourly samples, scored against the first final NWS Daily Climate Report, errors computed in °C and shown in °F (methodology v0.2).

Lead day 1 — daily maximum temperature

all available history, all stations pooled, 00Z initialization, nearest interpolation. Lower MAE is better; bias is positive when the model is too warm. Every number links to its permanent page. Skill is measured against persistence; skill, debiased repeats it after removing each station's constant offset, which is why a station with a steady warm bias can look skill-less in one column and skilful in the other. Under n: the mean number of stations behind each scored day, and how many of those days carry a QC flag on the observation.
rankModel MAE °FBias °F ±3 °F Skill Skill, debiased nvs leader
1 GraphCast (IFS init)graphcast_ifs 5.04 [4.88, 5.22] -4.75 [-4.99, -4.54] 23% -0.66 +0.58 3323 stns · 2 QC lowest MAE in this view
NCEP GFSgfs 3.17 [3.07, 3.30] -0.99 [-1.44, -0.38] 55% -0.18 -0.01 2923 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.49 [3.35, 3.66] -3.00 [-3.28, -2.75] 45% -0.30 +0.37 2923 stns · 2 QC
ECMWF IFS HRESifs_hres 3.64 [3.31, 3.98] -2.80 [-3.40, -2.12] 46% -0.36 -0.02 2322.7 stns · 2 QC
Pangu-Weather (GFS init)pangu_gfs 3.68 [3.68, 3.68] -2.86 [-2.86, -2.86] 48% -0.16 123 stns · 1 QC
FourCastNet v2 (GFS init)fourcastnet_gfs 4.02 [4.02, 4.02] -3.96 [-3.96, -3.96] 39% -0.27 123 stns · 1 QC
FourCastNet v2 (IFS init)fourcastnet_ifs 4.07 [3.75, 4.38] -3.68 [-3.75, -3.60] 39% -0.32 +0.88 223 stns · 2 QC
Pangu-Weather (IFS init)pangu_ifs 4.27 [3.94, 4.60] -3.53 [-3.73, -3.32] 24% -0.38 +0.69 223 stns · 2 QC
Persistence (baseline)persistence · baseline 4.84 [4.63, 5.08] -0.04 [-0.17, 0.09] 47% 97223 stns · 7 QC
Aurora (IFS init)aurora_ifs 5.21 [4.92, 5.51] -5.19 [-5.49, -4.88] 24% -0.69 +0.54 223 stns · 2 QC
GraphCast (GFS init)graphcast_gfs 5.97 [5.97, 5.97] -5.88 [-5.88, -5.88] 9% -0.88 123 stns · 1 QC
Aurora (GFS init)aurora_gfs 6.15 [6.15, 6.15] -6.10 [-6.10, -6.10] 17% -0.94 123 stns · 1 QC

+ model too warm · − model too cold · bias interval includes zero · ★ lowest MAE · = not distinguishable from the leader · ▼ significantly worse · n < 30 greyed and unranked · CI is a 95 % moving-block bootstrap interval.

Lead day 3 — daily maximum temperature

all available history, all stations pooled, 00Z initialization, nearest interpolation. Lower MAE is better; bias is positive when the model is too warm. Every number links to its permanent page. Skill is measured against persistence; skill, debiased repeats it after removing each station's constant offset, which is why a station with a steady warm bias can look skill-less in one column and skilful in the other. Under n: the mean number of stations behind each scored day, and how many of those days carry a QC flag on the observation.
rankModel MAE °FBias °F ±3 °F Skill Skill, debiased nvs leader
1 GraphCast (IFS init)graphcast_ifs 5.28 [4.93, 5.72] -4.91 [-5.36, -4.50] 26% -0.18 +0.64 3123 stns lowest MAE in this view
NCEP GFSgfs 3.46 [3.30, 3.65] -0.76 [-1.47, -0.07] 52% +0.04 +0.28 2723 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.65 [3.45, 3.88] -2.97 [-3.25, -2.72] 42% -0.01 +0.55 2723 stns · 2 QC
ECMWF IFS HRESifs_hres 3.77 [3.53, 3.90] -2.51 [-2.94, -1.84] 44% -0.06 +0.36 2223 stns · 2 QC
Persistence (baseline)persistence · baseline 7.24 [6.87, 7.62] -0.11 [-0.47, 0.22] 34% 97023 stns · 7 QC

Lead day 5 — daily maximum temperature

all available history, all stations pooled, 00Z initialization, nearest interpolation. Lower MAE is better; bias is positive when the model is too warm. Every number links to its permanent page. Skill is measured against persistence; skill, debiased repeats it after removing each station's constant offset, which is why a station with a steady warm bias can look skill-less in one column and skilful in the other. Under n: the mean number of stations behind each scored day, and how many of those days carry a QC flag on the observation.
rankModel MAE °FBias °F ±3 °F Skill Skill, debiased nvs leader
1 GraphCast (IFS init)graphcast_ifs 5.52 [5.07, 5.98] -4.77 [-5.32, -4.02] 24% -0.07 +0.62 3123 stns · 3 QC lowest MAE in this view
NCEP GFSgfs 3.72 [3.31, 4.22] -1.15 [-1.88, -0.22] 50% +0.05 +0.35 2523 stns · 2 QC
ECMWF IFS HRESifs_hres 3.93 [3.60, 4.11] -2.59 [-3.13, -1.85] 43% -0.03 +0.43 1822.9 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.94 [3.63, 4.22] -3.16 [-3.49, -2.82] 42% -0.00 +0.52 2523 stns · 2 QC
Persistence (baseline)persistence · baseline 7.84 [7.44, 8.22] -0.19 [-0.73, 0.29] 30% 96823 stns · 7 QC

Lead day 7 — daily maximum temperature

all available history, all stations pooled, 00Z initialization, nearest interpolation. Lower MAE is better; bias is positive when the model is too warm. Every number links to its permanent page. Skill is measured against persistence; skill, debiased repeats it after removing each station's constant offset, which is why a station with a steady warm bias can look skill-less in one column and skilful in the other. Under n: the mean number of stations behind each scored day, and how many of those days carry a QC flag on the observation. in the rank column means fewer than 30 scored days, so the group is published but not ranked.
rankModel MAE °FBias °F ±3 °F Skill Skill, debiased nvs leader
ECMWF IFS HRESifs_hres 3.82 [3.36, 4.02] -2.41 [-2.90, -1.58] 46% +0.10 +0.30 1822.9 stns · 2 QC
NCEP GFSgfs 4.11 [3.64, 4.42] -1.47 [-1.91, -0.75] 46% +0.02 +0.24 2323 stns · 2 QC
ECMWF AIFS Singleaifs_single 4.39 [3.90, 4.86] -3.87 [-4.33, -3.38] 40% -0.05 +0.41 2323 stns · 2 QC
GraphCast (IFS init)graphcast_ifs 5.89 [5.37, 6.46] -5.19 [-5.94, -4.46] 27% -0.09 +0.43 2923 stns · 3 QC
Persistence (baseline)persistence · baseline 8.15 [7.72, 8.56] -0.28 [-0.92, 0.35] 29% 96623 stns · 7 QC

Every model × every lead day

MAE in °F with the bias underneath, all available history, 00Z, nearest, daily maximum. The sparkline is the same model's MAE across lead days 1–9 on a shared vertical scale.

Model d0d1d2d3d4d5d6d7d8d9lead 1–9
ECMWF AIFS Singleaifs_single 3.44-2.97 · n=30 3.49-3.00 · n=29 3.66-3.08 · n=28 3.65-2.97 · n=27 3.71-3.10 · n=26 3.94-3.16 · n=25 4.20-3.50 · n=24 4.39-3.87 · n=23 4.80-4.16 · n=22 5.06-4.10 · n=21 ECMWF AIFS Single MAE by lead day 1 to 9
Aurora (GFS init)aurora_gfs 5.71-5.71 · n=2 6.15-6.10 · n=1 Aurora (GFS init) MAE by lead day 1 to 9
Aurora (IFS init)aurora_ifs 5.22-4.96 · n=3 5.21-5.19 · n=2 4.93-4.71 · n=1 Aurora (IFS init) MAE by lead day 1 to 9
FourCastNet v2 (GFS init)fourcastnet_gfs 4.45-4.27 · n=2 4.02-3.96 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9
FourCastNet v2 (IFS init)fourcastnet_ifs 4.70-4.48 · n=3 4.07-3.68 · n=2 3.75-3.58 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9
NCEP GFSgfs 2.88-1.05 · n=30 3.17-0.99 · n=29 3.33-1.03 · n=28 3.46-0.76 · n=27 3.45-0.93 · n=26 3.72-1.15 · n=25 3.82-1.04 · n=24 4.11-1.47 · n=23 4.51-1.54 · n=22 4.88-1.02 · n=21 NCEP GFS MAE by lead day 1 to 9
GraphCast (GFS init)graphcast_gfs 5.61-5.61 · n=2 5.97-5.88 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9
GraphCast (IFS init)graphcast_ifs 4.71-4.40 · n=34 5.04-4.75 · n=33 5.21-4.90 · n=32 5.28-4.91 · n=31 5.38-4.91 · n=31 5.52-4.77 · n=31 5.84-5.04 · n=30 5.89-5.19 · n=29 6.22-5.30 · n=28 6.58-4.68 · n=27 GraphCast (IFS init) MAE by lead day 1 to 9
ECMWF IFS HRESifs_hres 3.34-2.67 · n=25 3.64-2.80 · n=23 3.63-2.62 · n=23 3.77-2.51 · n=22 3.74-2.50 · n=20 3.93-2.59 · n=18 4.27-2.26 · n=19 3.82-2.41 · n=18 4.52-2.61 · n=17 4.28-1.27 · n=16 ECMWF IFS HRES MAE by lead day 1 to 9
Pangu-Weather (GFS init)pangu_gfs 3.92-3.24 · n=2 3.68-2.86 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9
Pangu-Weather (IFS init)pangu_ifs 3.81-3.19 · n=3 4.27-3.53 · n=2 4.22-3.52 · n=1 Pangu-Weather (IFS init) MAE by lead day 1 to 9
Persistence (baseline)persistence 4.84-0.04 · n=972 6.60-0.07 · n=971 7.24-0.11 · n=970 7.57-0.15 · n=969 7.84-0.19 · n=968 7.97-0.23 · n=967 8.15-0.28 · n=966 8.25-0.32 · n=965 8.31-0.35 · n=964 Persistence (baseline) MAE by lead day 1 to 9

Where the errors are

Mean bias in °F of each station's best model, lead day 1, daily maximum, all window, 00Z, nearest125°W115°W105°W95°W85°W75°W65°W25°N30°N35°N40°N45°N50°NKATL Atlanta Hartsfield: bias -1.24 °F, n = 23KATLKAUS Austin Bergstrom: bias -1.15 °F, n = 29KAUSKBOS Boston Logan: bias -0.21 °F, n = 22KBOSKDCA Washington Reagan: bias -1.65 °F, n = 2KDCAKDEN Denver Intl: bias -0.23 °F, n = 1KDENKDFW Dallas-Fort Worth: bias -1.65 °F, n = 1KDFWKEWR Newark Liberty: bias +0.74 °F, n = 2KEWR+KIAH Houston Bush: bias -0.38 °F, n = 29KIAHKLAS Las Vegas Harry Reid: bias -3.25 °F, n = 22KLASKLAX Los Angeles Intl: bias +0.55 °F, n = 29KLAX+KMIA Miami Intl: bias -3.16 °F, n = 29KMIAKMSP Minneapolis-St Paul: bias -0.96 °F, n = 1KMSPKMSY New Orleans Intl: bias -2.86 °F, n = 1KMSYKNYC New York Central Park: bias -0.02 °F, n = 1KNYCKOKC Oklahoma City: bias -2.38 °F, n = 1KOKCKORD Chicago O'Hare: bias -2.46 °F, n = 2KORDKPHL Philadelphia Intl: bias -1.52 °F, n = 2KPHLKPHX Phoenix Sky Harbor: bias -2.08 °F, n = 22KPHXKSAN San Diego Lindbergh: bias -1.38 °F, n = 1KSANKSAT San Antonio Intl: bias -1.25 °F, n = 29KSATKSEA Seattle-Tacoma: bias -1.83 °F, n = 1KSEAKSFO San Francisco Intl: bias +0.58 °F, n = 1KSFO+KTTN Trenton Mercer: bias -0.18 °F, n = 2KTTN
Each station's best model at lead day 1 (all available history, 00Z, nearest, daily maximum): dot area grows with the number of scored days, fill is the mean bias (warm = model too warm, cool = too cold, grey = interval includes zero). There is no coastline because CastCheck ships no third-party boundary file; the frame is a latitude/longitude graticule. Hover a dot for its numbers.
The same data as a table
StationBest model MAE °FBias °F n
KATL Atlanta Hartsfield ECMWF IFS HRES2.10 -1.24 23
KAUS Austin Bergstrom NCEP GFS1.48 -1.15 29
KBOS Boston Logan ECMWF IFS HRES2.39 -0.21 22
KDCA Washington Reagan Pangu-Weather (IFS init)1.65 -1.65 2
KDEN Denver Intl Pangu-Weather (GFS init)0.23 -0.23 1
KDFW Dallas-Fort Worth Pangu-Weather (GFS init)1.65 -1.65 1
KEWR Newark Liberty Pangu-Weather (IFS init)0.74 +0.74 2
KIAH Houston Bush NCEP GFS1.28 -0.38 29
KLAS Las Vegas Harry Reid ECMWF IFS HRES4.29 -3.25 22
KLAX Los Angeles Intl ECMWF AIFS Single1.47 +0.55 29
KMIA Miami Intl NCEP GFS3.16 -3.16 29
KMSP Minneapolis-St Paul Pangu-Weather (GFS init)0.96 -0.96 1
KMSY New Orleans Intl FourCastNet v2 (GFS init)2.86 -2.86 1
KNYC New York Central Park Aurora (GFS init)0.02 -0.02 1
KOKC Oklahoma City Pangu-Weather (GFS init)2.38 -2.38 1
KORD Chicago O'Hare FourCastNet v2 (IFS init)2.46 -2.46 2
KPHL Philadelphia Intl Pangu-Weather (IFS init)1.70 -1.52 2
KPHX Phoenix Sky Harbor ECMWF IFS HRES2.39 -2.08 22
KSAN San Diego Lindbergh FourCastNet v2 (GFS init)1.38 -1.38 1
KSAT San Antonio Intl NCEP GFS1.72 -1.25 29
KSEA Seattle-Tacoma FourCastNet v2 (GFS init)1.83 -1.83 1
KSFO San Francisco Intl Aurora (GFS init)0.58 +0.58 1
KTTN Trenton Mercer Aurora (IFS init)0.38 -0.18 2

Data availability

Each model is scored only over its own available period (2024-01-02 → 2026-08-30); the windows above are therefore not identical across models. Pairwise comparisons on the permanent-link pages use common days only.

ModelPeriod Scored daysCoverage
ECMWF AIFS Single 2026-08-02 → 2026-08-3029
Aurora (GFS init) 2026-08-30 → 2026-08-301
Aurora (IFS init) 2026-08-29 → 2026-08-302
FourCastNet v2 (GFS init) 2026-08-30 → 2026-08-301
FourCastNet v2 (IFS init) 2026-08-29 → 2026-08-302
NCEP GFS 2026-08-02 → 2026-08-3029
GraphCast (GFS init) 2026-08-30 → 2026-08-301
GraphCast (IFS init) 2026-01-02 → 2026-08-3033
ECMWF IFS HRES 2026-08-02 → 2026-08-3023
Pangu-Weather (GFS init) 2026-08-30 → 2026-08-301
Pangu-Weather (IFS init) 2026-08-29 → 2026-08-302
Persistence (baseline) 2024-01-02 → 2026-08-30972

Stations