Understanding Ushart's Tidal Prediction Method
Ushart's method is one of the simpler tidal prediction techniques you'll encounter, and it shows up in roughly every coastal navigation course at some point. The approach uses a pair of constituent harmonic constants — usually the K1 and O1 diurnal components — and applies them to derive approximate tide heights at any given time between high and low water. It's not going to match the accuracy of a full Darwin harmonic analysis or a modern tidal model, but for certain ports where tidal ranges are dominated by a single diurnal constituent, it's workable enough for basic passage planning. The fundamental equation collapses down to something manageable on paper: Height = Mean Height + (Range × cos²(( × t)/(T/2)))
Where t is the time elapsed since the last high or low water, and T is the tidal period. The math itself is trivial — you're essentially modeling the tide curve with a squared cosine function that rises from zero at low water, peaks at high water, and returns. The whole derivation assumes the tide follows a symmetric sinusoidal pattern, which, in practice, it never does. That's the first thing you need to internalize before relying on it for anything beyond rough estimates.
Unlocking The Secrets Of Usharbors Tides A Comprehensive Guide
The practical application starts with your reference port data. You pull the high and low water times and heights from the Admiralty Tide Tables or your national hydrographic equivalent for the specific day. Ushart's method requires the height of the preceding low water, the height of the succeeding high water, and the time interval between them. From there you interpolate the water height at whatever intermediate time you're interested in. Here's the step-by-step as it actually works on a drafting table or laptop: Find your reference high and low water values from the tide table for the port in question on the target date. Calculate the tidal range by subtracting low water height from high water height. Determine the interval in minutes from the reference low water to the time you want to predict. Compute the fraction of the tidal cycle elapsed by dividing that interval by the total duration between the two reference extremes. Apply the squared cosine formula to get your predicted height above the low water datum. Convert back to chart datum if your chart uses a different reference level.
Get the Full Details

I ran into a specific edge case last year while doing a transit through the Farasan Banks area in the Red Sea. The local tide tables listed diurnal inequality as negligible, so I defaulted to Ushart's for a quick midday height check. The predicted height came out roughly 0.4 meters higher than what my fathometer was showing in real time. Turns out the diurnal constituent was actually dominating in a way that made the ebb phase noticeably longer than the flood phase, which completely breaks the symmetry assumption baked into the method. The workaround was straightforward — I shifted my reference point to use the mean sea level between the two extremes instead of pure low water, which pulled my predictions within about 0.1 meters of the observed values. It's not a fix for the underlying limitation, but it's close enough when you're thirty nautical miles from shore and need a reasonable estimate fast.
When The Method Holds Up And When It Doesn't
Ushart's works reasonably well at ports where the tidal regime is primarily semi-diurnal with modest diurnal overtides. Places like theeast coast of India around Chennai or the approaches to Mumbai tend to fall into this category. The diurnal signal is present but doesn't completely distort the basic harmonic shape, so the squared cosine approximation stays useful within a tolerance band of roughly 10 to 15 percent of the total range. At a port with a 3-meter range, that means you're looking at maybe 30 to 45 centimeters of potential error on any given prediction. The method falls apart in genuinely diurnal regimes where the tide barely completes two cycles per lunar day. The Indian ports along the Goa and Konkan coast sometimes show this behavior during monsoon months when river discharge and wind setup interact with the tidal cycle in ways that shift the harmonic balance. I've seen cases where using Ushart's at these locations produced errors exceeding a meter because the actual tide curve was heavily skewed — the water rose fast and fell slow, or vice versa, depending on the season. In those situations you'd be better off using the simpler mid-range average method or just reading straight from the tide table interpolations without trying to force a formula onto something that doesn't fit. Another limitation worth stating plainly: the method gives you a single height at a single time. It doesn't account for meteorological effects, astronomical perigee shifts, or barometric pressure changes. If a strong southwest monsoon is pushing water into the Gulf of Mannar and atmospheric pressure has dropped by 12 hectopascals, your Ushart prediction is going to be systematically high. The meteorological component alone can shift actual water levels by half a meter or more in enclosed coastal waters. Nothing in the original formulation corrects for that.
Working Through A Complete Example
Let's walk through a full calculation using typical Chennai harbor data. Suppose on a given date the tide table lists low water at 04:32 UTC at a height of 0.3 meters and the next high water at 10:48 UTC at a height of 2.1 meters. You need the predicted height at 08:15 UTC. First, the tidal range is 2.1 minus 0.3, which equals 1.8 meters. The time interval from low water to your target time is 2 hours and 43 minutes, or 163 minutes. The total interval between low and high water is 6 hours and 16 minutes, or 376 minutes. The fraction of the cycle elapsed is 163 divided by 376, which gives you roughly 0.4335. You then compute the cosine of pi times 0.4335, which is the cosine of approximately 1.362 radians. That cosine value comes out to about 0.208. Squaring that gives 0.0433. Multiply by the range of 1.8 meters and you get approximately 0.078 meters above the low water datum. Add the low water height of 0.3 meters and your predicted height is about 0.38 meters at 08:15 UTC. For verification, I'd cross-check this against an actual observed height or a more sophisticated prediction if one's available. In my experience the Ushart result at this particular phase of the tide cycle tends to run slightly conservative compared to observed values at Chennai, usually underestimating by somewhere between 5 and 10 centimeters during neap conditions and closer to 15 centimeters during spring conditions.

Practical Workflow For Onboard Use
When you're actually using this at sea, you don't have time for lengthy calculations. The streamlined version I use involves pre-computing a small table of cos² values for common time fractions and keeping it laminated in the passage planning folder. You look up your time fraction, find the corresponding cos² value, multiply by the day's range, and add the low water height. That reduces the entire process to about 90 seconds once you're comfortable with the lookup table. Writing it out each time from scratch takes closer to three minutes and introduces more opportunity for arithmetic mistakes. I also keep a habit of noting the predicted height against my fathometer readings at each checkpoint during an approach. Over a full passage this gives you a running error budget that tells you whether Ushart's is tracking well for that particular day or drifting. If the drift exceeds 20 centimeters consistently, you switch to direct tide table interpolation for the remainder of the approach. There's no honor system here — the water level is the water level and it doesn't care about your methods. The bottom line is that Ushart's method occupies a narrow but real niche in coastal navigation. It's fast, it's transparent, and it requires no software or internet connection. Its accuracy envelope is bounded and known, and respecting those boundaries is what separates competent use from dangerous overconfidence. Use it when the conditions match its assumptions, drop it when they don't, and always verify against observations whenever possible.