Next-generation marine data, on one map.
SoundCharts opens IHO S-100 charts and the layers that come with them, including depths, tides, currents, warnings and sea ice. It draws them together, aligned in time, on your desktop, and checks your routes against them. Under the hood is an open .NET SDK that you can use too.
v0.26.0 · All platforms · MIT licensed · Not for navigation
Want the newest features early? Try a nightly build. Nightlies come straight from the latest code, so expect the odd rough edge.



One map, many layers of the sea.
S-100 is the IHO's framework for the next generation of marine data. A chart is the base layer. Depth surfaces, water levels, currents, warnings, ice, routes and harbour data each come as their own product, and SoundCharts reads and draws more than fifteen of them, along with today's S-57 charts.











Built for exploring the data.
SoundCharts is a desktop app for anyone who wants to see what S-100 data actually contains: hydrographers, developers, sailors and anyone curious.
Layers that know their place.
Products stack by the S-98 interoperability rules (display planes, priorities and inter-product rules), not by the order you loaded them. Add depths and currents to a chart and they stay readable.



Tides and currents on one timeline.
Time-varying products share one clock. Follow Live, pin a moment, or step through a forecast run, and every layer shows which sample it's drawing.
- Move through time across forecast data
- Zoom, presets and jump-to-data
- Fetch updated forecasts with a single click

Click anything.
Object Information decodes every attribute into plain names and follows links between features. For tide and current stations it charts the time series right in the panel.

Wind and waves over the chart.
Open GRIB2 and NetCDF forecasts, such as NOAA's GFS and GFS-Wave, and see wave height, wind barbs and isobars on the same timeline as tides and currents. Marine warnings, buoy reports and your own wind instruments join them. Weather data isn't for navigation.
- GRIB2 (including JPEG 2000), NetCDF-CF and CAP warnings
- Isobars, wind speed and wave arrows in Display controls
- NDBC buoys and own-ship wind from NMEA 0183

Plan it, check it, stay warned.
A route in SoundCharts is checked against everything you've loaded: charts, depths, tides, regulated areas and navigational warnings. Each point is judged at the time you'd get there, not just the time you leave.
Sketch a passage.
Drop waypoints on the chart and drag them around. Each leg can be great-circle or rhumb-line, distance and bearing update as you edit, and routes are stored in the S-421 route model. RTZ routes open too.

See what's on the way.
Check route sweeps a corridor along every leg and lists what it finds, worst first. Findings are marked on the map, and selecting one takes you to it.
- Land, drying ground, the safety contour and charted dangers
- Prohibited, caution, traffic and protected areas
- Navigational warnings in force while you're there
- Under-keel clearance along the route with S-104 water levels, and the departures that meet it

Warnings that know your route.
S-124 navigational warnings are drawn only while they're in force, stay marked NEW until you've read them, and can be set to on chart, off chart or information, as S-98 asks. While you check a route, the list narrows to the warnings on it and shows when you'll meet each one.
- Warnings from files or live SECOM services
- Each card links to its route finding, and back


From warning to finding
A warning's card says where it meets the route. Select it to open that finding.
The same checks in CI
s100 route check runs the same checks on RTZ and S-421 routes, with the same findings, and fails the build when something needs review.
# exits 7 on a Must review finding
s100 route check route.rtz charts/ \
--draft 7 --safety-contour 10Route checks guideFind data, not files.
The Library indexes local folders, collection manifests and online catalogues, so everything you can load is in one place. Whatever you load is checked against its product's rules and drawn with the display controls you'd expect from an ECDIS.
See coverage before you download.
Online catalogues include NOAA's charts, high-resolution bathymetry, and water-level and current forecasts. You can browse coverage on the map before you download anything, and keep it up to date afterwards.

Charts from around the world.
Add online catalogue lists the sources SoundCharts knows, grouped by region: NOAA's charts, depths, water levels and currents, USACE inland charts, Canada's navigational warnings over SECOM, and inland charts for Europe's rivers from the Danube to the Rhine.
- Browse the SECOM registry for more services
- Paste any catalogue's URL and it's recognised


Validation built in
Normative rule packs for every S-100 product. Click a finding to jump to it on the map.

ECDIS-style controls
Display categories, viewing groups, safety contour, four-shade depths and simplified symbols.
Day, Dusk and Night.
All three IHO colour palettes, with the app's chrome following along, from a bright afternoon to a dark wheelhouse.



Built on an SDK you can use.
Everything SoundCharts does is in EncDotNet.S100, a managed .NET library for reading, portraying, rendering and validating S-100 data. It has no native dependencies and no commercial S-52 assets.
Three lines to a PNG.
Open any supported dataset, and the bundled feature and portrayal catalogues take care of the rest.
using var ds = S100Dataset.Open("chart.000"); using var r = new PngS100DatasetRenderer(); byte[] png = await r.RenderAsync(ds);
Render from the shell.
The self-contained s100 tool renders, inspects and validates data, and serves S-100 feeds. It's handy for batch jobs and CI, and needs no .NET install.
# any product, any palette
s100 render currents.h5 out.png \
--palette night --time-step 6Let agents read the chart.
An optional MCP server lets AI agents query features, sample depths and currents, plan routes and drive the viewer.
Supported standards
Each standard comes with a reader and portrayal, and validation rule packs where the spec defines them.Full details →
