RINEX Viewer & Quality Analyzer
Drop a RINEX observation file to run a full signal quality analysis — code multipath, cycle slip detection, data completeness, C/N0 and satellite tracking — then edit header fields inline with IGS equipment autocomplete. Add a navigation file for sky plots, elevation-dependent multipath and DOP.
All processing happens locally in your browser — nothing is uploaded. Large files (multi-GB) are streamed. Download the modified file when done.
Drop all station files here
Observation + Navigation — we'll sort them automatically
.obs .rnx .YYo .YYn .YYg .YYl .YYf · RINEX 2/3/4 · Hatanaka · gzip
Signal Quality Analysis
The tool automatically runs a comprehensive signal quality analysis on every loaded observation file. This includes code multipath estimation using the code-minus-carrier (CMC) linear combination, cycle slip detection with Melbourne-Wübbena, geometry-free and single-frequency methods, and per-signal data completeness tracking.
Multipath RMS is computed per signal pair (e.g. MP L1–L2, MP L1–L5) and per satellite, with arc-mean debiasing to remove carrier-phase ambiguities. Cycle slips detected by any method automatically break multipath arcs, preventing contaminated estimates. Results include time-series heatmaps, distribution histograms and per-satellite scatter plots.
Observation Overview
The viewer shows tracked satellites per constellation over time, mean signal strength (C/N0) and a summary of observation types in the file. Data completeness is reported per signal and per satellite, correctly excluding satellites that do not transmit a given signal (e.g. GPS Block IIR without L5).
When a navigation file is loaded alongside the observations, sky plots display satellite trajectories and the multipath-vs-elevation chart reveals how multipath varies with satellite geometry. DOP values are computed from the combined observation and orbit data.
RINEX File Structure
A RINEX observation file begins with a header that describes the receiver, antenna, approximate position, observation types and time system. The data section contains one record per epoch, listing each tracked satellite with its pseudorange, carrier phase, Doppler and signal-to-noise measurements.
RINEX 2.x stores all constellations in a flat list, while RINEX 3.x groups observations per satellite system with explicit type codes (e.g. C1C, L1C, S1C for GPS L1 C/A). This tool parses both formats automatically, selecting the best tracking attribute when multiple codes are available for the same band.
Related Tools
- NTRIP Client — record live RINEX observations from GNSS correction streams
- Broadcast Ephemeris — live satellite health and orbital parameters
- ANTEX Antenna Viewer — phase center offsets and variations for precise positioning
- NMEA Log Viewer — parse NMEA logs and plot tracks on a map
- GPS Time Converter — convert GPS week, TOW, Julian Date and other time scales
- Signal Spectrum — interactive PSD chart of all GNSS L-band signals
RINEX Reference
Observation Codes per Constellation
Each RINEX 3/4 observation code is three characters —
tna
— where t is the measurement type,
n is the frequency band, and a is the
tracking attribute:
C = pseudorange L = carrier phase D = Doppler S = signal strength GPS (G)
| Freq. Band | Channel or Code | Pseudo | Phase | Doppl. | SNR |
|---|---|---|---|---|---|
| L1 1575.42 | C/A | C1C | L1C | D1C | S1C |
| L1C (D) | C1S | L1S | D1S | S1S | |
| L1C (P) | C1L | L1L | D1L | S1L | |
| L1C (D+P) | C1X | L1X | D1X | S1X | |
| P (AS off) | C1P | L1P | D1P | S1P | |
| Z-tracking (AS on) | C1W | L1W | D1W | S1W | |
| Y | C1Y | L1Y | D1Y | S1Y | |
| M | C1M | L1M | D1M | S1M | |
| codeless | L1N | D1N | S1N | ||
| M (RMP antenna) | C1R | L1R | D1R | S1R | |
| L2 1227.60 | C/A | C2C | L2C | D2C | S2C |
| L1(C/A)+(P2-P1) semi-codeless | C2D | L2D | D2D | S2D | |
| L2C (M) | C2S | L2S | D2S | S2S | |
| L2C (L) | C2L | L2L | D2L | S2L | |
| L2C (M+L) | C2X | L2X | D2X | S2X | |
| P (AS off) | C2P | L2P | D2P | S2P | |
| Z-tracking (AS on) | C2W | L2W | D2W | S2W | |
| Y | C2Y | L2Y | D2Y | S2Y | |
| M | C2M | L2M | D2M | S2M | |
| codeless | L2N | D2N | S2N | ||
| M (RMP antenna) | C2R | L2R | D2R | S2R | |
| L5 1176.45 | I | C5I | L5I | D5I | S5I |
| Q | C5Q | L5Q | D5Q | S5Q | |
| I+Q | C5X | L5X | D5X | S5X | |
GLONASS (R)
| Freq. Band | Channel or Code | Pseudo | Phase | Doppl. | SNR |
|---|---|---|---|---|---|
| G1 1602+k×9/16 | C/A | C1C | L1C | D1C | S1C |
| P | C1P | L1P | D1P | S1P | |
| G1a 1600.995 | L1OCd | C4A | L4A | D4A | S4A |
| L1OCp | C4B | L4B | D4B | S4B | |
| L1OCd+L1OCp | C4X | L4X | D4X | S4X | |
| G2 1246+k×7/16 | C/A | C2C | L2C | D2C | S2C |
| P | C2P | L2P | D2P | S2P | |
| G2a 1248.06 | L2CSI | C6A | L6A | D6A | S6A |
| L2OCp | C6B | L6B | D6B | S6B | |
| L2CSI+L2OCp | C6X | L6X | D6X | S6X | |
| G3 1202.025 | I | C3I | L3I | D3I | S3I |
| Q | C3Q | L3Q | D3Q | S3Q | |
| I+Q | C3X | L3X | D3X | S3X |
Galileo (E)
| Freq. Band | Channel or Code | Pseudo | Phase | Doppl. | SNR |
|---|---|---|---|---|---|
| E1 1575.42 | A PRS | C1A | L1A | D1A | S1A |
| B OS data | C1B | L1B | D1B | S1B | |
| C OS pilot | C1C | L1C | D1C | S1C | |
| B+C | C1X | L1X | D1X | S1X | |
| A+B+C | C1Z | L1Z | D1Z | S1Z | |
| E5a 1176.45 | I F/NAV OS | C5I | L5I | D5I | S5I |
| Q — no data | C5Q | L5Q | D5Q | S5Q | |
| I+Q | C5X | L5X | D5X | S5X | |
| E5b 1207.14 | I I/NAV OS/CS/SoL | C7I | L7I | D7I | S7I |
| Q — no data | C7Q | L7Q | D7Q | S7Q | |
| I+Q | C7X | L7X | D7X | S7X | |
| E5 AltBOC 1191.795 | I | C8I | L8I | D8I | S8I |
| Q | C8Q | L8Q | D8Q | S8Q | |
| I+Q | C8X | L8X | D8X | S8X | |
| E6 1278.75 | A PRS | C6A | L6A | D6A | S6A |
| B C/NAV CS | C6B | L6B | D6B | S6B | |
| C — no data | C6C | L6C | D6C | S6C | |
| B+C | C6X | L6X | D6X | S6X | |
| A+B+C | C6Z | L6Z | D6Z | S6Z |
BeiDou (C)
| Freq. Band | Channel or Code | Pseudo | Phase | Doppl. | SNR |
|---|---|---|---|---|---|
| B1I 1561.098 BDS-2/3 | I (B1I signal) | C2I | L2I | D2I | S2I |
| Q | C2Q | L2Q | D2Q | S2Q | |
| I+Q | C2X | L2X | D2X | S2X | |
| B1C 1575.42 BDS-3 | Data | C1D | L1D | D1D | S1D |
| Pilot | C1P | L1P | D1P | S1P | |
| Data+Pilot | C1X | L1X | D1X | S1X | |
| B1A 1575.42 BDS-3 | Data | C1S | L1S | D1S | S1S |
| Pilot | C1L | L1L | D1L | S1L | |
| Data+Pilot | C1Z | L1Z | D1Z | S1Z | |
| B2a 1176.45 BDS-3 | Data | C5D | L5D | D5D | S5D |
| Pilot | C5P | L5P | D5P | S5P | |
| Data+Pilot | C5X | L5X | D5X | S5X | |
| B2I 1207.14 BDS-2 | I (B2I signal) | C7I | L7I | D7I | S7I |
| Q | C7Q | L7Q | D7Q | S7Q | |
| I+Q | C7X | L7X | D7X | S7X | |
| B2b 1207.14 BDS-3 | Data | C7D | L7D | D7D | S7D |
| Pilot | C7P | L7P | D7P | S7P | |
| Data+Pilot | C7Z | L7Z | D7Z | S7Z | |
| B2(a+b) 1191.795 BDS-3 | Data | C8D | L8D | D8D | S8D |
| Pilot | C8P | L8P | D8P | S8P | |
| Data+Pilot | C8X | L8X | D8X | S8X | |
| B3I 1268.52 BDS-2/3 | I | C6I | L6I | D6I | S6I |
| Q | C6Q | L6Q | D6Q | S6Q | |
| I+Q | C6X | L6X | D6X | S6X | |
| B3A 1268.52 BDS-3 | Data | C6D | L6D | D6D | S6D |
| Pilot | C6P | L6P | D6P | S6P | |
| Data+Pilot | C6Z | L6Z | D6Z | S6Z |
QZSS (J)
| Freq. Band | Channel or Code | Pseudo | Phase | Doppl. | SNR |
|---|---|---|---|---|---|
| L1 1575.42 | C/A | C1C | L1C | D1C | S1C |
| C/B | C1E | L1E | D1E | S1E | |
| L1C (D) | C1S | L1S | D1S | S1S | |
| L1C (P) | C1L | L1L | D1L | S1L | |
| L1C (D+P) | C1X | L1X | D1X | S1X | |
| L1S / L1-SAIF | C1Z | L1Z | D1Z | S1Z | |
| L1Sb | C1B | L1B | D1B | S1B | |
| L2 1227.60 | L2C (M) | C2S | L2S | D2S | S2S |
| L2C (L) | C2L | L2L | D2L | S2L | |
| L2C (M+L) | C2X | L2X | D2X | S2X | |
| L5 1176.45 | I | C5I | L5I | D5I | S5I |
| Q | C5Q | L5Q | D5Q | S5Q | |
| I+Q | C5X | L5X | D5X | S5X | |
| L5S (I) | C5D | L5D | D5D | S5D | |
| L5S (Q) | C5P | L5P | D5P | S5P | |
| L5S (I+Q) | C5Z | L5Z | D5Z | S5Z | |
| L6 1278.75 | L6D | C6S | L6S | D6S | S6S |
| L6P | C6L | L6L | D6L | S6L | |
| L6 (D+P) | C6X | L6X | D6X | S6X | |
| L6E | C6E | L6E | D6E | S6E | |
| L6 (D+E) | C6Z | L6Z | D6Z | S6Z |
NavIC / IRNSS (I)
| Freq. Band | Channel or Code | Pseudo | Phase | Doppl. | SNR |
|---|---|---|---|---|---|
| L1 1575.42 | Data | C1D | L1D | D1D | S1D |
| Pilot | C1P | L1P | D1P | S1P | |
| Data+Pilot | C1X | L1X | D1X | S1X | |
| L5 1176.45 | A SPS | C5A | L5A | D5A | S5A |
| B RS (D) | C5B | L5B | D5B | S5B | |
| C RS (P) | C5C | L5C | D5C | S5C | |
| B+C | C5X | L5X | D5X | S5X | |
| S-band 2492.028 | A SPS | C9A | L9A | D9A | S9A |
| B RS (D) | C9B | L9B | D9B | S9B | |
| C RS (P) | C9C | L9C | D9C | S9C | |
| B+C | C9X | L9X | D9X | S9X |
SBAS (S)
| Freq. Band | Channel or Code | Pseudo | Phase | Doppl. | SNR |
|---|---|---|---|---|---|
| L1 1575.42 | C/A | C1C | L1C | D1C | S1C |
| L5 1176.45 | I | C5I | L5I | D5I | S5I |
| Q | C5Q | L5Q | D5Q | S5Q | |
| I+Q | C5X | L5X | D5X | S5X | |
Source: RINEX 4.02 specification (September 2025), Tables 10–16.
Legacy File Extensions
Legacy (RINEX 2) extensions follow the pattern .YYx,
where YY is the two-digit year and x indicates
the file type:
| Ext | Type |
|---|---|
.YYo | Observation data |
.YYd | Hatanaka-compressed observation |
.YYn | GPS navigation |
.YYg | GLONASS navigation |
.YYl | Galileo navigation |
.YYf | BeiDou navigation |
.YYh | SBAS / geostationary navigation |
.YYq | QZSS navigation |
.YYi | NavIC / IRNSS navigation |
.YYp | Mixed navigation (all constellations) |
.YYm | Meteorological data |
For example, .26n is a GPS navigation file from 2026
and .24o is an observation file from 2024.
RINEX 3+ Long-Name File Naming
RINEX 3+ uses a structured long filename with fixed fields:
XXXXMRCCC_K_YYYYDDDHHMM_PER_INT_TT.FMT(.gz)
| Field | Meaning |
|---|---|
XXXX | Station name (4 char) |
M | Monument number (0–9) |
R | Receiver number (0–9) |
CCC | Country ISO 3166-1 code |
K | Data source — R=receiver, S=stream, U=unknown |
YYYYDDD | Year and day-of-year |
HHMM | Start hour and minute (UTC) |
PER | File period — 15M, 01H, 01D, 01Y… |
INT | Sample interval — 01S, 30S, 05M… |
TT | File type — MO/GO/EO/CO… (obs), MN/GN/EN/CN… (nav) |
FMT | Format — rnx or crx (Hatanaka) |
The two-letter type code combines the system letter (G=GPS, R=GLONASS,
E=Galileo, C=BeiDou, J=QZSS, I=NavIC, S=SBAS, M=mixed) with O for
observation or N for navigation. Example:
BRUX00BEL_R_20260120000_01D_30S_MO.rnx.gz is a 1-day,
30 s mixed observation file from Brussels.
RINEX FAQ
- What is RINEX?
- RINEX (Receiver Independent Exchange Format) is a standard text format for GNSS observation data. It allows data from any receiver to be post-processed with any compatible software, regardless of the receiver manufacturer.
- What is a RINEX observation file?
- A RINEX observation file contains raw measurements from a GNSS receiver: pseudoranges, carrier phases, Doppler shifts and signal-to-noise ratios for each tracked satellite at each epoch. The file extension is typically .obs, .rnx, or .YYo (e.g. .24o for 2024).
- What RINEX versions are supported?
- This tool supports RINEX 2.x, 3.x and 4.x observation and navigation files, including Hatanaka-compressed (CRX) and gzip-compressed files. RINEX 3+ uses a cleaner per-system observation layout and is the recommended format for multi-constellation data.
- What is multipath analysis?
- The tool computes code-minus-carrier (CMC) multipath combinations for each dual-frequency signal pair. The MP observable isolates pseudorange multipath and noise from geometry. Arc-mean debiasing removes carrier-phase ambiguities, and per-arc RMS values quantify multipath severity per satellite and signal.
- How are cycle slips detected?
- Three complementary methods are used in priority order: Melbourne-Wübbena (MW) wide-lane combination with adaptive sigma thresholds, geometry-free (GF) phase combination for ionospheric jumps, and single-frequency phase-code divergence as a last resort. Detected slips automatically break multipath arcs.
- What is data completeness?
- Completeness measures the percentage of epochs where each observation code was present for satellites that actually transmit that signal. Satellites that do not support a signal (e.g. GPS Block IIR without L5) are excluded from expected counts to avoid inflating gap statistics.
- What is C/N0?
- C/N0 (carrier-to-noise density ratio) is a measure of signal quality expressed in dB-Hz. Higher values indicate a stronger, cleaner signal. Typical values range from 20 dB-Hz (weak) to 50+ dB-Hz (strong, open sky).
- Can this tool handle large files?
- Yes. The parser reads the file in small chunks using streaming, so even multi-gigabyte RINEX files can be processed without exceeding browser memory. Nothing is uploaded — all processing happens locally in your browser.
- What constellations are supported?
- All standard GNSS constellations: GPS (G), GLONASS (R), Galileo (E), BeiDou (C), QZSS (J), NavIC/IRNSS (I), and SBAS (S). GLONASS FDMA frequencies are computed per-satellite from the channel numbers in the RINEX header.
- Can I load a navigation file?
- Yes. Drop a RINEX navigation file alongside the observation file to compute satellite orbits, sky plots, elevation angles and DOP values. Multipath vs elevation charts are also available when orbit data is present. You can load multiple constellation-specific nav files at once (e.g. .26n + .26g + .26l) and they will be merged automatically.
- What do RINEX observation codes mean per constellation?
- RINEX 3/4 observation codes are three characters "tna": t = measurement type (C=pseudorange, L=carrier phase, D=Doppler, S=signal strength), n = frequency band digit (1–9), a = tracking attribute (C=C/A, P=P-code, W=Z-tracking, X=combined, I=in-phase, Q=quadrature, etc.). The band digit maps to different signals per constellation — GPS: 1=L1 (1575.42 MHz, codes C1C/S/L/X/P/W/Y/M), 2=L2 (1227.60 MHz, codes C2C/D/S/L/X/P/W/Y), 5=L5 (1176.45 MHz, codes C5I/Q/X). GLONASS: 1=G1 FDMA, 2=G2 FDMA, 3=G3 CDMA (1202.025 MHz), 4=G1a (1600.995 MHz), 6=G2a (1248.06 MHz). Galileo: 1=E1 (A PRS/B OS data/C OS pilot), 5=E5a, 7=E5b, 8=E5 AltBOC (1191.795 MHz), 6=E6. BeiDou: 2=B1I (BDS-2/3), 1=B1C/B1A (BDS-3), 5=B2a, 7=B2I/B2b, 8=B2(a+b), 6=B3I/B3A. QZSS: 1=L1, 2=L2, 5=L5/L5S, 6=L6. NavIC: 1=L1, 5=L5, 9=S-band (2492.028 MHz). SBAS: 1=L1, 5=L5. Per RINEX 4.02, Tables 10–16.
- What do the legacy RINEX file extensions mean?
- Legacy (RINEX 2) extensions follow the pattern .YYx, where YY is the two-digit year and x indicates the file type: n = GPS nav, g = GLONASS nav, l = Galileo nav, f = BeiDou nav, h = SBAS/geostationary nav, q = QZSS nav, i = NavIC/IRNSS nav, p = mixed nav, o = observation, d = Hatanaka-compressed observation, m = meteorological. For example, .26n is a GPS navigation file from 2026 and .24o is an observation file from 2024.
- How does RINEX 3+ long-name file naming work?
- RINEX 3+ uses a structured long filename: XXXXMRCCC_K_YYYYDDDHHMM_PER_INT_TT.FMT(.gz), where XXXX = station (4 char), M = monument number, R = receiver number, CCC = country ISO code, K = data source (R=receiver, S=stream, U=unknown), YYYYDDD = year and day-of-year, HHMM = start time, PER = file period (e.g. 01D = 1 day, 01H = 1 hour), INT = sample interval (e.g. 30S, 01S), TT = file type (MO=mixed obs, GO/RO/EO/CO/JO/IO/SO=per-system obs, MN=mixed nav, GN/RN/EN/CN/JN/IN/SN=per-system nav), and FMT = format (rnx or crx). Example: BRUX00BEL_R_20260120000_01D_30S_MO.rnx.gz is a 1-day, 30s mixed observation file from Brussels.