Actual Currents
Development Beta
or
Step 1 of 5
--
-- kt -- -- ft
Zoom in to see currents
No sea surface temperature data for this date

Terms, Conditions & Privacy Policy

1. Acceptance of Terms

By accessing and using Actual Currents ("the App"), you agree to be bound by these Terms and Conditions. If you do not agree, please do not use the App.

2. Nature of Data

Actual Currents provides tidal current visualizations derived from NOAA ADCIRC harmonic constituent data. This data is intended for informational and educational purposes only.

3. Not for Navigation

The information provided by this App is not intended for navigation and should not be used as a substitute for official nautical charts, tide tables, or professional maritime guidance. Always consult official NOAA publications and local authorities for navigation decisions.

4. No Warranty

The App is provided "as is" without warranty of any kind, express or implied. We do not guarantee the accuracy, completeness, or timeliness of any data displayed.

5. Limitation of Liability

In no event shall Actual Currents, its creators, or contributors be liable for any damages arising from the use or inability to use the App, including but not limited to damages resulting from navigation decisions made using this data.

6. Data Sources

Tidal current predictions are computed from NOAA/NOS/OCS/CSDL/MMAP ADCIRC model harmonic constituents. Map data is provided by Mapbox. We are not affiliated with NOAA or Mapbox.

7. User Conduct

You agree not to misuse the App, attempt to reverse-engineer its systems, or use automated means to access the service in a manner that degrades performance for other users.

8. Changes to Terms

We reserve the right to modify these terms at any time. Continued use of the App after changes constitutes acceptance of the revised terms.

9. Contact

For questions about these terms or privacy policy, please contact us at info@actualcurrents.com.

Privacy Policy

10. Analytics

We use Plausible Analytics, a privacy-friendly analytics service. Plausible does not use cookies, does not collect personal data, and does not track you across websites. It collects only aggregate data such as page views, referral sources, browser type, and country — no individual visitor profiles are created.

11. Location Data

The App may request access to your device's GPS location to center the map and provide navigation features. Location data is used only on your device and is not stored on our servers unless you explicitly save a log entry, in which case the coordinates are stored with that log.

12. Feedback & Logs

If you submit feedback or create log entries, that data is stored on our server. Feedback contains only the message text you provide. Log entries contain the title, notes, GPS coordinates, current data, and photo (if attached) that you choose to save. No account or personal identifying information is required or collected.

13. Cookies & Local Storage

The App does not use cookies. It uses browser localStorage to save your preferences and log entries for offline access. This data stays on your device.

14. Third-Party Services

The App uses Mapbox for map rendering and NOAA APIs for tide station data. These services have their own privacy policies. We do not share your data with any third parties.

15. Data Retention

Feedback and log entries are retained on our server indefinitely. You may request deletion of your data by contacting info@actualcurrents.com.

Acknowledgements

ADCIRC Tidal Database

Tidal harmonic constituent data is derived from the ADCIRC (Advanced Circulation) hydrodynamic model, developed by R.A. Luettich Jr. and J.J. Westerink. The Atlantic and Pacific tidal databases are produced by NOAA/NOS/OCS/CSDL/MMAP.
adcirc.org

TTide

Tidal harmonic analysis and prediction powered by TTide, a Python port of the T_TIDE MATLAB package originally developed by R. Pawlowicz, B. Beardsley, and S. Lentz (2002).
github.com/moflaher/ttide_py

NOAA Tides & Currents

Tide station data and water level predictions provided by the NOAA Center for Operational Oceanographic Products and Services (CO-OPS) via the Tides & Currents API.
tidesandcurrents.noaa.gov

NOAA Aids to Navigation

Navigation buoy and structure data sourced from the NOAA Office for Coastal Management Marine Cadastre, served via the ArcGIS Feature Service.
marinecadastre.gov

Open Source

This application is built on the contributions of countless open-source developers and the broader scientific community. We are grateful for their work.

How Current Predictions Work

1. The Ocean Model

Our predictions begin with ADCIRC (Advanced Circulation), a high-resolution ocean model developed at UNC and Notre Dame, widely used by NOAA and the US Army Corps of Engineers. ADCIRC solves the shallow water equations — the fundamental physics of how water moves — on an unstructured triangular mesh of over 2 million nodes.

The shallow water equations describe three things: conservation of mass (continuity) and the balance of forces in two horizontal directions (momentum). Here are the full equations:

i. The full shallow water equations

Continuity (mass conservation)
∂ζ∂televation
change
+ ∂(Hu)∂xE-W flux + ∂(Hv)∂yN-S flux = 0
x-Momentum (east-west)
∂u∂tacceleration + u∂u∂xadvection + v∂u∂yadvection fvCoriolis = − g∂ζ∂xpressure
gradient
1ρ∂Pa∂xatm.
pressure
+ τsρHwind
stress
τbρHbottom
friction
y-Momentum (north-south)
∂v∂tacceleration + u∂v∂xadvection + v∂v∂yadvection + fuCoriolis = − g∂ζ∂ypressure
gradient
1ρ∂Pa∂yatm.
pressure
+ τsρHwind
stress
τbρHbottom
friction
u, v = depth-averaged velocities • ζ = surface elevation • H = total depth (h + ζ)
f = Coriolis parameter • g = gravity • ρ = water density
Pa = atmospheric pressure • τs = wind stress • τb = bottom friction

ii. Simplify for a tidal-only simulation

No weather forcing: atmospheric pressure gradients and wind stress drop out.

x-Momentum
∂u∂tacceleration + u∂u∂xadvection + v∂u∂yadvection fvCoriolis = − g∂ζ∂xpressure
gradient
1ρ∂Pa∂xatm.
pressure
+ τsρHwind
stress
τbρHbottom
friction
y-Momentum
∂v∂tacceleration + u∂v∂xadvection + v∂v∂yadvection + fuCoriolis = − g∂ζ∂ypressure
gradient
1ρ∂Pa∂yatm.
pressure
+ τsρHwind
stress
τbρHbottom
friction

iii. Rearrange to solve for velocity over time

East-west velocity
∂u∂tacceleration = fvCoriolis g∂ζ∂xpressure
gradient
τbρHbottom
friction
u∂u∂xadvection v∂u∂yadvection
North-south velocity
∂v∂tacceleration = − fuCoriolis g∂ζ∂ypressure
gradient
τbρHbottom
friction
u∂v∂xadvection v∂v∂yadvection
Surface elevation
∂ζ∂televation
change
= − ∂(Hu)∂xE-W flux ∂(Hv)∂yN-S flux
These are solved at every node in the mesh, at every time step, producing velocity time series u(t) and v(t) at each node.
Note: ADCIRC does not solve these equations in their standard form. It reformulates the continuity equation into a Generalized Wave Continuity Equation (GWCE) — a second-order wave equation that eliminates spurious numerical oscillations inherent to finite element methods on large unstructured meshes.
INPUTS Bathymetry Coastlines Moon & Sun g Gravity Friction ADCIRC Solves for water velocity (u, v) and surface elevation (ζ) at each node SOLVED FOR VELOCITY AND ELEVATION OVER TIME ∂u ∂t = fv g ∂ζ ∂x + Fx (east-west) ∂v ∂t = −fu g ∂ζ ∂y + Fy (north-south) ∂ζ ∂t = ∂(Hu) ∂x ∂(Hv) ∂y (continuity) u, v = velocities  •  ζ = surface elevation  •  H = depth  •  f = Coriolis  •  g = gravity F = bottom friction τb / ρH + advection  (tidal-only: no wind or atmospheric pressure) Solved at every node 2M+ nodes, smaller triangles near coasts for finer detail OUTPUT: VELOCITY TIME SERIES AT EACH NODE one node time (410 days of simulation) u(t) v(t) Velocity recorded at every time step — gigabytes of raw data How do we make this usable? ↓

2. From Simulation to Constituents

The raw time series above is accurate but impractical — gigabytes of data that only covers the simulated period. To make predictions for any date, we need to extract the underlying tidal patterns.

A harmonic analysis is performed on each node's time series. Because the tidal frequencies are known precisely from astronomy, a least-squares method can decompose the complex signal into its individual wave components:

Least-squares decomposition
signal(t)  =  Σ  Ai · cos(ωi · t − φi)
ωi = known tidal frequency (from astronomy)  •  solve for Ai (amplitude) and φi (phase)
SIMULATED SIGNAL (velocity at one node over time) 410 days of simulation HARMONIC ANALYSIS EXTRACTED CONSTITUENTS M2 A, φ S2 A, φ K1 A, φ N2 A, φ O1, P1, M4, M6 ... Each wave has a known frequency (ω) Analysis extracts amplitude (A) and phase (φ) for each of U and V

This is similar to how a prism splits white light into its component colors — the complex tidal signal is split into its component waves. The result at each node is a set of amplitudes and phases that compactly encode the full tidal behavior.

3. The Tidal Constituents

Each constituent corresponds to a specific gravitational cycle of the Moon and Sun. Together they capture the dominant patterns in tidal currents — like individual notes that combine to form a chord.

The 8 constituents extracted at every mesh node:

M2 — Principal lunar (12.42h period) — the dominant tide
S2 — Principal solar (12.00h)
N2 — Larger lunar elliptic (12.66h)
K1 — Luni-solar diurnal (23.93h)
O1 — Principal lunar diurnal (25.82h)
P1 — Principal solar diurnal (24.07h)
M4 — Shallow water overtide of M2 (6.21h)
M6 — Shallow water overtide of M2 (4.14h)

At each mesh node, ADCIRC provides the amplitude and phase of every constituent for both the east-west (U) and north-south (V) current components.

MESH each node stores constituent data NODE DATA M2 amp 0.45 phase 127° S2 amp 0.12 phase 84° N2 amp 0.09 phase 152° K1 amp 0.06 phase 203° O1, P1, M4, M6 ... for both U and V (east-west & north-south) = 32 values per node SYNTHESIS pick any time + Moon & Sun positions (V, u, f) 1.2 kn NE

4. Predicting Currents at Any Time

To calculate the current at a specific moment, we use harmonic synthesis — summing the contribution of each constituent separately for the east-west (U) and north-south (V) components:

Harmonic synthesis — east-west current
Harmonic synthesis — north-south current
U(t) = east-west current velocity at time tV(t) = north-south current velocity at time t
fi = nodal correction factor (Moon's 18.6-year orbital wobble)
Aui, Avi = amplitude of U and V current for constituent i
Vi = astronomical argument (positions of Moon & Sun at this moment)
ui = phase adjustment from the nodal cycle
φui, φvi = local U and V phase offsets from the ADCIRC model
(Note: f and u here are standard tidal notation, distinct from the Coriolis f and velocity u used above)
Current speed & direction
Direction θ follows nautical convention: 0° = north, 90° = east, 180° = south, 270° = west.
This is the direction the current is flowing toward.

The astronomical calculations (V, u, f) are computed using the TTide library, which tracks the precise positions of the Moon and Sun for any date.

5. From Numbers to Flow

The result is a U (east-west) and V (north-south) velocity at every mesh node. These velocities are then:

• Converted from m/s to knots
• Interpolated across triangles using barycentric coordinates so particles can flow smoothly between nodes
• Visualized as animated particles that follow the current — faster flow means faster, brighter particles

6. What This Means

Because tides are driven by celestial mechanics, they are highly predictable. This app can calculate accurate current predictions for any date — past or future — at any of the 2 million+ points in the mesh.

However, predictions do not account for wind, storms, river discharge, or other non-tidal forces that can temporarily alter currents. Always consult official sources for navigation.

Tide Predictions
Route Mode
Tap map to add waypoints
Enter Speed kts

Save Route

Computing routes…
Weather Station

Save Trip

Send Feedback

Moon Phase & Tides

Tap the map to choose a location
Settings
Actual Currents

Logs

No logs yet. Create your first log!
Photo preview
Lat
--
Lon
--
Speed
--
Direction
--
Lat
--
Lon
--
Speed
--
Direction
--
No notes.
Log photo

Are you sure you want to delete this log?

0 1 2 3 4 5 kts