Self-hosted service
OpenCPN/OpenCPN avatar
OpenCPN/OpenCPN

OpenCPN: cross-platform chartplotter and navigator

A concise ChartPlotter/Navigator. A cross-platform ship-borne GUI application supporting * GPS/GPDS Postition Input * BSB Raster Chart Display * S57 Vector ENChart Display * AIS Input Decoding * Waypoint Autopilot Navigation

1,508 stars633 forksCGPL-2.0

At a glance

What is it?
OpenCPN is a C-based wxWidgets navigation application that combines GPS, AIS, BSB raster charts, S57ENC vector charts, and waypoint navigation in a helm-visible interface. Its documented scope favors continuous onboard use rather than offline route planning or tide prediction.
Who is it for?
OpenCPN suits skippers who need a compact, continuously available navigation display on a supported desktop or Android platform and can supply compatible charts and position inputs. It does not fit users whose main requirement is offline route planning, tide and current prediction, or online logging.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 8 days ago.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

OpenCPN's helm-visible navigation scope

OpenCPN targets vessels with full-time, helm-visible navigational suites. That constraint explains several choices in the README: quick startup and shutdown, a reduced set of toolbar controls for daily operation, and portability through wxWidgets. The stated audience is not someone looking for a general voyage-management service. The README explicitly says that other tools may be better for offline route planning, tide and current prediction, and online logging.

The project description identifies a broad collection of onboard functions rather than a single plotting feature. It covers GPS and GPDS position input, BSB raster charts, S57 vector ENC charts, AIS input decoding, and waypoint navigation for an autopilot. This makes OpenCPN a display and navigation integration point. The README does not claim that OpenCPN performs route planning, calculates tides or currents, manages voyages, or records logs online, so those capabilities should not be inferred from its chartplotter role.

The README says OpenCPN is tested and in production use on Windows, macOS, Linux, and Android. The repository layout supports that platform scope through separate directories such as `buildwin`, `buildosx`, `buildlinux`, and `android`. This is a clear portability statement, but neither the README nor `INSTALL` contents reproduced here identify package names, supported processor architectures, minimum operating-system versions, or screen requirements. Cross-platform availability therefore does not establish that every platform will suit a particular helm installation.

OpenCPN chart, position, AIS, and autopilot flow

The documented mechanism is an onboard GUI that brings several navigation sources into one display. Position information comes from GPS or GPDS input. The chart layer can display conventional BSB raster charts and S57ENC vector charts. OpenCPN decodes AIS input, while waypoints can support autopilot navigation. Repository topics also include NMEA0183, NMEA2000, GRIB, GRIB2, GSHHS, and Signal K, but the README does not explain which interfaces are implemented in the core application, which depend on plugins, or how data moves between them.

The repository layout provides limited architectural clues. Directories named `cli`, `model`, `s57`, `gui`, `plugins`, and `glutil` suggest separation between command-line handling, application models, S57 chart processing, the graphical interface, plugins, and graphics utilities. The `manual`, `Docs`, and `xmlschemas` directories indicate that operating guidance and structured data definitions are also part of the project. These entries show organization, but names alone do not establish complete data flow or feature compatibility.

The two chart formats represent an important design boundary. BSB is a raster format, so its presentation depends on prepared chart images. S57ENC is a vector format and uses structured chart objects rather than only a background image. The project description confirms display support for both categories, but the README does not document chart licensing, acquisition, updates, or coverage limits. Installing OpenCPN also does not establish that usable charts are included. A skipper must obtain chart files separately and verify that their use is permitted.

INSTALL and the first onboard configuration

The repository contains an `INSTALL` file, but the README does not provide executable installation commands. The first documented step is to open `INSTALL` and follow its guidance for the intended operating system. The platform directories can then be consulted if that file directs builders toward `buildwin`, `buildosx`, `buildlinux`, or another platform path. A package-manager command or build flag should not be invented from those directory names alone.

The README does not prescribe an interactive first-launch sequence, so it provides no settings to reproduce here. A user still needs to identify the chart source, configure GPS or GPDS input, enable the appropriate AIS source, and connect an autopilot route. The repository includes `opencpn.1`, `opencpn-cmd.1`, `manual`, and `Docs`, which are the relevant places to check for operational or command-line instructions.

A first practical use can be checked in stages, but these checks should remain distinct from unsupported claims. First verify that required BSB or S57ENC charts are available and loadable. Then use the project's documented configuration controls to supply a GPS or GPDS source and confirm that position changes on the display. After position input is working, check AIS decoding. Waypoint transfer to an autopilot should remain a separate integration test because the description confirms waypoint autopilot navigation without naming supported devices or documenting a universal transfer procedure.

Desktop and Android portability trade-offs

Cross-platform reach is one of OpenCPN's clearest characteristics. wxWidgets supplies the GUI foundation, while the repository provides dedicated paths for Windows, macOS, Linux, and Android. Distribution also appears varied: the top-level entries include `flatpak`, `docker`, `vagrant`, an `opencpn.recipe`, and `NSIS.template.in.in`. This is more evidence of packaging options than proof that every route produces an equivalent installation.

Platform diversity makes deployment a specific engineering task. The README does not designate one preferred package format, state whether the Flatpak or Docker route contains a complete chart workflow, or document Android distribution. Users who need a reproducible onboard installation should verify those details in `INSTALL`, `Docs`, and the relevant platform directory rather than assuming that the existence of a recipe or container files guarantees support.

The stated design goal is a concise interface with only the toolbar buttons considered necessary for daily operation. That focus may suit installations where screen and interaction space are constrained. However, the README gives no CPU, memory, graphics, storage, or minimum-screen requirements. Continuous position handling, AIS decoding, raster display, and S57 rendering should therefore be evaluated on the intended vessel computer. Source portability alone cannot settle whether a particular hardware installation has adequate resources.

OpenCPN releases, maintenance, and upgrade boundaries

The repository is not archived, and its last push was on 2026-10-15. Recorded releases include OpenCPN 5.14.2 on 2026-09-28, OpenCPN 5.14.0 on 2026-04-09, and OpenCPN 5.13.3 Beta Release 4 on 2026-03-28. These records document recent project and release activity. They do not establish a long-term support period, compatibility with every chart source, or ongoing support for each hardware integration.

The repository-level license is identified as GPL-2.0, but the README uses a broader statement: OpenCPN is distributed using a multitude of licenses and points readers to `LICENSING`. Related top-level files include `COPYING.gplv2`, `COPYING.gplv3`, `COPYING.lgplv2`, and `COPYING.lgplv3`. A modified or redistributed build may therefore require attention to the terms of the application, bundled libraries, data, and plugins individually. This is not legal advice. Anyone distributing a build should inspect `LICENSING` and the notices associated with included components rather than treating one repository-level identifier as the whole licensing analysis.

The release list also does not document upgrade migrations. It does not identify supported chart revisions, autopilot models, serial interfaces, Android packaging rules, or configuration compatibility. Although the repository contains `test`, `.circleci`, and `.travis.yml`, no test matrix is quoted in the README. A skipper should check release-specific documentation before replacing a working onboard installation, especially when navigation depends on established GPS, AIS, and autopilot connections.

Why OpenCPN is the wrong tool for some workflows

OpenCPN's README draws the clearest product boundary: other tools may be better for offline route planning, tide and current prediction, and online logging. OpenCPN is therefore the wrong primary application when shore-based preparation is the main task. Its documented design begins with a helm-visible suite and emphasizes quick startup, daily controls, and position and chart display. That is a different operating context from long-lived route preparation or a web-connected voyage log.

Chart availability is another boundary. OpenCPN supports BSB and S57ENC display, but the README does not explain how chart files are obtained, refreshed, or licensed. A skipper needs suitable charts for the intended operating area before display support becomes useful. The application cannot solve a missing or unauthorized chart source, and this article does not imply that every chart format or geographic product is available.

Connectivity documentation is also limited. GPS, GPDS, AIS, and autopilot waypoints are named, and repository topics mention NMEA, GRIB, GSHHS, and Signal K. The README does not give exact connection menus, baud rates, device models, plugin requirements, or configuration keys. A prospective user who cannot consult the project manual and platform documentation should treat these unverified integrations as adoption boundaries. A broad list of related topics is not enough to assume a turnkey setup for every marine network.

OpenCPN versus dedicated offline route planning

A more relevant alternative is a dedicated offline route-planning tool rather than another consumer chartplotter. The difference lies in workflow. OpenCPN is designed around a vessel's active, helm-visible display, receiving position and AIS data while displaying BSB or S57ENC charts. An offline route planner centers work on preparing a route away from the helm, where route stages and surrounding navigation information can be reviewed before departure. The README itself points users toward other tools for offline route planning, tide and current prediction, and online logging.

This does not make OpenCPN irrelevant before a voyage. The repository includes command-line manual pages, plugins, weather-related topics, and chart-processing directories, so the wider codebase extends beyond chart rendering. But topic labels are not a feature specification. Without documentation of route calculation, tide prediction, current prediction, or synchronized online logging, those functions cannot be used as the basis for comparing OpenCPN with specialized planning software.

The practical choice therefore depends on where the primary work occurs. OpenCPN fits an onboard display role. A dedicated planner fits preparation performed offline. Some navigators may need both, but the evidence supports only that division of purpose, not a claim that OpenCPN cannot serve as part of a wider workflow.

Editorial conclusion

OpenCPN suits skippers who need a compact, continuously available navigation display on a supported desktop or Android platform and can supply compatible charts and position inputs. It does not fit users whose main requirement is offline route planning, tide and current prediction, or online logging. Before adoption, check the platform instructions in INSTALL, confirm that the vessel has usable BSB or S57ENC charts, and verify that its GPS, AIS, and autopilot equipment uses a documented interface.

Frequently asked questions

Which operating systems does OpenCPN support?

The README says OpenCPN is tested and in production use on Windows, macOS, Linux, and Android. It does not state minimum operating-system versions or supported processor architectures.

What chart formats can OpenCPN display?

The project description identifies BSB raster charts and S57ENC vector charts. The README does not document chart acquisition, updates, or licensing terms.

Does OpenCPN support AIS and autopilot navigation?

The project description lists AIS input decoding and waypoint autopilot navigation. It does not identify supported AIS receivers, autopilot models, or device-specific setup procedures.

Official sources

  1. License: GPL-2.0
  2. OpenCPN/OpenCPN on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/opencpn-opencpn.svg)](https://hysenlabs.com/projects/opencpn-opencpn)

Was this useful?