Muskegon, Michigan

Lake Michigan's
West Shore Wind

Lake Michigan's Premier Wind Destination

Reliable westerly winds, warm water, and a surf scene that punches above its weight.

Forecast updates every 30 minutes • NWS + NDBC station MKGM4

Live webcams

Cams are run by their owners; one that stops updating drops off this list.

Live wind meters nearby


Why WindStoke

Stop checking the forecast.
Start getting told when to go.

Most forecast apps dump data and leave you to figure it out. WindStoke analyzes wind, waves, and direction against your personal thresholds — and just tells you: go or don't go.

Go/No-Go Verdict

Every day gets a clear verdict. No interpretation needed — just show up when WindStoke says go.

Custom Alerts

Set your wind thresholds and get a push notification or text the moment Muskegon turns on.

Lake Swell Data

Lake Michigan wave height and period from the MKGM4 buoy. Know what the surf looks like before you leave.

16-Day Forecasts

Plan your sessions and road trips a week or two out. See the whole picture before you commit.


Kiteboarding & Surfing Muskegon

Best Season
Spring & Fall
May–June, Sept–Oct
Ideal Wind
W–SW, 15–25kt
Westerlies push in off the lake
Wave Fetch
80+ miles
Full lake fetch from Chicago

Muskegon sits on the eastern shore of Lake Michigan, directly in the path of westerly winds that build across 80+ miles of open water before hitting Pere Marquette Beach. That fetch turns moderate winds into legitimate surf — Lake Michigan has produced 10-foot-plus swell during strong fall storms.

Kiteboarding at Muskegon State Park offers a wide, sandy beach with good deep-water access. SW to W winds are gold — cross-onshore angle, clean face, and enough power to pull you upwind. N winds can fire in fall and create the best surf days, often 4–6 feet with good shape.

The challenge is that Lake Michigan conditions change fast. A morning glassoff can become a 20-knot blow by noon, or vice versa. WindStoke's realtime alerts via MKGM4 buoy data mean you're notified the moment conditions cross your threshold — not after you've already made the drive.

LAKE-BREEZE CALLS · MUSKEGON

A lake breeze (thermal wind) is the onshore wind that fills in on a hot afternoon. No forecast model predicts it. WindStoke tells you the morning it’s coming, so you get more days on the water.

Since June 6 we’ve called it 40 mornings at Muskegon and it showed 23 times. The forecast had those afternoons at 9 kt. They blew 14.

  1. Sat Oct 3Forecast 7 ktBlew 13 ktNo lake breeze
  2. Tue Sep 29Forecast 8 ktBlew 13 ktCame in 4 pm
  3. Mon Sep 28Forecast 9 ktBlew 16 ktCame in 2 pm
  4. Sun Sep 27Forecast 7 ktBlew 18 ktCame in 1 pm
  5. Sat Sep 26Forecast 6 ktBlew 15 ktCame in 3 pm
Premium riders get the call the morning we make it.Start your free seasonFull Premium free through Dec 31 — no charge until Jan 1, cancel anytime
How this was measured

Called: our morning lake-breeze watch flagged that afternoon at Muskegon. Came in: the wind at the meter (MKGM4) turned onshore and built. Forecast: the model forecast’s afternoon peak for the spot as of that morning (HRRR). Blew: the afternoon’s peak sustained wind at the meter. 10 kt is about the least you can ride, on a big kite or a foil. The 9 and 14 kt above are averages over the called days it showed with a forecast on file (15). The last 5 calls are listed, misses included; 9 calls when the meter was down are left out. On the 59 mornings we stayed quiet, a lake breeze showed 9 times (every other graded morning, including the ones the watch saw primed but held back). Only spots where the call has beaten the quiet mornings get this card, and those are the spots it goes out from, by push or email.

The receipt

How our calls at Muskegon actually scored.

Every night we lock in tomorrow's call for this spot. Every morning we score yesterday's against the MKGM4 meter. Both halves, last 90 days.

When we said go
87%20 of 23 days
It blew for two hours or more at the rider's floor on 20 of the 23 days we called go, solid or fire.
The days we missed
38%20 of 53 days
53 days turned out rideable. We had called 20 of them the night before. Across every spot, the night-before forecast ran an average 7.1 kt under the meter on the days we missed.
The call we did not make
204mornings measured
On 204 of those mornings our lake-breeze model had already scored the afternoon. We measured whether letting it overrule the overnight call would help here, and it would not — so it overrules nothing, and the numbers above are unchanged by it.

Scored on 204 rider-days: the call made the night before, against the meter 6am–6pm, wind-criterion alerts only, rideable meaning two or more hours at the rider's own floor with gust and direction as they set them. Nothing here is written by hand.

The morning after

MKGM4, the morning after, Wed 7 Oct

What last night's forecast was worth

what Premium is servedthe meter

Yesterday the Muskegon CG Station meter topped out at 15.9 kt at 6 am. The night before, NWS said 10 kt, Forecast Lab — what Premium is served — 11.5, the other 4 models 11.3–13.9 kt. We called it Solid against a 15 kt floor, and the day never got there. That morning’s lake-breeze watch found the day not primed for a lake breeze, and none came.

Premium riders are served the corrected row for this meter every day, and their alerts fire on it.Full Premium free through Dec 31 — no charge until Jan 1, cancel anytime
Start your free season
15 kt floorNWS, rawNWS raw10Forecast Lab (NWS+)Forecast Lab11.5HRRRHRRR11.3GFSGFS11.4ECMWFECMWF13.9BlendBlend12the meter: 15.9 kt at 6 am
24252627282930123456714 days · filled = the call scored right, hollow = it missed, faint = nothing to score against
How this was measured

One day is an illustration, not a record — a model that reads low every day will still land one. The number that means anything is the scored one over 90 days, in how our calls are graded. Over the 14 days in this card the call was right on 11 of the 14 that could be scored.

Each model row is the highest wind it forecast for the 6am–6pm window at this meter, taken from the freshest run that existed before midnight the night before — between 10 and 23 hours ahead, depending on the hour. A model with no run in that window shows no call; it is never filled in from a closer-range forecast. Raw rows are the provider's own numbers; NWS + this meter's bias is that forecast shaded by this station's own measured error. That correction is Premium: a Premium rider is served the corrected row, and a free or signed-out rider is served the raw NWS row above it. The meter's figure is the strongest reading of each hour from this station's stored observations. Hours over your floor are counted from those readings alone; rideable is the nightly scorer's verdict and also weighs gust, direction and waves, so the two numbers are not the same measurement and are never added. Knots throughout.

Free to join

Know before you drive to Muskegon.

Set your threshold, pick your directions, and WindStoke texts you when it's on. Stop making the two-hour drive to flat water.

Create Free Account