Three widgets from one script: a live-ticking countdown to the next launch, the next time the space station is actually visible from your ZIP code, and launch weather with the rules behind the number. Every size on the Home Screen, all three Lock Screen shapes, and extra large on iPad. Free, no account, and it keeps working whether or not you've installed the app.
Every card below is the widget script itself, running in your browser on live data — the countdowns really are counting. Sized as on an iPhone 15.
Inside 24 hours the countdown is a timer iOS redraws itself, second by second, without spending a widget refresh. Beyond that it's a day count — and a launch whose time is only known to the day gets a date instead of a countdown it can't honestly support.
iOS draws Lock Screen widgets in monochrome, so these are built on shape and type rather than colour. Every widget has all three — the weather and ISS ones too.
Parameter launchwx. The launch card's look — photo, ticking countdown, status — with its GO odds as a ring beside it and the weather board underneath, instead of a second widget's worth of chrome. Large is the one to use; medium and small are tighter versions of the same card.
The mission shown is the one the weather is for — the soonest from a pad MaxQ models. Half a card describing a different launch from the other half would be worse than a slightly later one.
Set the Parameter to iss: plus your ZIP code. The medium and large sizes draw the pass on a sky dome — zenith at the centre, horizon at the rim, north up, an arrow for which way it travels — so a pass overhead crosses the middle and a horizon-skimmer hugs the edge.
The station passes overhead far more often than you can see it — it has to be in sunlight while you're in darkness. Over the window above it flies over 38 times and only 2of those are watchable. The widget leads with the next watchable one; when there isn't one it shows the next overflight anyway, labelled Daylight or In shadow, because that's still an answer.
Height, brightness and duration set the score; the cloud forecast over your spot gates it. A brilliant overhead pass under solid overcast isn't a 7, it's a 0. The large size shows the reasoning, not just the number.
Previewing Houston, TX— yours comes from the ZIP you put in the Parameter. Coordinates live in the widget rather than being looked up, because iOS won't reliably give a widget your location.
Parameter wx. The same evaluator behind the Forecaster Desk, run at the launch's own T-0 rather than at now — because "will it go?" is a question about launch time.
The ring is the GO odds at T-0. Beside it, the rule board as a tally — violations, cautions, unknowns, GO — and below, the rules themselves, loudest first, each with the evaluator's own reading. One NO-GO among ten GOs is a different day from a wall of cautions, and neither shows in a single number.
A probability fitted on 200 launches and a hand-tuned guess look identical on a dial. The large size says which it is, and marks any rule inferred from a proxy with a ~ rather than passing it off as measured.
WidgetKit renders static snapshots — no iOS widget can animate, native apps included, so a looping radar or satellite feed isn't on the table for anyone. A single frame is possible, but at widget scale it competes with the numbers while telling you less than one line of "Cumulus cloud · 2225 / 2000 J/kg CAPE". The Console has imagery at full resolution; the widget is for the read you can't get anywhere else.
It's a free app from the App Store that runs small scripts and lets them draw widgets. MaxQ doesn't need an account and the script only ever reads our public feeds.
Copy it below, open Scriptable, tap +, paste, then name it MaxQ. One script drives every widget here.
Long-press your Home Screen → + → Scriptable → pick a size → Add Widget.
Long-press the new widget → Edit Widget → set Script to MaxQ, then put the widget's name in Parameter — blank for the next launch, wx for weather, iss:77002for the station. Tap the script's ▶ in Scriptable any time to preview every widget at every size.
You paste the script once. Which widget you get is set per-widget in the Parameter field, so a countdown can sit on one page and the weather board on another.
| Parameter | Widget | What you get | |
|---|---|---|---|
| Launch | (blank) | Next launch | Countdown, vehicle, pad and status. Every size, plus Lock Screen. |
| Launch | schedule | Launch schedule | The next few launches, each row opening its own page. |
| Launch | next:spacex | Next, filtered | Matches provider, vehicle, mission or site. |
| Both | launchwx | Launch + weather | One card: the launch countdown with its GO odds and constraints. |
| ISS | iss:77002 | Next ISS pass | Your ZIP code. A town name or lat,lon work too. |
| Weather | wx | Launch weather | GO odds and the LCC rules driving them. |
| Weather | wx:LC39A | Weather, one pad | Pinned to a pad instead of whatever flies next — its name or id, e.g. SLC40, SLC-4E. |
Three small, open, CORS-enabled endpoints. Build against them — an Android KWGT skin, a desk display, a Discord bot, whatever you like. If you make something with them, we'd love to see it.
GET /api/v1/widget?limit=6GET /api/v1/widget/passes?q=77002GET /api/v1/widget/weatherThe launch feed returns the next launch and the ones after it, with a tonematching the site's status colours and a timed flag saying whether the time is precise enough to count down to. Passes take a ZIP, a place name or lat/lon, and return only the watchable ones. Weather returns the full rule set, worst first.
Fair use, no key needed. If you're going to hammer them, say hello first — get in touch.
Inside 24 hours iOS redraws the timer itself, second by second, without spending a widget refresh. Past T-0 it keeps counting up.
Mission names, GO odds and pass grades refresh on the budget iOS hands out — usually a few times an hour, more often near T-0. A scrub can take a few minutes to appear.
The last good response for each widget is cached on-device, so a dead spot shows slightly stale data, stamped with the time it was last updated, rather than an empty box.
There's no clean equivalent — Android has no widget API for web apps. KWGT plus an HTTP module can read the same feeds if you're willing to tinker.