This is certainly missing some kind of legend explaining the colors of the lines, and what data is actually shown.
Is "red" high or low velocity?
And as an example, I do not understand what the "Boeing vs. Airbus" selection is trying to represent, as well as how "Altitude & Velocity" are supposed to be displayed at the same time.
Project certainly requires a bit more care if any discussion should happen around it.
count() AS total,
sum(desc LIKE 'BOEING%') AS boeing,
sum(desc LIKE 'AIRBUS%') AS airbus,
sum(NOT (desc LIKE 'BOEING%' OR desc LIKE 'AIRBUS%')) AS other,
greatest(1000000 DIV {sampling:UInt32} DIV zoom_factor, total) AS max_total,
greatest(1000000 DIV {sampling:UInt32} DIV zoom_factor, boeing) AS max_boeing,
greatest(1000000 DIV {sampling:UInt32} DIV zoom_factor, airbus) AS max_airbus,
greatest(1000000 DIV {sampling:UInt32} DIV zoom_factor, other) AS max_other,
pow(total / max_total, 1/5) AS transparency,
255 * (1 + transparency) / 2 AS alpha,
pow(boeing, 1/5) * 256 DIV (1 + pow(max_boeing, 1/5)) AS red,
pow(airbus, 1/5) * 256 DIV (1 + pow(max_airbus, 1/5)) AS green,
pow(other, 1/5) * 256 DIV (1 + pow(max_other, 1/5)) AS blue
SELECT round(red)::UInt8, round(green)::UInt8, round(blue)::UInt8, round(alpha)::UInt8
The redder the pixel, the more Boeing planes there.
The greener the pixel, the more Airbus planes there.
The bluer the pixel, the more non-Boeing/Airbus planes there.
The less transparent the pixel, the more planes in total.
White means all planes fly there, yellow means Boeing and Airbus dominate, red means Boeing dominates, green means Airbus dominates, cyan means Airbus+others, magenta means Boeing+others, etc.
I see you highlight that, but I believe the visualization is designed to be intuitive once you interact with it a bit—no legend stricty needed if you calibrate against what you already know.
Pick a flight you know (maybe one near yer home) and play with the options -- what patterns emerge? Red draws attention, “Boeing vs. Airbus” compares data, while “Altitude & Velocity” combines them. Explore hands-on; discovery often makes insights click better than instructions.
Apparently my 'easy' isn't the same as yours. There's nothing I could find in the code that describes what it is. You'd have to make a pretty big logic leap to figure it out. All you can see in the code (in config.js, not in index.html) is the dataset url (random string) and the description "this website", which tells you very little.
We have a an ADS-B receiver at Summit Station in Greenland which we use to track airplanes that produce RFI we see in our experiment. I've considered sharing data (since nobody else seems to have data there) but the feeding instructions always scare me (run this script that downloads a bunch of random crap as sudo... no thanks).
Please just give me a cURL command I can run... (perhaps some services have that, I haven't looked that hard).
(other sites are corporate or have sold out [adsbexchange], happy to contribute reasonable costs to get a feed, no affiliation, I just like sensor feeds, thank you for the offer and consideration)
I appreciate the information! And yes, the fact that most sites are corporate makes me really distrustful of running random scripts from them.
This is sort of an example of what I'm talking about though, this script seems to install a bunch of random stuff but what I really want is an API to incorporate into our own recording process. As far as I can tell from a brief look, this binary (?) is downloaded from somewhere and run: https://github.com/airplanes-live/feed/blob/main/scripts/air... but I just want to incorporate it in the system we're using already when I finally get to improving it from a 10-minute hack job from when I set it up as a side project that ended up being really useful (https://arxiv.org/abs/2506.17522)
You can get containerized feeders for services like fr24 (e.g. liggy1/fr24feed) but that may not meet your requirements since it's really intended to handle everything from the sdr to the API, not siphon off data you are collecting some other way and then feed it.
Yeah I definitely don't want to run an opaque container either. We're already collecting and storing the data... I am happy to throw the data over via a udp socket or http request, but I don't want random software that we don't control running...
Over in r/ADSB, someone recently posted a 3D visualizer of live ADS-B data: https://objectiveunclear.com/airloom.html. A nice alternative to the standard 2D maps we're used to.
I love how you can clearly make out the VFR EAA approach going into Oshkosh from Ripon. It’s only one week out of the year, but there’s so much traffic in that week that it still stands out.
I know! I think the creator, brilliant as they must be, is not an English native speaker. Or perhaps they simply enjoy the controversy / provocation heh :)
Eh I think the name kinda works from the perspective that it exposes patterns in adsb data. If you just glanced at adsb maps you wouldn't really see many of these patterns unless you stared at it for a very long time.
Last I looked at it coverage is pretty good for land globally? Sea less so.
The bigger issue is that in first world buying a sdr dongle for giggles is viable while in poor countries less so. A raspberry and dongle is a substantial investment if you’re earning 1/20th of a US salary. Don’t think there is an issue with willingness to share data
How to utilize sat feeds with open data? Across ADS-B track data (like OpenSky Network) South America, Africa and Oceania seem covered in addition to Europe and America, as does East Asia, and India. But China, and some parts of Central Asia and Middle East appear absent?
Very cool project.
Little bit of trivia regarding the "strange hole near Mexico City"[1] from the README.
This is a 12-kilometer exclusion zone around the highly active Popocatépetl volcano to prevent incidents stemming from volcanic activity.
[1] https://adsb.exposed/?zoom=9&lat=19.1139&lng=261.3813&query=...
Eschew abbreviations!
This is certainly missing some kind of legend explaining the colors of the lines, and what data is actually shown.
Is "red" high or low velocity? And as an example, I do not understand what the "Boeing vs. Airbus" selection is trying to represent, as well as how "Altitude & Velocity" are supposed to be displayed at the same time.
Project certainly requires a bit more care if any discussion should happen around it.
Boeing vs Airbus:
The redder the pixel, the more Boeing planes there.The greener the pixel, the more Airbus planes there.
The bluer the pixel, the more non-Boeing/Airbus planes there.
The less transparent the pixel, the more planes in total.
White means all planes fly there, yellow means Boeing and Airbus dominate, red means Boeing dominates, green means Airbus dominates, cyan means Airbus+others, magenta means Boeing+others, etc.
I see you highlight that, but I believe the visualization is designed to be intuitive once you interact with it a bit—no legend stricty needed if you calibrate against what you already know.
Pick a flight you know (maybe one near yer home) and play with the options -- what patterns emerge? Red draws attention, “Boeing vs. Airbus” compares data, while “Altitude & Velocity” combines them. Explore hands-on; discovery often makes insights click better than instructions.
[dead]
Thanks for posting!
I've recently added more datasets, "Places", "Birds", "Photos", and "You".
Also, a hint - the rectangular selection tool lets you generate custom reports for a location.
What is "You"? I tried reading the query to understand but couldn't figure it out
I'd like it if you try to guess :)
But it is easy to figure it out from the source code. The source code is here: https://github.com/ClickHouse/adsb.exposed/blob/main/index.h...
Apparently my 'easy' isn't the same as yours. There's nothing I could find in the code that describes what it is. You'd have to make a pretty big logic leap to figure it out. All you can see in the code (in config.js, not in index.html) is the dataset url (random string) and the description "this website", which tells you very little.
For anyone who just wants to skip to the answer, I found it in the pull requests / issues: https://github.com/ClickHouse/adsb.exposed/issues/47
Interestingly it seems to line up quite well with population density maps.
Haha, great! Honestly where did you get some of these datasets? Birds????? :)
A writeup: https://clickhouse.com/blog/birds
+ There is an attribution in the top-down corner of the map.
We have a an ADS-B receiver at Summit Station in Greenland which we use to track airplanes that produce RFI we see in our experiment. I've considered sharing data (since nobody else seems to have data there) but the feeding instructions always scare me (run this script that downloads a bunch of random crap as sudo... no thanks).
Please just give me a cURL command I can run... (perhaps some services have that, I haven't looked that hard).
https://airplanes.live/get-started/
(other sites are corporate or have sold out [adsbexchange], happy to contribute reasonable costs to get a feed, no affiliation, I just like sensor feeds, thank you for the offer and consideration)
I appreciate the information! And yes, the fact that most sites are corporate makes me really distrustful of running random scripts from them.
This is sort of an example of what I'm talking about though, this script seems to install a bunch of random stuff but what I really want is an API to incorporate into our own recording process. As far as I can tell from a brief look, this binary (?) is downloaded from somewhere and run: https://github.com/airplanes-live/feed/blob/main/scripts/air... but I just want to incorporate it in the system we're using already when I finally get to improving it from a 10-minute hack job from when I set it up as a side project that ended up being really useful (https://arxiv.org/abs/2506.17522)
Check out https://adsb.im
You can get containerized feeders for services like fr24 (e.g. liggy1/fr24feed) but that may not meet your requirements since it's really intended to handle everything from the sdr to the API, not siphon off data you are collecting some other way and then feed it.
Yeah I definitely don't want to run an opaque container either. We're already collecting and storing the data... I am happy to throw the data over via a udp socket or http request, but I don't want random software that we don't control running...
ADS-B is easy to receive with an 'rtlsdr' and opensource tools.
Yeah we are receiving it and dumping it into a sqlite database per day, but we're not sharing it.
Over in r/ADSB, someone recently posted a 3D visualizer of live ADS-B data: https://objectiveunclear.com/airloom.html. A nice alternative to the standard 2D maps we're used to.
Very cool project indeed!
I tried to check the kind of flights they flew in the world's dangerous airport (Lukla, Nepal)[0] and found they use ATR-72 series.
[0] https://adsb.exposed/?dataset=Planes&zoom=12&lat=27.7136&lng...
I love how you can clearly make out the VFR EAA approach going into Oshkosh from Ripon. It’s only one week out of the year, but there’s so much traffic in that week that it still stands out.
URL makes this sound like it’s supposed to be scandalous
"ADS-B Massive Visualizer" is the right title per https://github.com/ClickHouse/adsb.exposed
I know! I think the creator, brilliant as they must be, is not an English native speaker. Or perhaps they simply enjoy the controversy / provocation heh :)
Eh I think the name kinda works from the perspective that it exposes patterns in adsb data. If you just glanced at adsb maps you wouldn't really see many of these patterns unless you stared at it for a very long time.
this is super cool!
It took me a little while to figure this out, but it's pretty cool. Try the A-380 limit in the examples and it starts making sense pretty quick.
Also, .exposed has been a TLD since 2014? I'm not sure I've seen another .exposed site.
float.exposed is fun
previous discussion: https://news.ycombinator.com/item?id=39990346
Nice find! The GitHub repo near the top of that thread is great, too: https://github.com/ClickHouse/adsb.exposed
For those wondering the license is a CC-NC-ShareAlike type
Issue with adsb is that very few outside Europe and the US share their signals, so any app will have partial validity, unless you use satellite feeds.
Last I looked at it coverage is pretty good for land globally? Sea less so.
The bigger issue is that in first world buying a sdr dongle for giggles is viable while in poor countries less so. A raspberry and dongle is a substantial investment if you’re earning 1/20th of a US salary. Don’t think there is an issue with willingness to share data
How to utilize sat feeds with open data? Across ADS-B track data (like OpenSky Network) South America, Africa and Oceania seem covered in addition to Europe and America, as does East Asia, and India. But China, and some parts of Central Asia and Middle East appear absent?
I have had no problem accessing ADSB data for various parts of Asia.
A lot of people running SDRs send beacon info upstream on the internet.