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 4.87 °F [4.71, 5.05], bias -4.79 °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, 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 4.87 [4.71, 5.05] -4.79 [-4.99, -4.61] 25% -0.60 +0.59 3323 stns · 2 QC lowest MAE in this view
NCEP GFSgfs 2.93 [2.77, 3.11] -1.06 [-1.48, -0.52] 60% -0.09 +0.03 2923 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.46 [3.30, 3.64] -3.08 [-3.33, -2.88] 44% -0.29 +0.39 2923 stns · 2 QC
Pangu-Weather (GFS init)pangu_gfs 3.51 [3.51, 3.51] -2.72 [-2.72, -2.72] 48% -0.11 123 stns · 1 QC
ECMWF IFS HRESifs_hres 3.56 [3.37, 3.78] -2.83 [-3.33, -2.33] 46% -0.33 +0.06 2322.7 stns · 2 QC
FourCastNet v2 (GFS init)fourcastnet_gfs 3.90 [3.90, 3.90] -3.85 [-3.85, -3.85] 39% -0.23 123 stns · 1 QC
FourCastNet v2 (IFS init)fourcastnet_ifs 4.00 [3.67, 4.34] -3.60 [-3.67, -3.54] 43% -0.30 +0.90 223 stns · 2 QC
Pangu-Weather (IFS init)pangu_ifs 4.09 [3.74, 4.43] -3.37 [-3.58, -3.17] 26% -0.32 +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.28 [5.07, 5.48] -5.27 [-5.48, -5.06] 22% -0.71 +0.68 223 stns · 2 QC
GraphCast (GFS init)graphcast_gfs 5.95 [5.95, 5.95] -5.95 [-5.95, -5.95] 4% -0.87 123 stns · 1 QC
Aurora (GFS init)aurora_gfs 6.29 [6.29, 6.29] -6.29 [-6.29, -6.29] 13% -0.98 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, 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.10 [4.78, 5.48] -4.94 [-5.36, -4.61] 26% -0.14 +0.65 3123 stns lowest MAE in this view
NCEP GFSgfs 3.20 [3.04, 3.44] -0.81 [-1.50, -0.17] 56% +0.11 +0.31 2723 stns · 2 QC
ECMWF IFS HRESifs_hres 3.60 [3.37, 3.74] -2.51 [-2.82, -1.95] 47% -0.01 +0.41 2223 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.60 [3.40, 3.83] -3.04 [-3.31, -2.79] 43% +0.00 +0.55 2723 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, 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.38 [4.96, 5.81] -4.80 [-5.32, -4.07] 25% -0.05 +0.64 3123 stns · 3 QC lowest MAE in this view
NCEP GFSgfs 3.56 [3.12, 4.07] -1.23 [-1.96, -0.32] 52% +0.09 +0.35 2523 stns · 2 QC
ECMWF IFS HRESifs_hres 3.69 [3.38, 3.94] -2.55 [-3.04, -1.95] 46% +0.03 +0.51 1822.9 stns · 2 QC
ECMWF AIFS Singleaifs_single 3.90 [3.66, 4.14] -3.22 [-3.55, -2.89] 40% +0.01 +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, 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 IFS HRESifs_hres 3.64 [3.03, 3.85] -2.35 [-2.82, -1.58] 48% +0.15 +0.34 1822.9 stns · 2 QC
NCEP GFSgfs 3.92 [3.43, 4.23] -1.48 [-1.94, -0.76] 50% +0.06 +0.24 2323 stns · 2 QC
ECMWF AIFS Singleaifs_single 4.38 [3.91, 4.82] -3.92 [-4.39, -3.38] 40% -0.05 +0.40 2323 stns · 2 QC
GraphCast (IFS init)graphcast_ifs 5.79 [5.31, 6.34] -5.22 [-5.97, -4.48] 27% -0.07 +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, bilinear, 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.41-3.06 · n=30 3.46-3.08 · n=29 3.62-3.16 · n=28 3.60-3.04 · n=27 3.68-3.16 · n=26 3.90-3.22 · n=25 4.17-3.56 · n=24 4.38-3.92 · n=23 4.78-4.20 · n=22 5.01-4.10 · n=21 ECMWF AIFS Single MAE by lead day 1 to 9
Aurora (GFS init)aurora_gfs 5.80-5.80 · n=2 6.29-6.29 · n=1 Aurora (GFS init) MAE by lead day 1 to 9
Aurora (IFS init)aurora_ifs 5.08-5.04 · n=3 5.28-5.27 · n=2 5.03-4.86 · n=1 Aurora (IFS init) MAE by lead day 1 to 9
FourCastNet v2 (GFS init)fourcastnet_gfs 4.36-4.18 · n=2 3.90-3.85 · n=1 FourCastNet v2 (GFS init) MAE by lead day 1 to 9
FourCastNet v2 (IFS init)fourcastnet_ifs 4.59-4.42 · n=3 4.00-3.60 · n=2 3.67-3.49 · n=1 FourCastNet v2 (IFS init) MAE by lead day 1 to 9
NCEP GFSgfs 2.65-1.12 · n=30 2.93-1.06 · n=29 3.07-1.04 · n=28 3.20-0.81 · n=27 3.26-1.03 · n=26 3.56-1.23 · n=25 3.70-1.08 · n=24 3.92-1.48 · n=23 4.34-1.57 · n=22 4.67-1.02 · n=21 NCEP GFS MAE by lead day 1 to 9
GraphCast (GFS init)graphcast_gfs 5.60-5.60 · n=2 5.95-5.95 · n=1 GraphCast (GFS init) MAE by lead day 1 to 9
GraphCast (IFS init)graphcast_ifs 4.53-4.45 · n=34 4.87-4.79 · n=33 5.04-4.93 · n=32 5.10-4.94 · n=31 5.22-4.94 · n=31 5.38-4.80 · n=31 5.73-5.08 · n=30 5.79-5.22 · n=29 6.14-5.32 · n=28 6.57-4.70 · n=27 GraphCast (IFS init) MAE by lead day 1 to 9
ECMWF IFS HRESifs_hres 3.22-2.74 · n=25 3.56-2.83 · n=23 3.43-2.65 · n=23 3.60-2.51 · n=22 3.58-2.50 · n=20 3.69-2.55 · n=18 4.03-2.21 · n=19 3.64-2.35 · n=18 4.31-2.61 · n=17 4.25-1.41 · n=16 ECMWF IFS HRES MAE by lead day 1 to 9
Pangu-Weather (GFS init)pangu_gfs 3.74-3.07 · n=2 3.51-2.72 · n=1 Pangu-Weather (GFS init) MAE by lead day 1 to 9
Pangu-Weather (IFS init)pangu_ifs 3.62-3.08 · n=3 4.09-3.37 · n=2 4.05-3.35 · 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, bilinear125°W115°W105°W95°W85°W75°W65°W25°N30°N35°N40°N45°N50°NKATL Atlanta Hartsfield: bias -1.53 °F, n = 23KATLKAUS Austin Bergstrom: bias -1.20 °F, n = 29KAUSKBOS Boston Logan: bias -0.54 °F, n = 22KBOSKDCA Washington Reagan: bias -1.96 °F, n = 2KDCAKDEN Denver Intl: bias +0.26 °F, n = 1KDEN+KDFW Dallas-Fort Worth: bias +1.34 °F, n = 29KDFW+KEWR Newark Liberty: bias +0.60 °F, n = 2KEWR+KIAH Houston Bush: bias -0.36 °F, n = 29KIAHKLAS Las Vegas Harry Reid: bias -2.58 °F, n = 22KLASKLAX Los Angeles Intl: bias +1.02 °F, n = 29KLAX+KMIA Miami Intl: bias -1.39 °F, n = 29KMIAKMSP Minneapolis-St Paul: bias -0.54 °F, n = 1KMSPKMSY New Orleans Intl: bias -2.88 °F, n = 1KMSYKNYC New York Central Park: bias -0.24 °F, n = 1KNYCKOKC Oklahoma City: bias -2.66 °F, n = 1KOKCKORD Chicago O'Hare: bias -2.45 °F, n = 2KORDKPHL Philadelphia Intl: bias -1.66 °F, n = 2KPHLKPHX Phoenix Sky Harbor: bias -2.08 °F, n = 22KPHXKSAN San Diego Lindbergh: bias -0.54 °F, n = 1KSANKSAT San Antonio Intl: bias -1.45 °F, n = 29KSATKSEA Seattle-Tacoma: bias -1.70 °F, n = 2KSEAKSFO San Francisco Intl: bias -1.41 °F, n = 1KSFOKTTN Trenton Mercer: bias -0.54 °F, n = 2KTTN
Each station's best model at lead day 1 (all available history, 00Z, 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 ECMWF IFS HRES2.08 -1.53 23
KAUS Austin Bergstrom NCEP GFS1.47 -1.20 29
KBOS Boston Logan ECMWF IFS HRES2.40 -0.54 22
KDCA Washington Reagan Pangu-Weather (IFS init)1.96 -1.96 2
KDEN Denver Intl Pangu-Weather (GFS init)0.26 +0.26 1
KDFW Dallas-Fort Worth NCEP GFS1.73 +1.34 29
KEWR Newark Liberty Pangu-Weather (IFS init)0.62 +0.60 2
KIAH Houston Bush NCEP GFS1.24 -0.36 29
KLAS Las Vegas Harry Reid ECMWF IFS HRES3.83 -2.58 22
KLAX Los Angeles Intl ECMWF AIFS Single1.57 +1.02 29
KMIA Miami Intl NCEP GFS1.65 -1.39 29
KMSP Minneapolis-St Paul Pangu-Weather (GFS init)0.54 -0.54 1
KMSY New Orleans Intl FourCastNet v2 (GFS init)2.88 -2.88 1
KNYC New York Central Park Aurora (GFS init)0.24 -0.24 1
KOKC Oklahoma City Pangu-Weather (GFS init)2.66 -2.66 1
KORD Chicago O'Hare FourCastNet v2 (IFS init)2.45 -2.45 2
KPHL Philadelphia Intl Pangu-Weather (IFS init)1.66 -1.66 2
KPHX Phoenix Sky Harbor ECMWF IFS HRES2.38 -2.08 22
KSAN San Diego Lindbergh FourCastNet v2 (GFS init)0.54 -0.54 1
KSAT San Antonio Intl NCEP GFS1.76 -1.45 29
KSEA Seattle-Tacoma FourCastNet v2 (IFS init)1.70 -1.70 2
KSFO San Francisco Intl FourCastNet v2 (GFS init)1.41 -1.41 1
KTTN Trenton Mercer Aurora (IFS init)0.54 -0.54 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