Free & open source · macOS · Windows · Linux

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. Under the hood is an open .NET SDK that you can use too.

v0.23.0 · All platforms · MIT licensed · Not for navigation

H1SoundCharts showing an electronic chart with depth shading and current arrows layered over Elliott Bay, Seattle
Beyond the chart

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.

P02S-57 today's charts, translated in SoundCharts
S-57
Today's charts, translated
P03S-102 bathymetry in SoundCharts
S-102
Bathymetry
P04S-104 water levels in SoundCharts
S-104
Water levels
P05S-111 surface currents in SoundCharts
S-111
Surface currents
P06S-124 navigational warnings in SoundCharts
S-124
Navigational warnings
P07S-125 aids to navigation in SoundCharts
S-125
Aids to navigation
P08S-411 sea ice in SoundCharts
S-411
Sea ice
P09S-421 route plans in SoundCharts
S-421
Route plans
P10S-129 under-keel clearance in SoundCharts
S-129
Under-keel clearance
P11S-401 inland waterways in SoundCharts
S-401
Inland waterways
P12S-131 harbour infrastructure in SoundCharts
S-131
Harbour infrastructure
The viewer

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

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.

F1aNOAA chart of the Chesapeake Bay entrance
F1bThe same chart with NOAA S-102 bathymetry
F1cThe same chart with S-102 bathymetry and S-111 surface currents
Time

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.

  • Forecast runs with a Now marker and expiry
  • Zoom, presets and jump-to-data
  • Local or UTC, your choice
F2Timeline animating surface currents over Chesapeake Bay
Inspect

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.

F3Object Information for a lit buoy
Routes

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.

F4A route from Seattle to Bremerton with the leg table open
Library

Find data, not files.

The Library indexes local folders, collection manifests and online catalogues, including NOAA's S-100 feeds on AWS. You can browse coverage on the map before you download anything, and keep it up to date afterwards.

F5The Library panel browsing NOAA S-102 coverage areas
F8Validation findings with map markers

Validation built in

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

F9ECDIS display controls

ECDIS-style controls

Display categories, viewing groups, safety contour, four-shade depths and simplified symbols.

Palettes

Day, Dusk and Night.

All three IHO colour palettes, with the app's chrome following along, from a bright afternoon to a dark wheelhouse.

F7-dayThe same harbour view in the Day palette
Day
F7-duskThe same harbour view in the Dusk palette
Dusk
F7-nightThe same harbour view in the Night palette
Night
For developers

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.

Library

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);
Command line

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 6
MCP

Let agents read the chart.

An optional MCP server lets AI agents query features, sample depths and currents, plan routes and drive the viewer.

D2 · clip

Supported standards

S-101Electronic Navigational Charts
S-102Bathymetric Surfaces
S-104Water Level Information
S-111Surface Currents
S-122Marine Protected Areas
S-124Navigational Warnings
S-125Marine Aids to Navigation
S-127Marine Resources & Services
S-128Catalogue of Nautical Products
S-129Under Keel Clearance
S-131Harbour Infrastructure
S-201IALA AtoN Information
S-411Sea Ice Information
S-421Route Plans
S-401Inland ENC (IEHG)
S-57Legacy ENC, via S-101

Each standard comes with a reader and portrayal, and validation rule packs where the spec defines them.Full details →

Open source, made in the open.

SoundCharts and EncDotNet.S100 are MIT licensed. Issues, ideas and pull requests are all welcome. The project was named for Puget Sound and is built for waters everywhere.

Review · ■ captured ■ stand-in■ to capture