opencctv.org

Live runway video from LaGuardia, Maho Beach and ten more airports

· updated 2026-11-02 · all posts

At 13:11 UTC on 2026-10-04 a SunExpress jet sat on stand at Düsseldorf with the control tower on the skyline behind it and the yellow marker for taxiway B18 in the near foreground. I have that frame because the camera hands out real video to anything that asks: 1000eyes puts the HLS source on its own player page in plain text, 800x450, no login and no embed.

Nearly everything we carry is a still image that gets replaced every few minutes, and for a mountain pass that is the right shape. An airport is the exception. The interesting part of an airport is a twenty-second event, the flare and the touchdown, and a camera that refreshes every 300 seconds will show you an empty runway almost every time you look. So this is about the airport cameras that are continuous video. The airport category listed 6,662 live cameras when I loaded it at 13:12 UTC today, of every kind. Twelve of those are video, and I confirmed each one was streaming while I wrote this.

The twelve that were running this afternoon

Two numbers a video stream publishes and a still does not

A still camera has one honest figure, which is how often the frame changes. A stream has two, and both are sitting in the open.

The first is how far behind real time the picture is, which a publisher will sometimes just tell you. Hamburg Airport does: for security reasons its webcam pictures are shown on a 15 minute delay, so the aircraft you are watching push back on the apron left the stand a quarter of an hour ago. Worth knowing before you try to match something on screen against a flight tracker. Neither German feed runs through the night, either, which I found out the slow way: at 01:20 UTC on 2026-10-05 the Wowza origin answered 404 to the Düsseldorf manifest and to all four of Hamburg's, having served Düsseldorf a clean 800x450 twelve hours before that.

The second is how long the thing has been up. Every stream above publishes a broadcast start, and the spread is wide: Lanzarote at three and a half years, LaGuardia at three months. A camera that has held a single unbroken broadcast since March 2023 is telling you something about the people running it that no uptime badge of ours could.

Three things that look live and are not

I checked each of these today rather than trusting the label, and the checking turned up three ways an airport stream can say live and not be.

One is a stream that is not a camera. "Live ADS-B Data and ATC at LAX" is a handsome thing and it is honest about itself in its own title: it is Microsoft Flight Simulator 2024 with PSXT, driven by real ADS-B and layered over real tower audio. Real traffic, rendered aircraft.

Another is a loop. Airplane Live's JFK stream is marked live, has been live since 2026-01-19, and is captioned "RE-Live New York Planespotting with Highlights". It is a rebroadcast of the good bits, which is a perfectly nice thing to watch and is not the airport now.

The third is an empty player. Airlive's Los Angeles page still loads its ipcamlive shell, and the shell comes back with streamid = '', which is a player politely holding a space where a stream used to be.

So the test, if you are hunting for these yourself: read the title for the word "re-live", ask the player for its broadcast details rather than reading the badge, and open the manifest if there is one. Three requests, and you know.

What happens next here

The liveness test I used this afternoon is one HTTP request per stream, which is cheap enough to run nightly against every feed we hold that resolves to a video platform, and getting it into the nightly check is the next job on my own list. After that I want the same for the direct HLS ones, where the manifest answers the question even faster.

What I cannot work out yet is the other half of the latency. Hamburg states its quarter of an hour outright, and that is the only published figure in the whole list. The nine on YouTube do not publish anything equivalent that I can find, and a low-latency live stream there can be anywhere from two seconds to half a minute behind, which matters if you are watching a camera against a flight tracker and trying to match an aircraft to its tail number. If there is a way to read that out of a public endpoint, I would like to know it.

Corrections to [email protected].