Real-time, free flight tracking for aircraft in your area and around the world.
Visit airtraffic.online to check out the site, with beta updates visible at beta.airtraffic.online
Many thanks to ADSB.lol for live ATC data, as well as OpenStreetMap and Carto Basemaps for maps with the Leaflet framework.
-
Real-time aircraft tracking - Live ADS-B data from around the world
-
Interactive map interface - Powered by Leaflet with multiple map styles
-
Aircraft details panel - Click any aircraft for detailed information including callsign, altitude, speed, and more
-
Dark/Light mode toggle - Customizable appearance for different viewing preferences
-
Keyboard shortcuts - Quick navigation and control
-
Click and drag - Pan the map
-
Mouse wheel - Zoom in/out
-
Click aircraft - Select for detailed information
-
Click map - Deselect aircraft
-
+/- - Zoom in/out
-
C - Center map on your location
-
R - Reset map view to default zoom and centering
-
L - Toggle map labels
-
A - Toggle light/colourfull/dark modes
-
M - Hide/show mouse
-
V - Cycle through UI panels
-
P - Toggle Projector mode
-
X/Escape - Close/exit aircraft display panels
-
T - Disable website timeout (Please be mindful of your resource usage; be nice to the kind folks at ADSB.lol)
-
D - Debug mode (Functuality updates often, check the F12 menu in your browser for more info)
/Frontend/contains all the user facing content.AerostreamRadar.htmlis used as the main page index, with styles fromStyles.cssand using scripts fromScripts.js/Backend/contains all the server side content.ProxyServer.jsis used to run the website's proxy for API to get deal with CORS restrictions from ADSB.lol.update-beta.shandpromote-to-main.share helper scripts used to help automate deployment for new versions to the public url.- If you decide to self host the proxy server, a directory named
node_moduleswill be created by node.js to contain the files it needs to host the proxy. README.mdand.gitignoreshould be self-explanatory.
- Check your Node.js installation by running
node -vandnpm -vin your system's terminal.
- If it's not installed, you can download Node.js from https://nodejs.org
-
Clone, fork, or otherwise download the content of the AeroStream repository onto your machine
-
If you want to host your own proxy server (to see logs or customize api behaviour), follow the below instructions. Otherwise, just open the AerostreamRadar.html file like normal.
-
Change line #1 of
/Frontend/Scripts.jstolet publicHost = false;to let the site know you want to host the API proxy yourself -
Open a terminal window to the root folder of the repository.
-
Run the following commands to start your own local server:
# Navigate to the backend directory
cd Backend
# Install required dependencies
npm install express cors node-fetch
# Start the proxy server
node proxy-server.js
- The proxy server will start on port 4027. You should see:
Proxy server running at http://localhost:4027
-
Note that you can also just open the AerostreamRadar.html file in your browser (instead of starting the web server) like any other HTML page, though most browsers will auto disable location access as part of their safety measures.
-
To host the server on your local network, open a new terminal window and start a local web server for the frontend:
# Navigate to the frontend directory
cd Frontend
# Start a simple HTTP server (choose one option):
# Option 1: Using Python 3
python3 -m http.server 3000
# Option 2: Using Python 2
python -m SimpleHTTPServer 3000
# Option 3: Using Node.js (if you have http-server installed globally)
npx http-server -p 3000
# Option 4: Using PHP
php -S localhost:3000
-
Open your web browser and navigate to
http://localhost:3000/AerostreamRadar.html -
Allow location access when prompted, or manually enter coordinates to start viewing aircraft in your area.
AeroStream uses the ADSB.lol API through a proxy server to avoid CORS issues.
-
GET /aircraft?lat={latitude}&lon={longitude}&dist={distance}&caller={callerID} -
Returns aircraft data within the specified radius
-
Parameters:
-
lat: Latitude (decimal degrees) -
lon: Longitude (decimal degrees) -
dist: Distance radius in nautical miles -
caller: Identifies call source for the proxy server's display. Can be anything, but defaults to the page URL when not locally hosting
{
"ac": [
{
"hex": "a1b2c3",
"flight": "WS123",
"lat": 37.7749,
"lon": -122.4194,
"alt_baro": 35000,
"gs": 450,
"track": 270,
"squawk": "1200",
"t": "B74S"
}
]
}
Units are those typically used by the aviation industry, like knots for speed and feet for altitude. The actual response usually contain more/varied information; this is just what is used by the website at the moment.
AeroStream is designed with privacy in mind; No personal information is collected, stored, or tracked. A full privacy policy is available here
Contributions are welcome! Please feel free to submit a Pull Request; for major changes, please open an issue first to discuss what you would like to change, otherwise you can fork and host it yourself.
This project is open source and available under the MIT License.
If you encounter any issues or have questions, please:
-
Check the Issues page
-
Create a new issue with detailed information about your problem
-
Include your browser, operating system, and any error messages
-
If you think it's something urgent that I should know about, email me at pierceoxley@icloud.com
- ADSB.lol - Providing free and limitless access to live ADS-B aircraft data (Truely the goats)
- Leaflet - Interactive maps and easy implementation of custom tiles
- OpenStreetMap - Open source mapping data and labled map tiles
- Carto - Clean basemap tiles
- nginx -- Server hosting software
- Node.js - JavaScript runtime for the proxy server software
- Let's Encrypt and the ISRG -- Free and auto-renewing SSL certificates
- Rastapasta -- Proxy server map display inspo