A free online toolbox for GNSS engineers. Convert time scales, transform coordinates, analyze RINEX and NMEA files, plan observation sessions, and monitor live GNSS data — instantly, in your browser.
Convert timestamps across every major GNSS and astronomical time scale in one place:
- GNSS times — GPS, Galileo, BeiDou, GLONASS
- Standard scales — UTC, TAI, TT, UNIX
- Astronomical dates — Julian Date, Modified Julian Date, MJD2000
- GPS-specific — Week number, Time of Week (TOW), RINEX format
- Calendar info — Day of year, week of year, hour code
- Time differences — Elapsed time between any two timestamps
- Live GPS clock — Current GPS time, week, and seconds updated in real time
All conversions are bidirectional. Change any field and every other field updates instantly. Leap seconds are handled automatically.
A full geodetic toolkit for coordinate conversion and spatial computations:
- Coordinate formats — ECEF, geodetic (lat/lon/height), DMS, UTM, Maidenhead grid locator, geohash
- Distances — Orthodromic (great-circle), loxodromic (rhumb line), and Euclidean, with bearings and midpoint
- Local frames — AER (Azimuth/Elevation/Range) and ENU (East/North/Up) from a reference position
- Reference frame transforms — time-dependent 14-parameter Helmert transforms between ITRF realizations (ITRF88–ITRF2020), ETRF2000/2014/2020, NAD83(2011) and WGS84 at a given coordinate epoch
- Horizon distance — Geometric line-of-sight distance from a given altitude
- Interactive map — Visualize positions, great-circle arcs, and distances on a Leaflet map
- Geolocation — Use your device location or search an address
- Shareable links — Positions are encoded in the URL so you can share or bookmark any result
All computations use the WGS84 ellipsoid with Vincenty's formulae for geodetic accuracy.
Plan GNSS observation sessions for any location, date and time window:
- Pass prediction — rise, peak and set times for every satellite above your elevation mask
- Visible-satellite count and PDOP — geometry over time, highlighting the longest window with PDOP below 3
- Constellations — GPS, GLONASS, Galileo, BeiDou
- Orbit data — satellite positions propagated from the IGS broadcast ephemeris (BRDC) for the selected UTC day
Drop a RINEX observation file (2.x, 3.x, 4.x — plain, Hatanaka-compressed or gzipped) for a full signal quality analysis:
- Code multipath — code-minus-carrier combination per signal pair with arc-mean debiasing; heatmaps, distributions and per-satellite RMS
- Cycle slips — Melbourne-Wübbena, geometry-free and single-frequency phase-code divergence detectors; slips break multipath arcs automatically
- Data completeness — per signal and per satellite, excluding satellites that don't transmit a given signal
- Ionosphere — dual-frequency slant TEC per satellite, calibrated with ESA satellite DCBs
- Sky plots, elevation & DOP — add a navigation file for satellite trajectories, multipath vs elevation and DOP timelines
- Header editor — edit header fields inline with IGS equipment autocomplete, then download the modified file
- Filtering & export — filter by constellation, satellite and signal type; export to RINEX 2.11/3.04/4.01, CSV or JSON metadata, with optional hourly-to-daily file splitting
- PDF report — one-click QC report with tables and embedded charts
- Deep links —
/rinex?url=…loads files directly from allowlisted public archives (BKG, EUREF EPN, TU Delft DPGA, NOAA CORS, SOPAC, IGN, ESA)
The parser streams the file in chunks, so multi-gigabyte files work without exceeding browser memory. Nothing is uploaded.
Part of the RINEX viewer: when an observation and a navigation file are loaded, an SPP card solves epochs across the whole file in the Web Worker:
- Weighted least squares with satellite-clock, relativistic, TGD, Sagnac and tropospheric corrections, per-constellation clock offsets and outlier rejection
- ΔENU time series — East/North/Up error vs the RINEX header position across the day, with per-component RMS and mean
Analyze NMEA 0183 log files:
- GGA/RMC parsing from any talker ID (GP, GN, GL, GA, GB), with checksum verification and per-epoch merging
- Track map — plot the parsed fixes on an interactive map
- Statistics — fix count, duration, altitude range, average satellite count and bounding box
Browse GNSS antenna calibrations from ANTEX 1.4 files (e.g. IGS igs20.atx):
- Phase Center Offsets (PCO) per frequency, for receiver and satellite antennas
- Phase Center Variation (PCV) polar plots, including azimuth-dependent patterns
Connect to any NTRIP caster (1.0 and 2.0) from the browser:
- Sourcetable browser — list mountpoints and view station locations on a map
- Live RTCM3 monitor — decoded message types, satellite C/N0, sky plot and station metadata in real time
- RINEX recording — capture observations from the stream and download a
.obsfile - Deep links —
/ntrip?host=…&port=…&mountpoint=…connects straight to a stream
Interactive Power Spectral Density chart of all GNSS L-band signals (1150–1610 MHz):
- All constellations — GPS, GLONASS (FDMA & CDMA), Galileo, BeiDou-2/3, QZSS, NavIC
- Modulations — PSD curves computed analytically from the BPSK, BOC(s/c) and AltBOC models
- Explore — toggle constellations, zoom into bands, hover for modulation details
Live broadcast ephemeris for all GNSS constellations, sourced from the IGS real-time stream (BCEP00BKG0):
- Satellite health — per-constellation health flags decoded per the respective ICDs, with expired-ephemeris highlighting
- Full parameters — orbital elements, perturbation and clock corrections for every satellite
- Coverage — GPS, Galileo, GLONASS, BeiDou, QZSS and SBAS (EGNOS, WAAS, GAGAN, MSAS, SDCM, BDSBAS, KASS)
- No install, no sign-up — open the site and start calculating
- Everything runs in the browser — your data never leaves your device
- Instant feedback — all fields update as you type
- Copy any value — one-click copy on every computed result
- Mobile-friendly — works on any screen size
- Built by a GNSS engineer — designed around the computations you actually need every day
Astro + React · TypeScript · Tailwind CSS · gnss-js · Leaflet · Deployed on Cloudflare Workers
pnpm install
bash scripts/fetch-e2e-data.sh # RINEX test fixtures (gitignored) — needed for `pnpm test`
pnpm dev| Command | Description |
|---|---|
pnpm build |
Build for production |
pnpm preview |
Preview the production build |
pnpm test |
Run the vitest suite |
pnpm format |
Format code with Prettier |
Working against a local gnss-js checkout (instead of the npm release):
pnpm link ../gnss-js # undo with: pnpm unlink gnss-js && pnpm install- Workers —
worker/serves the app + the ephemeris snapshot from KV (30 s cache);worker-ephemeris/refreshes that snapshot from the BKG NTRIP caster on a cron trigger. - NTRIP proxy — the browser cannot open raw TCP connections, so the NTRIP client talks to casters through the CORS proxy at
ntrip-proxy.gnsscalc.com(a separate Cloudflare Worker; the target caster is passed viaX-Ntrip-Host/X-Ntrip-Portheaders). The same worker also serves as a CORS relay for RINEX archive files (/rinex?url=…deep links, the visibility planner's BRDC download, ESA DCB products) against a fixed host allowlist, and is whatworker-ephemerisuses to reach the IGS caster.
Miguel González — miguel.es