POLARPLOT
HAM RADIO CONTACT VISUALIZER
This mainly works with QRZ ADIFs better. You are not required to have an API key — it is optional.

Welcome to Polarplot

Polarplot is a real-time amateur radio QSO visualizer. Drop in your ADIF log file and watch your contacts light up on an interactive world map with geodesic great-circle paths, country flags, clustering, and full station bio lookups.

Set your home station callsign and grid square, then import any ADIF file — from QRZ, WSJT-X, N1MM, or any other logging software. Polarplot automatically decodes callsign prefixes, Maidenhead grids, and coordinates to place every station on the map.

How to Get Started

1. Enter your callsign and grid square (or GPS coordinates) in the sidebar.

2. Drag and drop your .adi or .adif file onto the drop zone.

3. Optionally add your QRZ credentials to resolve missing station data.

4. Click the stat cards at the bottom to drill into contacts, countries, bands, and modes.

Core Features

🗺 Interactive Map Dark Matter tile layer with great-circle geodesic paths to every contact.
🌐 3D Globe View Toggle a WebGL globe for a stunning planetary QSO overview.
📡 ADIF Support Works with QRZ, WSJT-X, N1MM, Log4OM and any standard ADIF export.
🏳 Country Flags Auto-resolved from callsign prefix, DXCC field, or grid coordinates.
🔍 QRZ Lookup Bulk-resolve missing station data via QRZ XML API (key optional).
📊 Stats Panels Drill into total contacts, DXCC entities, bands, and modes worked.
🎨 5 Themes Dark, Light, Terminal, Space, and Amber — switch with one click.
⚡ Fast Parsing Web Worker streams large ADIF files without blocking the UI.

Map Controls

DragPan the map
Scroll / PinchZoom in and out
Click MarkerOpen station card popup
📜 Show All QSOsOpen the Biography Vault for that callsign
Home BeaconClick to fit map around all contacts
🌐 Globe ButtonToggle between 2D map and 3D globe
Layers ButtonSwitch map tile overlays

Sidebar Controls

Contact PathsToggle geodesic great-circle lines
Map ClusteringGroup nearby markers into clusters
KM / MISwitch distance unit display
Callsign SearchFilter map by callsign prefix
Country FilterShow only a specific DXCC entity
Band ChipsToggle individual band visibility

Version History

v1.4.0 — Latest
  • Contact line hover tooltip — hover any 2D geodesic path or 3D arc to see great-circle distance (km & mi)
  • Clicking a contact line opens the same contact card as clicking the dot, in both 2D and 3D
  • 3D globe contact card now locks to the contact point and tracks it as you orbit; fades when it rotates behind the globe
  • Screenshot modal redesigned — view toggle (Full Map / Camera View) + single Save button
  • Screenshot countries panel now shows flag thumbnails alongside 3-letter abbreviations
  • Screenshot watermark moved to bottom-left of the map area and updated to polarplot.net
  • Screenshot 3D globe panel now renders at full HiDPI resolution, matching the 2D legend quality
  • Globe screenshot no longer visually jumps — camera repositions behind a veil and dots are properly aligned
  • Visual Options toggles are blocked with a toast when no log is loaded
  • Line Distance Hover is disabled until Contact Paths is enabled; warns if toggled while paths are off
  • Map Clustering auto-enables when entering 3D globe with a log loaded, or when a log is imported while in globe mode
  • Contact Paths, Line Distance Hover, and Map Clustering all reset correctly when switching between 2D and 3D
  • Overlay layer picker now closes automatically when switching between 2D and 3D views
  • Globe arcs turn off instantly without requiring a camera orbit
  • Browser password autofill enabled for QRZ credentials
v1.3.0
  • PNG screenshot export with selectable stat panels (2D & 3D)
  • Tactical Search Hub now filters live in 3D globe, switches to individual dots while searching
  • Contact card popup locks to dot while orbiting in 3D, fades out when contact rotates behind globe
  • Distance units (KM/MI) moved to map overlay button group
  • QRZ Logbook cross-reference — drop your QRZ ADIF export to enrich missing locations without a proxy
  • Resolve Missing now pre-matches against QRZ logbook before falling back to per-callsign XML lookup
  • Data Proxy activation link and info tooltip added
  • Show All QSOs range now correctly uses home location set via Maidenhead grid
  • GitHub Pages deploy fixed — Node setup action corrected, loading.png and logo.png now bundled correctly
  • Custom domain support: polarplot.net
  • Band chips glow on hover
  • Globe screenshot captures live WebGL frame and HTML dots composited together
v1.2.0
  • Added 3D Globe view via Globe.gl WebGL renderer
  • Expanded PREFIX_MAP to cover all ITU amateur prefixes
  • Coordinate bounding-box fallback for unknown callsigns
  • Streaming ADIF Web Worker for large log files
  • Bulk QRZ resolve with live progress counter
v1.1.0
  • 5 theme system: Dark, Light, Terminal, Space, Amber
  • Biography Vault — full QSO history per callsign
  • Band spectrum filter chips
  • Stats panels for DXCC, bands, and modes
  • Geodesic great-circle path rendering
v1.0.0
  • Initial release — ADIF import, Leaflet map, marker clustering
  • QRZ XML API integration
  • Maidenhead grid and callsign prefix resolution

Frequently Asked Questions

Polarplot plots stations using the coordinates or Maidenhead grid square stored inside your ADIF file. If a contact was logged without a grid square, and no GPS coordinates were saved, Polarplot falls back to callsign prefix lookup to estimate a country — but it can only place the pin at a rough country-level centroid, not the real station location. Contacts may land in the ocean if the ADIF data contains a malformed grid, a zeroed-out coordinate (0.0, 0.0), or a prefix that maps to an island or coastal nation. The fix is usually to re-export your log from your logging software with grid squares enabled, or use the RESOLVE MISSING button with QRZ credentials to pull accurate locations.
QRZ exports a well-structured ADIF that includes full GPS coordinates, accurate country names, and DXCC entity data for every contact. Most other logging tools (WSJT-X, N1MM, Log4OM, etc.) export a leaner ADIF that may only contain the grid square or nothing at all — Polarplot then has to infer locations from callsign prefixes alone, which is less precise. QRZ's XML API also lets Polarplot resolve missing station data in bulk and pull live flag and location updates. Other sources are fully supported, but you may see more unknowns and the odd misplaced pin.
Polarplot resolves country and flag through four methods in order: the COUNTRY field in the ADIF, the callsign prefix, the DXCC numeric code, and finally the contact's coordinates. If all four fail — for example a special event callsign, a maritime mobile station, or an unusual prefix not in the ITU allocation table — the station will display as Unknown. Hitting RESOLVE MISSING with QRZ credentials will fix the majority of these automatically.
No. Polarplot works fully offline from your ADIF file with no account required. The QRZ credentials are only needed if you want to use RESOLVE HOME (to auto-fill your location) or RESOLVE MISSING (to bulk-enrich contacts with real data). A free QRZ account with the XML subscription is enough — the API key field is optional if you log in with username and password instead.
A few things to check: make sure your ADIF file has a valid <EOH> header and that contacts end with <EOR>. If contacts appear in the stats counter but not on the map, they likely have no grid square or coordinate data — enable RESOLVE MISSING to populate them. Also check that the band filter chips are all active (none greyed out) and that no callsign search or country filter is set.
The globe renders in WebGL and works best with a dedicated GPU. A few things help: make sure Contact Paths is turned off in the sidebar before switching to globe view — arc rendering is the heaviest operation. On the globe, arcs are off by default and can be toggled with the arc button in the globe toolbar. If you have thousands of contacts, enabling Map Clustering reduces the number of rendered points significantly.
No. Your ADIF file is parsed entirely in your browser using a local Web Worker — nothing is uploaded. Your QRZ password is never saved and only used to fetch a temporary session token directly from QRZ.com. The only optional persistent storage is your API key (if you tick Remember) and your home location, both saved in your browser's localStorage and never transmitted.

Initializing System...

Map Overlays
DRAG to look around  ·  click FPV button again to exit
Your privacy is safe.
Polarplot does not store, log, or transmit your password. It is used only to obtain a temporary QRZ session key inside your browser, and is never saved to disk or sent anywhere except QRZ.com directly.

Check the GitHub repo for more info.