Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. go-nmea

go-nmea

MITGov1.11.0

A pure Go library for parsing NMEA 0183 sentences from GPS and marine navigation devices.

GitHubGitHub
265 stars86 forks0 contributors

What is go-nmea?

go-nmea is a Go library for parsing NMEA 0183 sentences, which are standard data strings emitted by GPS receivers, AIS systems, and other marine navigation equipment. It converts raw NMEA text into structured Go types, allowing developers to extract location, speed, heading, and other sensor data for applications in tracking, logging, or real-time navigation systems.

Target Audience

Go developers building applications that interface with GPS devices, marine electronics, or any hardware outputting NMEA 0183 data, such as fleet tracking systems, marine instrumentation software, or IoT sensor platforms.

Value Proposition

It offers a pure Go implementation with no external dependencies, comprehensive support for standard and proprietary sentences, and an extensible architecture for custom formats, making it a robust and maintainable choice for parsing NMEA data in Go ecosystems.

Overview

A NMEA parser library in pure Go

Use Cases

Best For

  • Parsing GPS data from serial devices in Go applications
  • Building marine navigation or tracking software
  • Processing AIS (Automatic Identification System) messages for vessel tracking
  • Integrating sensor data from autopilots or instrument panels
  • Developing IoT platforms that consume NMEA data streams
  • Adding location-aware features to Go-based embedded systems

Not Ideal For

  • Projects in programming languages other than Go
  • Applications requiring native NMEA 2000 parsing without proprietary sentence workarounds
  • Teams needing integrated graphical dashboards or visualization tools for NMEA data
  • Real-time systems where parsing latency must be minimized to microseconds

Pros & Cons

Pros

Comprehensive Sentence Support

Parses over 100 standard NMEA 0183 sentence types including GGA, RMC, and AIS messages, with a detailed README table referencing specifications for each.

Extensible Architecture

Allows registration of custom parsers for unsupported or proprietary sentences, as shown in the custom parsing example, enabling immediate unblocking.

Accurate Optional Field Handling

Uses nullable types (nmea.Int64 and nmea.Float64) to distinguish undefined values from actual zeros, preventing data misinterpretation in sentences like VTG.

User-Friendly Utilities

Includes helpers like FormatGPS and FormatDMS for coordinate formatting, simplifying presentation of parsed navigation data.

Cons

Incomplete Standard Coverage

The README table lists many NMEA sentences without links (e.g., ABK, ACA), indicating they are not implemented, forcing users to write custom parsers for missing types.

Custom Parser Complexity

Adding support for new sentence types requires implementing and registering parsers manually, which can be error-prone and increases development overhead compared to drop-in solutions.

Limited NMEA 2000 Support

Only handles NMEA 2000 via proprietary sentences like PNG and PCDIN, which are workarounds and may not cover all use cases for modern marine electronics.

Frequently Asked Questions

Quick Stats

Stars265
Forks86
Contributors0
Open Issues1
Last commit16 days ago
CreatedSince 2015

Tags

#iot#nmea#geolocation#serial-communication#gps#sensor-data#golang#go

Built With

G
Go

Included in

Go169.1k
Auto-fetched 8 hours ago

Related Projects

shsh

A shell parser, formatter, and interpreter with bash and zsh support; includes shfmt

Stars9,041
Forks451
Last commit14 hours ago
gofeedgofeed

Parse RSS, Atom and JSON feeds in Go

Stars2,878
Forks223
Last commit12 hours ago
go-querystringgo-querystring

go-querystring is Go library for encoding structs into URL query strings.

Stars2,146
Forks188
Last commit18 days ago
godump (goforj)godump (goforj)

A minimal, developer-friendly pretty-printer and debug dumper for Go structs, inspired by Laravel’s dump() and Symfony’s VarDumper.

Stars1,759
Forks35
Last commit2 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub