Methodology

What this site is built from, what was fetched and when, what was calculated, and what could not be obtained. If a number appears anywhere on TideCurve and is not traceable through this page, treat it as a bug and tell us.

Sources

Every external source used, with the date it was retrieved.
SourceWhat it providedRetrieved
NOAA CO-OPS Data APIPredicted high and low waters for all 31 stations, the stored seven-day sample on every page, and the live request the station pages and the tool make in your browser.2026-10-17
NOAA CO-OPS Metadata APIStation IDs, names, coordinates, state, prediction type (reference or subordinate) and reference station IDs.2026-10-16
NOAA GIS and web services overviewPer-request data limits: 6-minute data one month, hourly and high/low data one year, monthly means 200 years.2026-10-17
NOAA Tides & Currents FAQThe statements quoted across this site that predictions are astronomical only, that tide and current predictions are generated separately, and that the relationship between high water and slack water is not a simple one.2026-10-17
NOAA Tides & Currents glossaryDefinitions used verbatim for high water, low water, mean lower low water, flood current and ebb current.2026-10-17
NOAA National Ocean Service currents tutorialThat tidal currents are the only currents that change in a regular, predictable pattern.2026-10-17

NOAA data is a work of the US government and in the public domain. TideCurve is not affiliated with NOAA, and NOAA does not endorse this site.

The exact requests

Station metadata came from two listings and a per-station lookup:

https://api.tidesandcurrents.noaa.gov/mdapi/prod/webapi/stations.json?type=tidepredictions&units=english

https://api.tidesandcurrents.noaa.gov/mdapi/prod/webapi/stations.json?type=waterlevels

https://api.tidesandcurrents.noaa.gov/mdapi/prod/webapi/stations/{id}.json?expand=details

Stored predictions came from one request per station, with the date range varying by station (see the coverage table below):

https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?product=predictions&datum=MLLW&station={id}&time_zone=lst_ldt&units=english&interval=hilo&format=json&begin_date={start}&end_date={end}

The live refresh your browser attempts, and the request the printable tool builds, use the same endpoint with begin_date and end_date moved to the dates you are looking at. The tool prints the URL it used on the page.

Productpredictions
DatumMLLW, mean lower low water. NOAA's API documentation states that subordinate tide prediction stations "must use 'datum=MLLW'", so MLLW is used everywhere for consistency across reference and subordinate stations alike.
Intervalhilo, high and low waters only. NOAA documents that subordinate stations can only use hilo.
Unitsenglish, which returns feet for water level products.
Time zonelst_ldt, which NOAA documents as "Local Standard Time, corrected for Daylight Saving Time when appropriate".

Daylight saving time, handled once

Tide times are the easiest thing on a site like this to get wrong, so the handling is deliberately boring. NOAA is asked for local time with daylight saving already applied. The build never parses those timestamps into a Date with a time zone, never converts them, and never re-formats them into another zone: it splits the string into hours and minutes and prints them. A timestamp of 2026-10-17 16:39 is printed as 4:39 p.m., and that is the clock time at the station on that date.

Two consequences worth knowing. First, on the two days a year when clocks change, local clock time is not a continuous axis, so the curve on those days is drawn against the clock and not against elapsed time. Second, if you request GMT in the printable tool, the times are GMT and the page says so in the caption — the tool never relabels one zone as another.

What is measured and what is drawn

Only two kinds of numbers appear on this site.

The one approximation on the site, stated plainly. NOAA's hilo product gives the extremes only: one height at each high water and each low water. The smooth curve between two dots is a half-cosine interpolation, the standard sinusoidal approximation of a single tidal limb. It is drawn so the shape of the week is readable at a glance. It is not NOAA data, and no number anywhere on this site is read off the interpolated line — every figure in the tables and the readouts sits on a dot. If you need the water level between extremes, request the 6-minute or hourly interval at a reference station in the printable tool.

Which stations get a page, and why 31

A station page exists only where both of these were true on 2026-10-17: NOAA's metadata API returned a record for the station, and the predictions endpoint returned high and low waters for it. 31 stations cleared both. Nothing is interpolated between stations, and no page is generated for a town, a beach or a ZIP code, because a prediction belongs to the station it was computed for.

Distances in the "nearby stations" lists are straight-line approximations from the stations' own coordinates, rounded to whole miles. They are there to help you pick a closer station, not to describe a route.

How a static page avoids going stale

A tide page that renders "this week" into static HTML is wrong a week later, and the stale copy is what search engines keep. Four things prevent that here.

The week drawn into the HTML is always labelled with its own dates, so even with JavaScript disabled the page never implies it is showing the current week when it is not.

Stored coverage by station

Coverage differs by station because of a limitation in the tooling used to collect it, described under what could not be obtained. Every value below was fetched from NOAA and stored exactly as returned.

Stored prediction coverage per station, as committed.
StationNOAA IDFromToDaysRecords
Hampton Harbor 8429489 2026-10-17 2027-04-16 182 703
Jaffrey Point 8424601 2026-10-17 2026-11-30 45 174
Fort Point 8423898 2026-10-17 2026-11-30 45 174
Seavey Island 8419870 2026-10-17 2026-11-30 45 174
Wells 8419317 2026-10-17 2026-10-23 7 27
Pine Point 8418445 2026-10-17 2026-10-23 7 27
Portland 8418150 2026-10-17 2026-11-30 45 174
South Freeport 8417801 2026-10-17 2026-10-23 7 27
Bath 8417227 2026-10-17 2026-10-23 7 27
Fort Popham, Hunniwell Point 8417177 2026-10-17 2026-10-23 7 27
Boothbay Harbor 8416828 2026-10-17 2026-10-23 7 27
New Harbor, Muscongus Bay 8416501 2026-10-17 2026-10-23 7 27
Monhegan Island 8416092 2026-10-17 2026-10-23 7 27
Rockland 8415490 2026-10-17 2026-10-23 7 27
Belfast 8415191 2026-10-17 2026-10-23 7 27
Vinalhaven, Vinalhaven Island 8414776 2026-10-17 2026-10-23 7 27
Castine 8414672 2026-10-17 2026-10-23 7 27
Bangor 8414612 2026-10-17 2026-10-23 7 27
Stonington, Deer Isle 8414348 2026-10-17 2026-10-23 7 27
Bass Harbor 8413651 2026-10-17 2026-10-23 7 27
Southwest Harbor 8413564 2026-10-17 2026-10-23 7 27
Bar Harbor 8413320 2026-10-17 2026-10-23 7 27
Prospect Harbor 8412932 2026-10-17 2026-10-23 7 27
Cutler, Little River 8411060 2026-10-17 2026-10-23 7 27
Eastport 8410140 2026-10-17 2026-10-23 7 27
Boston 8443970 2026-10-17 2026-10-23 7 27
Chatham 8447435 2026-10-17 2026-10-23 7 27
Woods Hole 8447930 2026-10-17 2026-10-23 7 31
Nantucket Island 8449130 2026-10-17 2026-10-23 7 27
New Bedford Harbor 8447636 2026-10-17 2026-10-23 7 27
Fall River 8447386 2026-10-17 2026-10-23 7 27

Re-running node scripts/fetch-tide-samples.mjs refreshes every station to a twelve-month horizon and rewrites both the per-station files and this table.

What could not be obtained

What this site will not say

Predicted tide heights cannot support claims about safety or success, so TideCurve does not make them. There are no best-fishing-time ratings, no swimming or wading advice, no clearance or draft guidance, and no "safe to cross" windows. Predictions are astronomical, and NOAA's own FAQ states that it "cannot predict the effect that wind, rain, freshwater runoff" have on the water level. For conditions, use the forecast and the observed water level, not a prediction made a year in advance.

Reproducing this

The data files carry their own provenance blocks: src/_data/stations.json names the listing each station record came from, and src/_data/samples.json carries the exact request template, the coverage window and the retrieval date. Both are served at /data/ for the client-side code. Re-running scripts/fetch-tide-samples.mjs with a list of station IDs rebuilds the sample and stamps a new retrieval date.

See also about this site and the station list.