gnsscalc

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

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/AC1CL1CD1CS1C
L1C (D)C1SL1SD1SS1S
L1C (P)C1LL1LD1LS1L
L1C (D+P)C1XL1XD1XS1X
P (AS off)C1PL1PD1PS1P
Z-tracking (AS on)C1WL1WD1WS1W
YC1YL1YD1YS1Y
MC1ML1MD1MS1M
codelessL1ND1NS1N
M (RMP antenna)C1RL1RD1RS1R
L2
1227.60
C/AC2CL2CD2CS2C
L1(C/A)+(P2-P1) semi-codelessC2DL2DD2DS2D
L2C (M)C2SL2SD2SS2S
L2C (L)C2LL2LD2LS2L
L2C (M+L)C2XL2XD2XS2X
P (AS off)C2PL2PD2PS2P
Z-tracking (AS on)C2WL2WD2WS2W
YC2YL2YD2YS2Y
MC2ML2MD2MS2M
codelessL2ND2NS2N
M (RMP antenna)C2RL2RD2RS2R
L5
1176.45
IC5IL5ID5IS5I
QC5QL5QD5QS5Q
I+QC5XL5XD5XS5X

GLONASS (R)

Freq. Band Channel or Code Pseudo Phase Doppl. SNR
G1
1602+k×9/16
C/AC1CL1CD1CS1C
PC1PL1PD1PS1P
G1a
1600.995
L1OCdC4AL4AD4AS4A
L1OCpC4BL4BD4BS4B
L1OCd+L1OCpC4XL4XD4XS4X
G2
1246+k×7/16
C/AC2CL2CD2CS2C
PC2PL2PD2PS2P
G2a
1248.06
L2CSIC6AL6AD6AS6A
L2OCpC6BL6BD6BS6B
L2CSI+L2OCpC6XL6XD6XS6X
G3
1202.025
IC3IL3ID3IS3I
QC3QL3QD3QS3Q
I+QC3XL3XD3XS3X

Galileo (E)

Freq. Band Channel or Code Pseudo Phase Doppl. SNR
E1
1575.42
A PRSC1AL1AD1AS1A
B OS dataC1BL1BD1BS1B
C OS pilotC1CL1CD1CS1C
B+CC1XL1XD1XS1X
A+B+CC1ZL1ZD1ZS1Z
E5a
1176.45
I F/NAV OSC5IL5ID5IS5I
Q — no dataC5QL5QD5QS5Q
I+QC5XL5XD5XS5X
E5b
1207.14
I I/NAV OS/CS/SoLC7IL7ID7IS7I
Q — no dataC7QL7QD7QS7Q
I+QC7XL7XD7XS7X
E5 AltBOC
1191.795
IC8IL8ID8IS8I
QC8QL8QD8QS8Q
I+QC8XL8XD8XS8X
E6
1278.75
A PRSC6AL6AD6AS6A
B C/NAV CSC6BL6BD6BS6B
C — no dataC6CL6CD6CS6C
B+CC6XL6XD6XS6X
A+B+CC6ZL6ZD6ZS6Z

BeiDou (C)

Freq. Band Channel or Code Pseudo Phase Doppl. SNR
B1I
1561.098
BDS-2/3
I (B1I signal)C2IL2ID2IS2I
QC2QL2QD2QS2Q
I+QC2XL2XD2XS2X
B1C
1575.42
BDS-3
DataC1DL1DD1DS1D
PilotC1PL1PD1PS1P
Data+PilotC1XL1XD1XS1X
B1A
1575.42
BDS-3
DataC1SL1SD1SS1S
PilotC1LL1LD1LS1L
Data+PilotC1ZL1ZD1ZS1Z
B2a
1176.45
BDS-3
DataC5DL5DD5DS5D
PilotC5PL5PD5PS5P
Data+PilotC5XL5XD5XS5X
B2I
1207.14
BDS-2
I (B2I signal)C7IL7ID7IS7I
QC7QL7QD7QS7Q
I+QC7XL7XD7XS7X
B2b
1207.14
BDS-3
DataC7DL7DD7DS7D
PilotC7PL7PD7PS7P
Data+PilotC7ZL7ZD7ZS7Z
B2(a+b)
1191.795
BDS-3
DataC8DL8DD8DS8D
PilotC8PL8PD8PS8P
Data+PilotC8XL8XD8XS8X
B3I
1268.52
BDS-2/3
IC6IL6ID6IS6I
QC6QL6QD6QS6Q
I+QC6XL6XD6XS6X
B3A
1268.52
BDS-3
DataC6DL6DD6DS6D
PilotC6PL6PD6PS6P
Data+PilotC6ZL6ZD6ZS6Z

QZSS (J)

Freq. Band Channel or Code Pseudo Phase Doppl. SNR
L1
1575.42
C/AC1CL1CD1CS1C
C/BC1EL1ED1ES1E
L1C (D)C1SL1SD1SS1S
L1C (P)C1LL1LD1LS1L
L1C (D+P)C1XL1XD1XS1X
L1S / L1-SAIFC1ZL1ZD1ZS1Z
L1SbC1BL1BD1BS1B
L2
1227.60
L2C (M)C2SL2SD2SS2S
L2C (L)C2LL2LD2LS2L
L2C (M+L)C2XL2XD2XS2X
L5
1176.45
IC5IL5ID5IS5I
QC5QL5QD5QS5Q
I+QC5XL5XD5XS5X
L5S (I)C5DL5DD5DS5D
L5S (Q)C5PL5PD5PS5P
L5S (I+Q)C5ZL5ZD5ZS5Z
L6
1278.75
L6DC6SL6SD6SS6S
L6PC6LL6LD6LS6L
L6 (D+P)C6XL6XD6XS6X
L6EC6EL6ED6ES6E
L6 (D+E)C6ZL6ZD6ZS6Z

NavIC / IRNSS (I)

Freq. Band Channel or Code Pseudo Phase Doppl. SNR
L1
1575.42
DataC1DL1DD1DS1D
PilotC1PL1PD1PS1P
Data+PilotC1XL1XD1XS1X
L5
1176.45
A SPSC5AL5AD5AS5A
B RS (D)C5BL5BD5BS5B
C RS (P)C5CL5CD5CS5C
B+CC5XL5XD5XS5X
S-band
2492.028
A SPSC9AL9AD9AS9A
B RS (D)C9BL9BD9BS9B
C RS (P)C9CL9CD9CS9C
B+CC9XL9XD9XS9X

SBAS (S)

Freq. Band Channel or Code Pseudo Phase Doppl. SNR
L1
1575.42
C/AC1CL1CD1CS1C
L5
1176.45
IC5IL5ID5IS5I
QC5QL5QD5QS5Q
I+QC5XL5XD5XS5X

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
.YYoObservation data
.YYdHatanaka-compressed observation
.YYnGPS navigation
.YYgGLONASS navigation
.YYlGalileo navigation
.YYfBeiDou navigation
.YYhSBAS / geostationary navigation
.YYqQZSS navigation
.YYiNavIC / IRNSS navigation
.YYpMixed navigation (all constellations)
.YYmMeteorological 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
XXXXStation name (4 char)
MMonument number (0–9)
RReceiver number (0–9)
CCCCountry ISO 3166-1 code
KData source — R=receiver, S=stream, U=unknown
YYYYDDDYear and day-of-year
HHMMStart hour and minute (UTC)
PERFile period — 15M, 01H, 01D, 01Y…
INTSample interval — 01S, 30S, 05M…
TTFile type — MO/GO/EO/CO… (obs), MN/GN/EN/CN… (nav)
FMTFormat — 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.