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 maximum 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
NCEP GFSgfs 2.78 [2.66, 2.91] -0.93 [-1.32, -0.47] 62% -0.03 +0.10 2923 stns · 2 QC
Persistence (baseline)persistence · baseline 3.22 [2.96, 3.51] -0.08 [-0.27, 0.11] 61% 9023 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.52 [3.36, 3.70] -3.14 [-3.42, -2.95] 43% -0.31 +0.42 2923 stns · 2 QC
ECMWF IFS HRESifs_hres 3.65 [3.48, 3.85] -3.22 [-3.48, -2.95] 44% -0.37 +0.26 2423 stns · 2 QC
Pangu-Weather (IFS init)pangu_ifs 3.70 [3.36, 4.03] -3.03 [-3.44, -2.63] 41% -0.20 +0.39 223 stns · 2 QC
FourCastNet v2 (GFS init)fourcastnet_gfs 3.91 [3.51, 4.31] -3.58 [-3.67, -3.49] 46% -0.27 +0.87 223 stns · 2 QC
Pangu-Weather (GFS init)pangu_gfs 4.07 [3.79, 4.36] -3.34 [-3.77, -2.91] 35% -0.32 +0.35 223 stns · 2 QC
FourCastNet v2 (IFS init)fourcastnet_ifs 4.08 [3.83, 4.34] -3.76 [-3.83, -3.70] 43% -0.32 +0.90 223 stns · 2 QC
GraphCast (IFS init)graphcast_ifs 5.28 [5.05, 5.54] -5.22 [-5.49, -4.98] 20% -0.98 +0.50 2723 stns · 2 QC
Aurora (IFS init)aurora_ifs 5.62 [5.36, 5.88] -5.62 [-5.88, -5.36] 22% -0.82 +0.61 223 stns · 2 QC
GraphCast (GFS init)graphcast_gfs 5.86 [5.47, 6.24] -5.86 [-6.24, -5.47] 15% -0.90 +0.42 223 stns · 2 QC
Aurora (GFS init)aurora_gfs 6.53 [6.26, 6.79] -6.53 [-6.79, -6.26] 11% -1.11 +0.60 223 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 maximum 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
NCEP GFSgfs 3.10 [2.70, 3.51] -0.80 [-1.48, -0.07] 57% +0.14 +0.25 2723 stns · 2 QC
ECMWF IFS HRESifs_hres 3.65 [3.53, 3.80] -2.89 [-3.05, -2.58] 46% -0.03 +0.51 2223 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.69 [3.52, 3.89] -3.25 [-3.50, -3.05] 40% -0.02 +0.60 2723 stns · 2 QC
Persistence (baseline)persistence · baseline 4.83 [4.30, 5.38] -0.28 [-0.80, 0.22] 47% 9023 stns · 2 QC
GraphCast (IFS init)graphcast_ifs 5.53 [5.11, 5.99] -5.42 [-5.90, -5.00] 20% -0.53 +0.49 2523 stns

Lead day 5 — daily maximum 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
NCEP GFSgfs 3.35 [3.03, 3.55] -1.13 [-1.78, -0.04] 56% +0.15 +0.36 2523 stns · 2 QC
ECMWF IFS HRESifs_hres 3.73 [3.54, 3.86] -2.64 [-3.22, -2.25] 45% +0.03 +0.53 2023 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.85 [3.70, 4.01] -3.35 [-3.70, -3.02] 38% +0.02 +0.60 2423 stns · 2 QC
Persistence (baseline)persistence · baseline 5.18 [4.54, 5.84] -0.48 [-1.29, 0.28] 43% 9023 stns · 2 QC
GraphCast (IFS init)graphcast_ifs 5.73 [5.29, 6.24] -5.44 [-5.92, -5.00] 21% -0.46 +0.50 2523 stns · 2 QC

Lead day 7 — daily maximum 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
NCEP GFSgfs 3.84 [3.64, 4.03] -1.19 [-1.68, -0.18] 51% +0.08 +0.19 2323 stns · 2 QC
ECMWF IFS HRESifs_hres 4.06 [3.36, 4.37] -3.08 [-3.71, -2.28] 43% +0.06 +0.32 1722.9 stns · 2 QC
ECMWF AIFS Singleaifs_single 4.33 [4.06, 4.63] -3.83 [-4.15, -3.54] 38% -0.03 +0.56 2323 stns · 2 QC
Persistence (baseline)persistence · baseline 5.38 [4.82, 5.99] -0.68 [-1.61, 0.28] 40% 9023 stns · 2 QC
GraphCast (IFS init)graphcast_ifs 5.87 [5.19, 6.52] -5.59 [-6.27, -4.91] 23% -0.40 +0.40 2323 stns · 2 QC

Every model × every lead day

MAE in °F with the bias underneath, the last 90 days, 12Z, bilinear, daily maximum. 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 3.52-3.14 · n=29 3.63-3.30 · n=28 3.69-3.25 · n=27 3.70-3.20 · n=26 3.85-3.35 · n=24 4.16-3.52 · n=24 4.33-3.83 · n=23 4.69-4.22 · n=22 5.16-4.70 · n=21 ECMWF AIFS Single MAE by lead day 1 to 9
Aurora (GFS init)aurora_gfs 6.53-6.53 · n=2 6.80-6.80 · n=1 Aurora (GFS init) MAE by lead day 1 to 9
Aurora (IFS init)aurora_ifs 5.62-5.62 · n=2 5.26-5.22 · n=1 Aurora (IFS init) MAE by lead day 1 to 9
FourCastNet v2 (GFS init)fourcastnet_gfs 3.91-3.58 · n=2 3.68-3.68 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9
FourCastNet v2 (IFS init)fourcastnet_ifs 4.08-3.76 · n=2 3.43-3.39 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9
NCEP GFSgfs 2.78-0.93 · n=29 2.98-0.96 · n=28 3.10-0.80 · n=27 3.25-1.04 · n=26 3.35-1.13 · n=25 3.77-1.47 · n=24 3.84-1.19 · n=23 4.23-1.38 · n=22 4.90-1.52 · n=21 NCEP GFS MAE by lead day 1 to 9
GraphCast (GFS init)graphcast_gfs 5.86-5.86 · n=2 6.34-6.34 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9
GraphCast (IFS init)graphcast_ifs 5.28-5.22 · n=27 5.42-5.35 · n=26 5.53-5.42 · n=25 5.53-5.30 · n=25 5.73-5.44 · n=25 5.64-5.35 · n=24 5.87-5.59 · n=23 6.43-5.99 · n=22 6.60-5.99 · n=21 GraphCast (IFS init) MAE by lead day 1 to 9
ECMWF IFS HRESifs_hres 3.65-3.22 · n=24 3.65-3.05 · n=22 3.65-2.89 · n=22 3.63-2.75 · n=21 3.73-2.64 · n=20 3.79-2.55 · n=19 4.06-3.08 · n=17 4.21-3.02 · n=17 4.82-3.57 · n=15 ECMWF IFS HRES MAE by lead day 1 to 9
Pangu-Weather (GFS init)pangu_gfs 4.07-3.34 · n=2 3.84-3.31 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9
Pangu-Weather (IFS init)pangu_ifs 3.70-3.03 · n=2 3.60-2.79 · n=1 Pangu-Weather (IFS init) MAE by lead day 1 to 9
Persistence (baseline)persistence 3.22-0.08 · n=90 4.34-0.15 · n=90 4.83-0.28 · n=90 5.04-0.38 · n=90 5.18-0.48 · n=90 5.32-0.58 · n=90 5.38-0.68 · n=90 5.43-0.80 · n=90 5.50-0.95 · 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 maximum, 90d window, 12Z, bilinear125°W115°W105°W95°W85°W75°W65°W25°N30°N35°N40°N45°N50°NKATL Atlanta Hartsfield: bias -2.04 °F, n = 2KATLKAUS Austin Bergstrom: bias -1.11 °F, n = 29KAUSKBOS Boston Logan: bias -0.95 °F, n = 2KBOSKDCA Washington Reagan: bias -1.69 °F, n = 2KDCAKDEN Denver Intl: bias -3.33 °F, n = 2KDENKDFW Dallas-Fort Worth: bias +0.88 °F, n = 29KDFW+KEWR Newark Liberty: bias +0.39 °F, n = 2KEWR+KIAH Houston Bush: bias -0.20 °F, n = 29KIAHKLAS Las Vegas Harry Reid: bias -3.83 °F, n = 2KLASKLAX Los Angeles Intl: bias +0.57 °F, n = 29KLAX+KMIA Miami Intl: bias -1.63 °F, n = 29KMIAKMSP Minneapolis-St Paul: bias +2.21 °F, n = 29KMSP+KMSY New Orleans Intl: bias -2.73 °F, n = 2KMSYKNYC New York Central Park: bias -1.03 °F, n = 2KNYCKOKC Oklahoma City: bias +1.78 °F, n = 29KOKC+KORD Chicago O'Hare: bias -0.81 °F, n = 2KORDKPHL Philadelphia Intl: bias -1.13 °F, n = 2KPHLKPHX Phoenix Sky Harbor: bias -2.58 °F, n = 29KPHXKSAN San Diego Lindbergh: bias -2.57 °F, n = 2KSANKSAT San Antonio Intl: bias -1.31 °F, n = 29KSATKSEA Seattle-Tacoma: bias -0.73 °F, n = 24KSEAKSFO San Francisco Intl: bias -2.01 °F, n = 2KSFOKTTN Trenton Mercer: bias -0.91 °F, n = 2KTTN
Each station's best model at lead day 1 (the last 90 days, 12Z, bilinear, 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 FourCastNet v2 (IFS init)2.04 -2.04 2
KAUS Austin Bergstrom NCEP GFS1.58 -1.11 29
KBOS Boston Logan Pangu-Weather (IFS init)2.17 -0.95 2
KDCA Washington Reagan Pangu-Weather (GFS init)1.69 -1.69 2
KDEN Denver Intl Pangu-Weather (IFS init)3.33 -3.33 2
KDFW Dallas-Fort Worth NCEP GFS1.83 +0.88 29
KEWR Newark Liberty Pangu-Weather (IFS init)1.41 +0.39 2
KIAH Houston Bush NCEP GFS1.28 -0.20 29
KLAS Las Vegas Harry Reid Aurora (IFS init)3.83 -3.83 2
KLAX Los Angeles Intl ECMWF AIFS Single1.48 +0.57 29
KMIA Miami Intl NCEP GFS1.90 -1.63 29
KMSP Minneapolis-St Paul NCEP GFS2.53 +2.21 29
KMSY New Orleans Intl FourCastNet v2 (IFS init)2.73 -2.73 2
KNYC New York Central Park Aurora (IFS init)1.03 -1.03 2
KOKC Oklahoma City NCEP GFS2.61 +1.78 29
KORD Chicago O'Hare FourCastNet v2 (GFS init)0.81 -0.81 2
KPHL Philadelphia Intl Pangu-Weather (GFS init)1.13 -1.13 2
KPHX Phoenix Sky Harbor NCEP GFS2.76 -2.58 29
KSAN San Diego Lindbergh FourCastNet v2 (IFS init)2.57 -2.57 2
KSAT San Antonio Intl NCEP GFS1.65 -1.31 29
KSEA Seattle-Tacoma ECMWF IFS HRES1.99 -0.73 24
KSFO San Francisco Intl FourCastNet v2 (GFS init)2.01 -2.01 2
KTTN Trenton Mercer GraphCast (GFS init)0.91 -0.91 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-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