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 the last 365 days, across 23 U.S. stations, the most accurate raw daily maximum temperature forecast 1 day ahead is GraphCast (IFS init): mean absolute error 5.22 °F [5.01, 5.48], bias -5.16 °F, on n = 32 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

the last 365 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.
rankModel MAE °FBias °F ±3 °F Skill Skill, debiased nvs leader
1 GraphCast (IFS init)graphcast_ifs 5.22 [5.01, 5.48] -5.16 [-5.42, -4.95] 21% -0.74 +0.61 3223 stns · 2 QC lowest MAE in this view
NCEP GFSgfs 2.78 [2.66, 2.91] -0.93 [-1.34, -0.51] 62% -0.03 +0.10 2923 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.52 [3.36, 3.72] -3.14 [-3.44, -2.95] 43% -0.31 +0.42 2923 stns · 2 QC
ECMWF IFS HRESifs_hres 3.65 [3.47, 3.85] -3.22 [-3.50, -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
Persistence (baseline)persistence · baseline 4.89 [4.46, 5.33] -0.01 [-0.24, 0.18] 48% 36523 stns · 4 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 365 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.
rankModel MAE °FBias °F ±3 °F Skill Skill, debiased nvs leader
1 GraphCast (IFS init)graphcast_ifs 5.51 [5.16, 5.89] -5.40 [-5.81, -5.05] 21% -0.27 +0.66 3023 stns lowest MAE in this view
NCEP GFSgfs 3.10 [2.72, 3.55] -0.80 [-1.58, -0.08] 57% +0.14 +0.25 2723 stns · 2 QC
ECMWF IFS HRESifs_hres 3.65 [3.52, 3.81] -2.89 [-3.06, -2.59] 46% -0.03 +0.51 2223 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.69 [3.51, 3.92] -3.25 [-3.51, -3.04] 40% -0.02 +0.60 2723 stns · 2 QC
Persistence (baseline)persistence · baseline 7.34 [6.66, 8.08] -0.03 [-0.57, 0.49] 34% 36523 stns · 4 QC

Lead day 5 — daily maximum temperature

the last 365 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.
rankModel MAE °FBias °F ±3 °F Skill Skill, debiased nvs leader
1 GraphCast (IFS init)graphcast_ifs 5.54 [4.99, 6.06] -5.17 [-5.76, -4.43] 24% -0.10 +0.59 3023 stns · 2 QC lowest MAE in this view
NCEP GFSgfs 3.35 [3.03, 3.56] -1.13 [-1.81, -0.06] 56% +0.15 +0.36 2523 stns · 2 QC
ECMWF IFS HRESifs_hres 3.73 [3.52, 3.89] -2.64 [-3.22, -2.23] 45% +0.03 +0.53 2023 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.85 [3.70, 4.01] -3.35 [-3.68, -3.01] 38% +0.02 +0.60 2423 stns · 2 QC
Persistence (baseline)persistence · baseline 7.90 [7.21, 8.61] -0.07 [-0.89, 0.75] 31% 36523 stns · 4 QC

Lead day 7 — daily maximum temperature

the last 365 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.60, 4.05] -1.19 [-1.71, -0.28] 51% +0.08 +0.19 2323 stns · 2 QC
ECMWF IFS HRESifs_hres 4.06 [3.36, 4.42] -3.08 [-3.80, -2.26] 43% +0.06 +0.32 1722.9 stns · 2 QC
ECMWF AIFS Singleaifs_single 4.33 [4.03, 4.63] -3.83 [-4.18, -3.52] 38% -0.03 +0.56 2323 stns · 2 QC
GraphCast (IFS init)graphcast_ifs 5.67 [4.97, 6.34] -5.16 [-6.00, -4.03] 26% -0.08 +0.40 2823 stns · 3 QC
Persistence (baseline)persistence · baseline 8.23 [7.49, 8.98] -0.09 [-1.09, 0.91] 29% 36523 stns · 4 QC

Every model × every lead day

MAE in °F with the bias underneath, the last 365 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.22-5.16 · n=32 5.36-5.29 · n=31 5.51-5.40 · n=30 5.47-5.25 · n=30 5.54-5.17 · n=30 5.53-4.93 · n=29 5.67-5.16 · n=28 6.26-5.61 · n=27 6.63-5.77 · n=26 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 4.89-0.01 · n=365 6.69-0.02 · n=365 7.34-0.03 · n=365 7.55-0.05 · n=365 7.90-0.07 · n=365 8.09-0.08 · n=365 8.23-0.09 · n=365 8.32-0.10 · n=365 8.40-0.10 · n=365 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, 365d 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 365 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