Skip to content

Bitcoin accepted at checkout  |  Ships from Montreal, QC, Canada  |  Expert support since 2016

Meshtastic Channel URL Reference: What a Shared Channel Link Actually Contains
Security & Privacy

Meshtastic Channel URL Reference: What a Shared Channel Link Actually Contains

· D-Central · ⏱ 4 min read

When someone shares a Meshtastic channel, they send you a link like https://meshtastic.org/e/#<data> — or the QR code that encodes the same thing. That link looks opaque, but it isn’t encrypted: everything after the # is a base64 (URL-safe) blob that anyone can decode. This reference explains exactly what is inside that blob, field by field, and — most importantly — what you reveal when you share a channel URL. Every structural detail here is drawn from the canonical Meshtastic Protobuf definitions (apponly.proto, channel.proto, config.proto).

The one-sentence version, if you read nothing else: a channel URL carries the channel’s pre-shared key in plaintext. Whoever holds the URL can decrypt that channel. Treat a channel link with the same care as the key it contains.

Try it: paste any channel link into our Meshtastic channel URL decoder to see its channels, key strength and MQTT flags — it runs entirely in your browser, so the key never leaves your device.

What the URL actually encodes: a ChannelSet

The fragment after # is a base64url-encoded ChannelSet message — Meshtastic’s compact representation of one primary channel plus any secondary channels. Its structure is small:

Field # Name Type Meaning
1 settings repeated ChannelSettings One entry per channel being shared
2 lora_config Config.LoRaConfig The radio settings (modem preset, region)

So a shared URL is not just “a channel” — it can carry your whole channel set and your radio configuration.

Inside each channel: ChannelSettings

Each entry in settings is a ChannelSettings message. These are the fields that define a channel:

Field # Name Type What it holds
1 channel_num uint32 Deprecated — legacy channel number.
2 psk bytes The pre-shared key. 0, 16, or 32 bytes (see the key-strength table below).
3 name string Short channel name, under 12 bytes (e.g. an empty name displays as the default “LongFast”).
4 id fixed32 A globally unique channel identifier.
5 uplink_enabled bool Forward this channel’s messages to the public internet (MQTT).
6 downlink_enabled bool Forward messages from the internet back onto the mesh.
7 module_settings ModuleSettings Per-channel module configuration.

The uplink_enabled / downlink_enabled pair matters for privacy: a channel with uplink enabled is being bridged to an internet MQTT server, so its traffic leaves the local RF mesh entirely. If a shared URL has these set, you’re joining a channel that talks to the internet.

The PSK field: what “encrypted” really means here

The security of a channel lives entirely in that psk field, and its length tells you the key strength:

PSK length Meaning
0 bytes (empty) No channel-specific key set.
16 bytes AES-128 key.
32 bytes AES-256 key.

There is also a widely-used single-byte shorthand the apps use to reference the well-known default key (the key behind the public “LongFast” channel), rather than embedding a full random key. That default-key convention — and why a channel using it is effectively public despite showing a lock icon — is the single biggest Meshtastic misconception, and we cover it in depth in our Meshtastic encryption guide. The structural point for this reference: because the PSK travels inside the URL, sharing the link shares the key. There is no separate “key exchange” — the URL is the key exchange.

Channel roles: PRIMARY vs SECONDARY

When channels are represented in the fuller Channel message (as opposed to the compact URL set), each carries a role:

Role Value Behavior
DISABLED 0 Channel not in use.
PRIMARY 1 Sets the radio frequency slot — only one primary is allowed per device.
SECONDARY 2 Used for encryption/decryption only; its radio settings are ignored (it rides on the primary’s frequency).

This is why you can have several channels active at once: one PRIMARY defines the frequency the radio actually uses, and SECONDARY channels are just additional encryption contexts layered on top.

The radio settings: LoRaConfig

The lora_config half of a ChannelSet carries the radio parameters. Two fields matter most for interoperability — if two nodes don’t match on these, they won’t hear each other:

  • modem_preset (field 2) — the speed/range trade-off. The presets, by enum value, are: LONG_FAST (0, the default), LONG_SLOW (1), VERY_LONG_SLOW (2), MEDIUM_SLOW (3), MEDIUM_FAST (4), SHORT_SLOW (5), SHORT_FAST (6), LONG_MODERATE (7), SHORT_TURBO (8), LONG_TURBO (9), and further compact/narrow presets in later firmware. For what each preset means in practice, see our modem presets reference.
  • region (field 7) — selects the regional frequency plan the device operates under. (A node must be set to a legal region for where it is; the region governs which frequencies and duty limits apply.)
  • use_preset (field 1) — whether the device uses a named preset (true) or fully manual bandwidth/spread-factor/coding-rate values.

What sharing a channel URL exposes — the checklist

Put together, here is what a person receives when you hand them a channel link:

  • The encryption key for every channel in the set — they can now read and send on those channels.
  • The channel names and their unique IDs.
  • Whether the channels bridge to the internet (uplink/downlink).
  • Your radio configuration — modem preset and region.

The practical guidance: for anything private, generate a full 32-byte (AES-256) key rather than relying on the default, share the URL over a channel you already trust, and remember that revoking access means rotating the key and re-sharing a new URL — there is no per-member revocation. For the deeper cryptographic model, spoofing caveats, and the metadata that still leaks even on an encrypted channel, read the Meshtastic encryption guide. For the packet layer these channels ride on, see the packet structure reference, and for the wider vertical, the sovereign mesh hub.

Sources: Meshtastic Protobuf definitions — apponly.proto (ChannelSet), channel.proto (ChannelSettings, Channel, Role), and config.proto (LoRaConfig, ModemPreset). Field numbers and enum values reflect the current protobuf schema; confirm against your firmware version for edge cases.

D-Central

Bitcoin Mining Experts Since 2016

ASIC Repair Bitaxe Pioneer Open-Source Mining Space Heaters Home Mining

D-Central Technologies is a Canadian Bitcoin mining company making institutional-grade mining technology accessible to home miners. Thousands of miners repaired, 350+ products shipped from Canada.

About D-Central →

Related Posts

Start Mining Smarter

Whether you are heating your home with sats, building a Bitaxe, or scaling up — D-Central has the hardware, repairs, and expertise you need.

Browse Products Talk to a Mining Expert