Protocol Comparison Reference
Protocol Comparison Reference
This page provides a detailed 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 Demand-drivento path-basedunknown destinations; subsequent unicast messages use direct path routing (
RREQ/RREP)ROUTE_TYPE_DIRECT) after path discovery via PAYLOAD_TYPE_PATH packetsControlled Floodingflooding 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
AES-256-CTRkey +agreement PSKvia for channelsX25519
AES-256-CTR with shared PSK per channel
Key ExchangeECDH via X25519 (using Ed25519 identity keys); each node pair derives a unique shared secretStatic pre-shared key (PSK) distributed out-of-band; no per-pair key agreement for channels
Direct messages
End-to-end encrypted
(nodeusing keyper-pair pairs)ECDH keys
End-to-end
encrypted via
PKIX25519 ECDH + AES-CCM (
available since firmware
2.3+)v2.5)
Infrastructure role
Explicit
Companion/Repeater/
ClientRoom Server separation
Router/Repeater/
ClientClient/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
nodesnodes; 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
Community size
Smaller, more technical
Larger, more mainstream
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
MeshCore is the better choice when:
You are buildingBuilding dedicated network infrastructure — repeaters on towers, rooftops, or hilltops where the explicitpath-based routing architecturereduces payschannel dividends.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.
You are deployingDeploying a large-scale network (100+ nodes) where flooding would createcreates significant channel congestion.
You need predictable airtime — path-based routing makes channel utilization more deterministic and easier to plan for.
When to Choose Meshtastic
Meshtastic is the better choice when:
You want the largest ecosystem of compatible hardware, apps, integrations, and community knowledge.
You prioritize the easiest app experience — Meshtastic's app is more polished and feature-rich for end users.
You need the
broadestwidest hardware compatibility — Meshtastic supports
aSX1276-based widerboards rangethat ofMeshCore devices.cannot use.
You
areneed joiningWiFi/MQTT anbridging existingfor localinternet-connected Meshtastic network — interoperability with your community is paramount.nodes.
Your
deploymentcommunity isor smallerregion inalready scalehas (underan ~100established nodes)Meshtastic wherenetwork.
floodingYou overheadneed isTAK/ATAK manageable.integration or other Meshtastic-specific integrations.
You prefer a larger community and more third-party tooling.
Interoperability
Sources:
MeshCore andpacket format documentation (github.com/meshcore-dev/MeshCore), Meshtastic cannotdocumentation interoperate. They use different packet formats, different frequency defaults, and fundamentally different routing protocols. A MeshCore node cannot communicate with a(meshtastic.org), Meshtastic nodeprotobufs even when operating on the same frequency band — the packets are simply not understood by the other protocol's firmware.(github.com/meshtastic/protobufs)
However, the two protocols can coexist: some operators run both, with separate nodes for each protocol, on different LoRa channels within the same frequency band. This allows a single operator to participate in both communities simultaneously.
Despite the technical differences, there is significant community overlap between MeshCore and Meshtastic operators. Many people run both. Understanding one protocol's design choices makes it much easier to understand the other — the fundamental LoRa physics, antenna theory, channel planning, and deployment considerations are identical. This wiki covers both protocols, and knowledge is shared freely across both communities.