For years the tool we use to check NTRIP casters is the Lefebure NTRIP Client. It is free, open source, and has been around since 2009. It is an incredible piece of software, written by a real person (wow), and I trust it more than anything on this page. I still use it regularly, probably more than my own client. But it has no saved connections or ‘profiles’, so we created one subdirectory per CORS station, each with its own copy of the exe and its own config. Additionally, if the mountpoint you needed was not in the dropdown and needed manual entry, there was no way to type it in without exiting the software and editing the config.
I wanted saved connections and a mountpoint box I could type into, so I wrote a client. OpenNTRIPClient was not meant to replace but to build on and add features to an already great concept.
OpenNTRIPClient

A clean-room rewrite of the Lefebure client in Rust. One portable exe, no installer, writes everything to its own folder. Drop your old Settings.txt or ntripconfig.txt next to it on first run and it imports them.
Code: https://git.intnsity.com/intnsity/OpenNTRIPClient
Connection profiles are the reason it exists: every caster, credential set, and mountpoint saved and switchable from one dropdown, and a mountpoint box you can type into.
The rest was accidents. The app decodes the whole protocol conversation for diagnostics, which made it a decent RTCM analysis tool. The inspector counts every message type live, tracks CRC failures and garbage bytes, and decodes the base station position, antenna, receiver model and serial, firmware version, GLONASS biases:

That is a Trimble BD990, station 14, 681 km from me, streaming GPS, GLONASS, Galileo, and BeiDou at 1 Hz. The original client never told you any of that. There is also an elevation strip chart: hook an RTK rover up over Bluetooth serial, feed it corrections, and you get a live elevation graph and the fix readouts.
It also handles NTRIP v1 and v2, TLS with a loud override for self-signed casters, raw TCP, GGA reporting with an offline city and ZIP geocoder, auto-reconnect, and a headless --selftest mode. Version 0.2.1 fixed a deadlock with CHC APIS casters that hold the stream until you send a GGA, verified live against apis-usa.chcnav.com. Pre-1.0, expect rough edges.
How it was built
The original is open source, so I studied how it behaved and had an LLM rewrite the functions to match in Rust. No code reused, behavior only. Then a lot of testing against real casters, including the ones we run.
When my client will not connect, my first instinct is that my tool is broken, so I open the Lefebure client to check. Sometimes the problem is the caster, sometimes it is my bug. That loop is the QA process.
Passwords sit in plaintext in settings.toml, same as the original stored them in ntripconfig.txt. The portable folder is the security boundary. Keep it off shared drives if your caster account matters.
What’s next
More caster testing, probably more weird caster behaviors like the APIS one. Windows is the primary build; Linux and macOS binaries are on the releases page. I do not expect it to fully replace the original for me.
If you try it, or find a caster it chokes on, I want to hear about it.