Meshtastic Map
Created by Liam Cottle
About
Search
Devices
Random
Settings
Reload

# Meshtastic Map
An interactive map of all Meshtastic nodes.

## Created by Liam Cottle

👋 Welcome to my open source map of Meshtastic nodes heard on the public MQTT server.
Features

- The map shows nodes that have sent a valid position to MQTT.
- Position packets must be unencrypted, or encrypted with the default key.
- Use the search bar to find nodes by ID or name.
- Hover over nodes (on desktop) to see basic details.
- Click a node to see info such as telemetry graphs and traceroutes.
- Use the top right layers panel to show neighbours and waypoints.
- Use the settings button to configure the map to your liking.
- Have a feature request, or found a bug? Open an issue on GitHub.

FAQ
How do I add my node to the map?
Your node, or a node that hears your node must uplink to MQTT.
Your position packet must be unencrypted, or encrypted with the default key.
How do I remove my node from the map?
Nodes that have not been heard for 7 days are automatically removed.
Disable position reporting in your node to prevent it coming back.
Use custom encryption keys so the public can't see your position data.
How do I see neighbours a node heard?
Open the top right layers panel and enable neighbours.
Some neighbours are from MQTT, this is patched in latest firmware.
Legal
This project is not affiliated with or endorsed by the Meshtastic project.
The Meshtastic logo is the trademark of Meshtastic LLC.
Map tiles provided by OpenStreetMap
Dismiss

## Meshtastic Devices

### Ordered by most popular

- {{ hardwareModel.hardware_model_name }}

  {{ hardwareModel.count }} nodes on the map

## Node Info

### {{ selectedNode.long_name }}

Details

- Long Name

  {{ selectedNode.long_name }}

- Short Name

  {{ selectedNode.short_name }}

- Role

  {{ selectedNode.role_name }}

- Hardware

  {{ selectedNode.hardware_model_name }}

- Firmware

  {{ selectedNode.firmware_version }} ???

LoRa Config

- Region

  {{ selectedNode.region_name }} ???

- Frequency

  {{ getRegionFrequencyRange(selectedNode.region_name) }} ???

- Modem Preset

  {{ selectedNode.modem_preset_name }} ???

- Has Default Channel

  {{ selectedNode.has_default_channel ? "Yes" : "No" }} ???

Position

- Latitude

  {{ selectedNode.latitude }} ???

- Longitude

  {{ selectedNode.longitude }} ???

- Altitude

  {{ selectedNode.altitude }}m ???

Telemetry

- Battery Level

  Plugged In {{ selectedNode.battery_level }}% ???

- Voltage

  {{ Number(selectedNode.voltage).toFixed(2) }}V ???

- Channel Utilization

  {{ Number(selectedNode.channel_utilization).toFixed(2) }}% ???

- Air Util Tx

  {{ Number(selectedNode.air_util_tx).toFixed(2) }}% ???

- Uptime

  {{ selectedNode.uptime_seconds }} seconds ???

MQTT
Topics this node sent packets to

Trace Routes
Only 5 most recent are shown

Other

- ID

  {{ selectedNode.node_id }}

- Hex ID

  {{ selectedNode.node_id_hex }}

- First Seen

  {{ moment(new Date(selectedNode.created_at)).fromNow() }}

- Last Seen

  {{ moment(new Date(selectedNode.updated_at)).fromNow() }}

- Neighbours Updated

  {{ moment(new Date(selectedNode.neighbours_updated_at)).fromNow() }} ???

- Position Updated

  {{ moment(new Date(selectedNode.position_updated_at)).fromNow() }} ???

Share Link

## Traceroute #{{ selectedTraceRoute.id }}

### {{ moment(new Date(selectedTraceRoute.updated_at)).fromNow() }} - {{ selectedTraceRoute.route.length }} hops {{ selectedTraceRoute.channel_id ? `on ${selectedTraceRoute.channel_id}` : '' }}

- {{ findNodeById(selectedTraceRoute.to)?.long_name || '???' }}
  Hex ID: !{{ Number(selectedTraceRoute.to).toString(16) }}
  Started the traceroute
- {{ findNodeById(route)?.long_name || '???' }}
  Hex ID: !{{ Number(route).toString(16) }}
  Forwarded the packet
- {{ findNodeById(selectedTraceRoute.from)?.long_name || '???' }}
  Hex ID: !{{ Number(selectedTraceRoute.from).toString(16) }}
  Replied to traceroute
- {{ findNodeById(selectedTraceRoute.gateway_id)?.long_name || '???' }}
  Hex ID: !{{ Number(selectedTraceRoute.gateway_id).toString(16) }}
  Gated the packet to MQTT

Raw Data

    {{ JSON.stringify(selectedTraceRoute, null, 4) }}

## Settings

### Changes are only saved in this browser.

Nodes Max Age
Nodes not updated within this time are hidden. Reload to update map.
Nodes Offline Age
Nodes not updated within this time will show as red icons. Reload to update map.
Waypoints Max Age
Waypoints not updated within this time are hidden. Reload to update map.
Neighbours Max Distance (meters)
Neighbours further than this are hidden. Reload to update map.
Zoom Level (go to node)
How far to zoom map when navigating to a node.
Auto Update Position in URL
Sets lat/lng/zoom as query parameters.
Enable Map Animations
Map will animate flying to nodes.

## {{ selectedNodeToShowNeighbours.short_name }} Neighbours

### Nodes heard by {{ selectedNodeToShowNeighbours.short_name }}

### Nodes that heard {{ selectedNodeToShowNeighbours.short_name }}