HamSat tracking: A Single-File Amateur Radio Satellite Tracker
On this page Table of Contents
Most satellite trackers do far more than I need. Accounts, dashboards, deep menus, configuration pages, and maps covered in buttons. All I really want to know is: Where is the satellite? When will it pass? What frequency should I tune? So I built HamSat tracking . It is a single HTML file that runs entirely in your browser. No account, login, backend, database, cookies, analytics, or installation. Just open it and track satellites.
The idea
Satellite tracking itself is a well-solved problem. Give an SGP4 propagator a current Two-Line Element set (TLE), and you can calculate the satellite’s position, passes, look angles, footprint, and Doppler shift. The hard part is deciding what not to build. Software tends to grow: another feature, another settings page, another dashboard, another dependency. Eventually, something that should be simple becomes difficult to use.
I wanted the opposite: Less software. Less interface. Less noise. The map is the main interface, and everything else exists to answer those three questions.
One file
HamSat is roughly 270 KB as a standalone HTML file, including the SGP4 library, world coastlines, frequency data, and fallback orbital elements. Everything is calculated locally in your browser. My server simply provides the page and updated TLE data. Save the HTML file to a USB stick and it will still work offline, using the orbital elements it was built with. No server-side processing. No account. No database.
What it does
| Feature | Description |
|---|---|
| Live map | Amateur satellites, day/night shading and twilight terminator |
| Footprints | Satellite coverage and your own horizon footprint |
| Passes | AOS, LOS, maximum elevation and duration |
| Sky view | Polar plot of the satellite’s path |
| Doppler | Live shift and RX frequency to tune |
| Frequencies | Uplink, downlink, CTCSS and beacon information |
| Timeline | Upcoming passes across the next six hours |
| Space weather | Solar flux, Kp and X-ray data |
The satellite list is also curated.
There may be around 140 objects in the amateur TLE sets, but only a fraction
are actually useful for radio work. HamSat therefore defaults to the
satellites with a known repeater, transponder or digipeater. You can still
show everything if you want to explore the beacons and the orbital graveyard.

Deliberately boring
I didn’t want an application that looks impressive but takes ten clicks to find the next pass. Controls stay around the map rather than covering it. The next useful satellite is easy to find, and the information you need is visible without navigating through layers of menus. I also avoided turning it into a configurable dashboard. Ten useful controls are better than fifty configuration options.
No tracking. No friction.
Your QTH can be set using a Maidenhead locator, coordinates, browser
geolocation, or by clicking the map.
Your location, preferences and cached data stay in your browser’s
localStorage. Nothing is sent back to my server because there is no
application backend.
There are no analytics or advertising cookies.
No account. No consent wall. Just the map.
Knowing when to remove things
I also learned that adding a feature isn’t always an improvement. I removed a tropical cyclone layer because its coverage was limited to the Atlantic and Eastern Pacific, making it misleading on a global map. Earthquake data stayed because it genuinely provides global coverage.
The frequency table is hand-maintained, and HamSat tells you to check current AMSAT information before transmitting. Satellites change, and pretending otherwise would be bad engineering.
Try it
Set your QTH, pick a satellite, watch the pass, and tune your radio. HamSat isn’t trying to replace advanced software for rotor control, station automation, or deep satellite analysis. It’s simply the tool I wanted when I have a radio in front of me and want to know what is happening in the sky.
If you find an outdated frequency, a bad calculation, or simply a button that annoys you, let me know. I’d much rather hear “this button is annoying” than “nice project.”
73 de SV1DOD / HB9ISH
Enjoyed this? Buy me a coffee ☕
Comments
Loads the discussion from giscus.app and GitHub.