Modernized RTKLIB (MRTKLIB) Web UI
Introduction
RTKLIB (Real Time Kinematic Library), open-source software developed by Tomoji Takasu of Tokyo University of Marine Science and Technology, is widely used in satellite positioning research. RTKLIB is also used in the Cabinet Office’s open-source CLASLIB and MADOCALIB, as well as JAXA’s MALIB.
Modernized RTKLIB (MRTKLIB) has been released, building on RTKLIB’s codebase and reworking it with modern software technologies. MRTKLIB integrates CLASLIB, MADOCALIB, and demo5 RTKLIB. Since these projects are based on different versions of RTKLIB, I imagine that integrating them required considerable effort.
A Docker-based MRTKLIB web user interface (Web UI) has now been released as well, so I decided to try it right away.

Building the Docker image
Here, I use MRTKLIB Web UI on macOS with Docker Desktop installed. The following is a record of the steps I followed with the version I tested.
With Docker Desktop running, obtain the source code using Git and run docker compose up --build -d. This builds the Docker image and starts the container in the background. An internet connection is required for the build.
git clone https://github.com/h-shiono/mrtklib-docker-ui
cd mrtklib-docker-ui
docker compose up --build -d
To stop and remove the container, run docker compose down in this directory. To start it in the background again, run docker compose up -d.
Prebuilt Docker images are also available. MRTKLIB and the Web UI are under active development, so if you use the source code, you can fetch updates with git pull and then run docker compose up --build -d to rebuild the image and apply it to the container.
The Web UI version I tested had the tag v0.2.0-alpha and the abbreviated commit hash e3a7185.
Real-time RTK processing
After starting MRTKLIB Web UI, open http://localhost:8080/ in a browser to access the interface. The tabs at the top of the page are:
- Post Processing, corresponding to RTKLIB’s
rnx2rtkp - Real-Time, corresponding to RTKLIB’s
rtkrcv - Stream Server, corresponding to RTKLIB’s
str2str - Conversion, for converting raw data and other formats, corresponding to RTKLIB’s
convbin - Tools, for GPS time conversion
To try real-time RTK processing, select the Real-Time tab.
Next, click I/O Streams in the left menu to configure the Rover and Base Station. I selected NTRIP Client for Type and RTCM3 for Format for both. I entered the following addresses in the Path fields:
- Rover:
ntrip.rnav.info.hiroshima-cu.ac.jp:80/F9P(a u-blox F9P receiver at Hiroshima City University’s GNSS observation station) - Base Station:
ntrip.rnav.info.hiroshima-cu.ac.jp:80/OEM7(a NovAtel OEM729 receiver at the same station)
The two antennas are about two meters apart.

RTK requires the base station antenna coordinates to be set. Open Antenna in the left menu to configure them. This base station broadcasts its antenna coordinates in RTCM3 messages, so selecting RTCM Antenna Pos for Position Type allows those coordinates to be used.

Clicking Start connects to the rover and base station data streams via NTRIP and begins positioning. A float solution was produced almost immediately, and yellow points appeared on the plot.

The Solution tab displays the date and time, coordinates, and solution quality. A float solution is indicated by Q=2, and a fixed solution by Q=1. In the screenshot, some rows immediately after positioning started show all-zero coordinates and Q=0, but this display alone does not establish that they represent single-point positioning.

The Series tab under Chart shows how the AR (ambiguity resolution) ratio-test value, solution quality, and number of satellites used change over time. It is fun to watch.

The Sky+SNR tab under Chart displays a sky plot showing satellite positions in the sky, along with the signal strength for each satellite.

After a while, the solution became fixed, and green points appeared on the plot. Wonderful.

Single-point positioning in post-processing
Next, I try post-processing. Here, I use one day of data for May 1, 2026 (day 121 of the year), from the Hiroshima 2A GNSS reference station (station number 1157), obtained through the Geospatial Information Authority of Japan’s GNSS reference station data service. The downloaded files are compressed, so extract them beforehand.
Select the Post Processing tab at the top of the page and open Mode under POSITIONING on the left. Under Basic Strategy, select Single for Positioning Mode.

Next, I clicked Input Files under Execution on the left and selected the observation file 11571210.26o for Rover OBS and the GPS navigation data file 11571210.26n for Navigation. Clicking Execute displays the single-point positioning results on the right side of the screen.

The filename stem 11571210 consists of the station number (1157), the day of year counted from January 1 as day 1 (121), and a 0 indicating a full day of data. The extension consists of the last two digits of the year (26) and a single letter indicating the data type. The letter o denotes observation data, while navigation data is identified as follows:
n: GPS navigation datag: GLONASS navigation datal: Galileo navigation dataq: QZSS (Michibiki) navigation data
In the version I tested, it did not appear possible to specify multiple navigation data files at once.
Tools
MRTKLIB Web UI includes a time calculation tool. It makes it easy to calculate GPS week numbers, the day of year counted from January 1 as day 1, and other time values.

Conclusion
I tried MRTKLIB’s Web UI and enjoyed being able to view plots on macOS. MRTKLIB also appears to support PPP-RTK positioning using VRS (Virtual Reference Station) data generated from CLAS augmentation information. I look forward to exploring MRTKLIB further, including its command-line tools.