Marnage

The tides of 13 French ports, from Dunkirk to the Basque coast: the day’s curve, high and low waters, the coefficient, and a widget for the desktop. Computed on your Mac from public tide-gauge observations.

Download for macOS Source on GitHub

Free and open source (MIT) · macOS 26.5 or later · signed and notarized · English and French

Marnage on Saint-Malo: the day’s tide curve with high waters at 06:58 and 19:13, coefficient 91, and the four tides of the day
Saint-Malo, one of the largest tidal ranges in Europe: more than 10 m between low and high water.

Why Marnage

Its own analysis

Harmonic constants fitted by least squares on two years of REFMAR observations — 33 constituents, 43 where shallow water distorts the tide. No SHOM prediction or constant is reused.

13 ports

Dunkirk, Boulogne, Dieppe, Le Havre, Cherbourg, Saint-Malo, Roscoff, Le Conquet, Brest, Concarneau, Saint-Nazaire, La Rochelle, Boucau-Bayonne.

A widget

Small or medium, one port each, on the desktop or in Notification Center: the next tide, its height, the curve.

Nothing to set up

No account, no network: the constants ship with the app, the prediction runs locally.

A command line too

marnage analyses raw observations, validates on held-out data and prints a day’s tides.

Pure Swift

Zero dependencies — not even LAPACK. Open source, MIT.

Where the sea lingers

At Le Havre the high water stands for hours. A plain sine would miss it; the shallow-water constituents the analysis adds reproduce it.

Le Havre: the curve flattens for two hours around each high water, at about 8 m

A regular port, a week ahead

Brest, where the tide coefficient is defined. Pick any of the next seven days from the strip; hover the curve to read the height at any minute.

Brest: high waters of 6.87 m and 7.20 m, low waters near 1.5 m, with the seven-day strip above

Get it

Download the .dmg Read the README En français

Open the .dmg, drag Marnage onto Applications. It is signed with a Developer ID and notarized by Apple: it opens with a double click.