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

Live cams run by their owners. We check each one hourly, and one that stops showing a current picture drops off this list.


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

forecastmeter

At Muskegon the lake breeze came in on 23 of the 40 days we called it, and on 8 of the 55 days we didn’t.

  1. Yesterdayforecast 7meter 13 ktNo lake breeze
  2. Tue Sep 29forecast 8meter 13 ktCame in 4 pm
  3. Mon Sep 28forecast 9meter 16 ktCame in 2 pm
  4. Sun Sep 27forecast 7meter 18 ktCame in 1 pm
  5. Sat Sep 26forecast 6meter 15 ktCame in 3 pm
  6. Mon Sep 14forecast 9meter 10 ktNo lake breeze

Since June 6: called 40 times, came in 23 (58%). Not called 55 times, came in 8 (15%).

The morning lake-breeze call is a Premium alert.Sent by push or email the morning we call it, at the spots where the call has a record. Full Premium free through Dec 31 — no charge until Jan 1, cancel anytime
Start your free season
How this was measured

Called means the morning lake-breeze watch flagged that afternoon at Muskegon. Came in means the afternoon at the meter (MKGM4) was graded a lake breeze: the wind swung onshore and built. Forecast is HRRR’s afternoon peak for the spot as of that morning; meter is the afternoon’s peak sustained wind. Every called day is listed, the misses too. Not called is every other graded day, including the ones the watch saw primed but held back; 9 called days when the meter was down are left out. Only spots where the call has measurably beaten the quiet days get this card, and those are the spots it is sent from.

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
90%18 of 20 days
It blew for two hours or more at the rider's floor on 18 of the 20 days we called go, solid or fire.
The days we missed
37%18 of 49 days
49 days turned out rideable. We had called 18 of them the night before. Across every spot, the night-before forecast ran an average 7.4 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, Sat 3 Oct

What last night's forecast was worth

what Premium is servedthe meter

Yesterday the Muskegon CG Station meter topped out at 13 kt at 11 am. The night before, NWS had 7 kt, the corrected NWS — what Premium is served — 8.3. The other 4 models ranged 8.5–10.4 kt. We called it sleep against a 15 kt floor. The day never got there. The 7:00 am lake-breeze watch expected a lake breeze, and it never fired.

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 raw7NWS + this meter's biasNWS +bias8.3HRRRHRRR9.3GFSGFS8.7ECMWFECMWF10.4BlendBlend8.5the meter: 13 kt at 11 am
22232425262728293012312 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 12 days in this card the call was right on 11 of the 12 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