Link Budget Calculator
Before you climb a roof to mount a node, it helps to know whether the link will close at all. This calculator estimates how much signal survives the trip between two radios and compares it against the noise floor.
Pick a preset, set the distance, and watch the margin. Everything runs in your browser — nothing is sent anywhere.
At 5 km, 915 MHz
- Received power
- —
- Noise floor
- —
- SNR
- —
- Link margin
- —
Path loss
| Free space | — |
|---|---|
| Atmospheric gases | — |
| Cloud / fog | — |
| Rain | — |
| Feedline / system | — |
| Total | — |
What this models
Received power is P_rx = P_tx + G_tx + G_rx − L_path − L_system. Path loss is free-space spreading plus optional atmospheric absorption, cloud, and rain. SNR compares that against the Johnson–Nyquist thermal noise floor kTB.
Assumptions
- Flat earth — no terrain, no obstructions, no Fresnel-zone clearance check
- Line of sight, far field, no multipath or ground reflection
- Uniform rainfall, pressure, and temperature along the whole path
- Narrowband signal; thermal noise is the only noise source
- Receiver noise figure is not modelled — real radios are worse than
kTB
Valid range
The ITU gas and rain models are specified for 1–1000 GHz, and the cloud model to 200 GHz. Below 1 GHz — including the 915 MHz Meshtastic band — the free-space term is still exact, but the atmospheric terms are extrapolated. In practice they are negligible down there, so this matters less than it sounds.
Credit
The physics is ported fromLink-Budget-GUIby SpecterStrider, used under the Apache 2.0 licence. The original is a Python / NiceGUI desktop app; the model was translated to TypeScript so it runs in the browser on this static site. Formulas and ITU coefficient tables are unchanged and match the original to floating-point precision.
One deliberate deviation: the upstream noise floor returns dBW but is compared against dBm, making SNR 30 dB optimistic. This version returns dBm, so 1 MHz at 290 K gives the textbook −114 dBm.
Reading the result
Section titled “Reading the result”Link margin is the number that matters: your SNR minus the SNR your radio needs to demodulate. Positive means the link closes, negative means it does not. Roughly 10 dB of margin is a comfortable target — real paths lose signal to things this model does not know about.
Received power is what lands at the receiver’s antenna terminals. Noise
floor is thermal noise kTB at the receiver bandwidth: narrower bandwidth
means a lower noise floor, which is exactly why LoRa reaches so far at such low
data rates.
What it does not model
Section titled “What it does not model”This is a clear-path model. It assumes flat ground and unobstructed line of sight, so it will happily tell you a link closes straight through a hill. It also ignores receiver noise figure, so a real radio will do somewhat worse than the SNR shown here.
The one geometry check it does make is the radio horizon. Set your antenna heights and the chart shades everything past the point where the curve of the earth gets in the way — the loss model itself does not know about that, so treat any margin in the shaded region as fiction until you have checked terrain.
For terrain, use the Meshtastic Site Planner alongside this — that tool handles obstructions but not weather, and this one handles weather but not obstructions.
Two more caveats worth knowing:
- The ITU atmospheric and rain models are specified from 1 GHz up. At 915 MHz the free-space number is still exact, but the weather terms are extrapolated. They are tiny at that frequency, so this rarely changes the answer.
- Antenna gain figures on cheap listings are optimistic. If you are unsure, a stock rubber-duck is closer to 2 dBi than the 5 dBi on the box.
Credit
Section titled “Credit”The physics comes from Link-Budget-GUI by SpecterStrider, used under the Apache 2.0 licence. That project is a Python and NiceGUI app; since this site is static, the model was ported to TypeScript so it runs client-side. The formulas and ITU coefficient tables are unchanged, and the port was checked against the original across the frequency range.
Model references: Friis transmission equation, ITU-R P.676-13 (atmospheric gases), ITU-R P.840-9 (cloud and fog), ITU-R P.838-3 and P.530-17 (rain), and Johnson–Nyquist thermal noise.