MeshCore vs Meshtastic: Technical Comparison
Protocol Comparison Reference
This page provides a technical comparison between MeshCore and Meshtastic - the two most widely deployed open-source LoRa mesh networking platforms. Both run on similar hardware and serve similar goals, but make very different design choices.
Feature Comparison Table
| Feature | MeshCore | Meshtastic |
|---|---|---|
| Routing | Flood-first to unknown destinations; subsequent unicast messages use direct path routing (ROUTE_TYPE_DIRECT) after path discovery via PAYLOAD_TYPE_PATH packets | Controlled flooding with hop limit and duplicate suppression (always floods) |
| Encryption | AES-128 ECB + HMAC-SHA256 (2-byte truncated, encrypt-then-MAC) for message payloads; ECDH per-pair key agreement via X25519 | AES-256-CTR with shared PSK per channel |
| Key Exchange | ECDH via X25519 (using Ed25519 identity keys); each node pair derives a unique shared secret | Static pre-shared key (PSK) distributed out-of-band; no per-pair key agreement for channels |
| Direct messages | End-to-end encrypted using per-pair ECDH keys | End-to-end encrypted via X25519 ECDH + AES-CCM (available since firmware v2.5) |
| Infrastructure role | Explicit Companion/Repeater/Room Server separation | Router/Repeater/Client/Tracker roles; 13 device roles total |
| Node discovery | Advertisement packets (flood or zero-hop) | NodeInfo broadcast flood |
| Position sharing | In advertisements (optional) | Continuous broadcast to channel (configurable interval) |
| Scalability | Better at high node counts due to path-based unicast reducing channel utilization | Best under ~100 nodes; flooding overhead grows with network size |
| Network mapping | App shows routing topology | meshmap.net aggregates public data |
| Message storage | Room servers (store-and-forward) | Store and Forward module (node-based) |
| App ecosystem | MeshCore app (iOS/Android) | Meshtastic app (iOS/Android/web) |
| Web interface | config.meshcore.dev, app.meshcore.nz | client.meshtastic.org |
| Firmware update | Web flasher at flasher.meshcore.io (USB, no OTA) | Web flasher + OTA via app |
| Primary hardware | T114, RAK4631, T-Beam v1.2+ (SX1262 required) | All of the above + many more (supports SX1276, SX1262, and others) |
| License | Open source (github.com/meshcore-dev) | Open source (github.com/meshtastic) |
When to Choose MeshCore
- Building dedicated network infrastructure - repeaters on towers, rooftops, or hilltops where path-based routing reduces channel congestion.
- Your community already uses MeshCore and you need to integrate with an existing deployment.
- You want stronger per-pair direct message encryption - ECDH per-pair keys provide better isolation than a shared channel PSK.
- Deploying a large-scale network (100+ nodes) where flooding creates significant channel congestion.
When to Choose Meshtastic
- You need the widest hardware compatibility - Meshtastic supports SX1276-based boards that MeshCore cannot use.
- You need WiFi/MQTT bridging for internet-connected nodes.
- Your community or region already has an established Meshtastic network.
- You need TAK/ATAK integration or other Meshtastic-specific integrations.
- You prefer a larger community and more third-party tooling.
Sources: MeshCore packet format documentation (github.com/meshcore-dev/MeshCore), Meshtastic documentation (meshtastic.org), Meshtastic protobufs (github.com/meshtastic/protobufs)