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?

No group in this view yet has enough scored days to rank (n < 30). Every number below is still published, greyed out, with its sample size.

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 minimum temperature

the last 90 days, all stations pooled, 12Z initialization, bilinear 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
GraphCast (IFS init)graphcast_ifs 1.99 [1.86, 2.18] +0.30 [0.04, 0.48] 76% +0.14 +0.28 2723 stns · 2 QC
ECMWF AIFS Singleaifs_single 2.15 [1.98, 2.34] +0.16 [-0.08, 0.32] 73% +0.08 +0.49 2923 stns · 2 QC
ECMWF IFS HRESifs_hres 2.16 [2.01, 2.34] +0.92 [0.42, 1.24] 74% +0.06 +0.26 2423 stns · 2 QC
Aurora (IFS init)aurora_ifs 2.23 [1.95, 2.51] -0.11 [-1.03, 0.80] 67% +0.14 +0.43 223 stns · 2 QC
Pangu-Weather (IFS init)pangu_ifs 2.24 [1.94, 2.54] -0.23 [-0.89, 0.43] 74% +0.14 +0.59 223 stns · 2 QC
Persistence (baseline)persistence · baseline 2.43 [2.29, 2.59] -0.09 [-0.26, 0.07] 70% 9023 stns · 2 QC
FourCastNet v2 (IFS init)fourcastnet_ifs 2.45 [2.11, 2.80] +0.67 [-0.30, 1.65] 72% +0.05 +0.39 223 stns · 2 QC
Pangu-Weather (GFS init)pangu_gfs 2.53 [2.48, 2.58] +0.81 [-0.36, 1.98] 70% +0.02 +0.27 223 stns · 2 QC
FourCastNet v2 (GFS init)fourcastnet_gfs 2.60 [2.35, 2.85] +0.94 [0.06, 1.83] 70% -0.00 +0.45 223 stns · 2 QC
Aurora (GFS init)aurora_gfs 2.69 [2.60, 2.78] +0.25 [-0.55, 1.06] 63% -0.04 +0.50 223 stns · 2 QC
GraphCast (GFS init)graphcast_gfs 2.73 [2.62, 2.85] +0.62 [-0.07, 1.30] 67% -0.06 +0.57 223 stns · 2 QC
NCEP GFSgfs 2.75 [2.60, 2.94] +1.64 [1.28, 2.01] 62% -0.17 +0.22 2923 stns · 2 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 minimum temperature

the last 90 days, all stations pooled, 12Z initialization, bilinear 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
GraphCast (IFS init)graphcast_ifs 2.13 [2.02, 2.25] +0.31 [-0.05, 0.60] 74% +0.32 +0.49 2523 stns
ECMWF AIFS Singleaifs_single 2.31 [2.12, 2.53] +0.30 [0.06, 0.54] 71% +0.26 +0.56 2723 stns · 2 QC
ECMWF IFS HRESifs_hres 2.50 [2.33, 2.78] +1.22 [0.88, 1.58] 68% +0.20 +0.33 2223 stns · 2 QC
NCEP GFSgfs 3.08 [2.90, 3.31] +1.92 [1.52, 2.37] 56% +0.02 +0.40 2723 stns · 2 QC
Persistence (baseline)persistence · baseline 3.69 [3.43, 3.98] -0.31 [-0.77, 0.13] 56% 9023 stns · 2 QC

Lead day 5 — daily minimum temperature

the last 90 days, all stations pooled, 12Z initialization, bilinear 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
GraphCast (IFS init)graphcast_ifs 2.42 [2.21, 2.65] +0.31 [-0.07, 0.66] 68% +0.23 +0.29 2523 stns · 2 QC
ECMWF AIFS Singleaifs_single 2.44 [2.16, 2.70] +0.21 [-0.16, 0.60] 67% +0.22 +0.18 2423 stns · 2 QC
ECMWF IFS HRESifs_hres 2.81 [2.50, 3.04] +1.38 [0.77, 1.89] 61% +0.11 +0.05 2023 stns · 2 QC
NCEP GFSgfs 3.24 [3.09, 3.40] +1.71 [1.21, 2.10] 54% -0.03 +0.08 2523 stns · 2 QC
Persistence (baseline)persistence · baseline 3.92 [3.52, 4.39] -0.52 [-1.27, 0.17] 54% 9023 stns · 2 QC

Lead day 7 — daily minimum temperature

the last 90 days, all stations pooled, 12Z initialization, bilinear 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 AIFS Singleaifs_single 2.63 [2.40, 2.83] +0.17 [-0.22, 0.52] 66% +0.29 +0.49 2323 stns · 2 QC
GraphCast (IFS init)graphcast_ifs 2.64 [2.44, 2.83] +0.35 [0.01, 0.69] 65% +0.28 +0.52 2323 stns · 2 QC
ECMWF IFS HRESifs_hres 2.98 [2.68, 3.75] +1.61 [1.32, 2.00] 61% +0.20 +0.28 1722.9 stns · 2 QC
NCEP GFSgfs 3.68 [3.41, 4.00] +1.68 [1.17, 2.26] 50% -0.00 +0.19 2323 stns · 2 QC
Persistence (baseline)persistence · baseline 4.24 [3.86, 4.74] -0.66 [-1.65, 0.19] 49% 9023 stns · 2 QC

Every model × every lead day

MAE in °F with the bias underneath, the last 90 days, 12Z, bilinear, daily minimum. The sparkline is the same model's MAE across lead days 1–9 on a shared vertical scale.

Model d1d2d3d4d5d6d7d8d9lead 1–9
ECMWF AIFS Singleaifs_single 2.15+0.16 · n=29 2.24+0.30 · n=28 2.31+0.30 · n=27 2.36+0.25 · n=26 2.44+0.21 · n=24 2.57+0.22 · n=24 2.63+0.17 · n=23 2.77+0.07 · n=22 3.01-0.19 · n=21 ECMWF AIFS Single MAE by lead day 1 to 9
Aurora (GFS init)aurora_gfs 2.69+0.25 · n=2 2.75-0.77 · n=1 Aurora (GFS init) MAE by lead day 1 to 9
Aurora (IFS init)aurora_ifs 2.23-0.11 · n=2 2.48-1.07 · n=1 Aurora (IFS init) MAE by lead day 1 to 9
FourCastNet v2 (GFS init)fourcastnet_gfs 2.60+0.94 · n=2 2.69+0.66 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9
FourCastNet v2 (IFS init)fourcastnet_ifs 2.45+0.67 · n=2 2.41+0.50 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9
NCEP GFSgfs 2.75+1.64 · n=29 2.91+1.77 · n=28 3.08+1.92 · n=27 3.09+1.85 · n=26 3.24+1.71 · n=25 3.49+1.68 · n=24 3.68+1.68 · n=23 3.82+1.61 · n=22 3.85+1.39 · n=21 NCEP GFS MAE by lead day 1 to 9
GraphCast (GFS init)graphcast_gfs 2.73+0.62 · n=2 2.61-0.38 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9
GraphCast (IFS init)graphcast_ifs 1.99+0.30 · n=27 2.08+0.31 · n=26 2.13+0.31 · n=25 2.29+0.40 · n=25 2.42+0.31 · n=25 2.59+0.35 · n=24 2.64+0.35 · n=23 2.94+0.27 · n=22 3.31-0.14 · n=21 GraphCast (IFS init) MAE by lead day 1 to 9
ECMWF IFS HRESifs_hres 2.16+0.92 · n=24 2.38+1.14 · n=22 2.50+1.22 · n=22 2.75+1.43 · n=21 2.81+1.38 · n=20 2.83+1.55 · n=19 2.98+1.61 · n=17 3.31+1.75 · n=17 3.38+1.16 · n=15 ECMWF IFS HRES MAE by lead day 1 to 9
Pangu-Weather (GFS init)pangu_gfs 2.53+0.81 · n=2 2.55-0.35 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9
Pangu-Weather (IFS init)pangu_ifs 2.24-0.23 · n=2 2.66-0.84 · n=1 Pangu-Weather (IFS init) MAE by lead day 1 to 9
Persistence (baseline)persistence 2.43-0.09 · n=90 3.33-0.19 · n=90 3.69-0.31 · n=90 3.80-0.42 · n=90 3.92-0.52 · n=90 4.13-0.58 · n=90 4.24-0.66 · n=90 4.32-0.75 · n=90 4.46-0.87 · n=90 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 minimum, 90d window, 12Z, bilinear125°W115°W105°W95°W85°W75°W65°W25°N30°N35°N40°N45°N50°NKATL Atlanta Hartsfield: bias -0.96 °F, n = 2KATLKAUS Austin Bergstrom: bias +2.33 °F, n = 29KAUS+KBOS Boston Logan: bias +0.48 °F, n = 23KBOS+KDCA Washington Reagan: bias -0.31 °F, n = 2KDCAKDEN Denver Intl: bias +1.46 °F, n = 27KDEN+KDFW Dallas-Fort Worth: bias -0.36 °F, n = 2KDFWKEWR Newark Liberty: bias +0.53 °F, n = 2KEWR+KIAH Houston Bush: bias +0.43 °F, n = 2KIAH+KLAS Las Vegas Harry Reid: bias -1.52 °F, n = 29KLASKLAX Los Angeles Intl: bias -0.03 °F, n = 29KLAXKMIA Miami Intl: bias -0.31 °F, n = 24KMIAKMSP Minneapolis-St Paul: bias -0.98 °F, n = 2KMSPKMSY New Orleans Intl: bias +1.01 °F, n = 29KMSY+KNYC New York Central Park: bias -0.59 °F, n = 2KNYCKOKC Oklahoma City: bias +2.63 °F, n = 2KOKC+KORD Chicago O'Hare: bias +0.99 °F, n = 2KORD+KPHL Philadelphia Intl: bias +0.79 °F, n = 2KPHL+KPHX Phoenix Sky Harbor: bias -0.41 °F, n = 2KPHXKSAN San Diego Lindbergh: bias +0.22 °F, n = 2KSAN+KSAT San Antonio Intl: bias -0.19 °F, n = 27KSATKSEA Seattle-Tacoma: bias +0.05 °F, n = 2KSEA+KSFO San Francisco Intl: bias -0.46 °F, n = 2KSFOKTTN Trenton Mercer: bias +3.12 °F, n = 29KTTN+
Each station's best model at lead day 1 (the last 90 days, 12Z, bilinear, daily minimum): 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 Aurora (GFS init)0.96 -0.96 2
KAUS Austin Bergstrom ECMWF AIFS Single2.54 +2.33 29
KBOS Boston Logan ECMWF IFS HRES1.20 +0.48 23
KDCA Washington Reagan FourCastNet v2 (IFS init)0.31 -0.31 2
KDEN Denver Intl GraphCast (IFS init)2.42 +1.46 27
KDFW Dallas-Fort Worth FourCastNet v2 (GFS init)0.41 -0.36 2
KEWR Newark Liberty Aurora (IFS init)0.53 +0.53 2
KIAH Houston Bush Aurora (IFS init)0.43 +0.43 2
KLAS Las Vegas Harry Reid NCEP GFS3.32 -1.52 29
KLAX Los Angeles Intl ECMWF AIFS Single0.53 -0.03 29
KMIA Miami Intl ECMWF IFS HRES1.46 -0.31 24
KMSP Minneapolis-St Paul Pangu-Weather (IFS init)0.98 -0.98 2
KMSY New Orleans Intl NCEP GFS1.47 +1.01 29
KNYC New York Central Park Aurora (IFS init)0.77 -0.59 2
KOKC Oklahoma City FourCastNet v2 (IFS init)2.63 +2.63 2
KORD Chicago O'Hare Aurora (IFS init)0.99 +0.99 2
KPHL Philadelphia Intl Aurora (GFS init)0.79 +0.79 2
KPHX Phoenix Sky Harbor Pangu-Weather (GFS init)0.77 -0.41 2
KSAN San Diego Lindbergh FourCastNet v2 (GFS init)0.76 +0.22 2
KSAT San Antonio Intl GraphCast (IFS init)0.93 -0.19 27
KSEA Seattle-Tacoma GraphCast (GFS init)0.33 +0.05 2
KSFO San Francisco Intl GraphCast (GFS init)0.47 -0.46 2
KTTN Trenton Mercer NCEP GFS3.13 +3.12 29

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-29 → 2026-08-302
Aurora (IFS init) 2026-08-29 → 2026-08-302
FourCastNet v2 (GFS init) 2026-08-29 → 2026-08-302
FourCastNet v2 (IFS init) 2026-08-29 → 2026-08-302
NCEP GFS 2026-08-02 → 2026-08-3029
GraphCast (GFS init) 2026-08-29 → 2026-08-302
GraphCast (IFS init) 2026-01-02 → 2026-08-3032
ECMWF IFS HRES 2026-08-02 → 2026-08-3024
Pangu-Weather (GFS init) 2026-08-29 → 2026-08-302
Pangu-Weather (IFS init) 2026-08-29 → 2026-08-302
Persistence (baseline) 2024-01-02 → 2026-08-30972

Stations