---
title: "Estimates LoRa maximum communication range by computing the free-space path loss (FSPL) link budget and applying terrain-dependent correction factors. Calculates total link budget from transmit power, antenna gains, and receiver sensitivity, then solves the FSPL equation for distance after subtracting terrain losses (0 dB open to 50 dB indoor). Returns estimated range in km, link margin at 1 km, and effective path loss. Useful for Meshtastic deployment planning and coverage mapping. Terrain corrections are empirical estimates; real-world range varies with elevation, foliage, and weather."
method: POST
path: "/api/lora_range_estimate"
tags: ["mesh"]
---

# Estimates LoRa maximum communication range by computing the free-space path loss (FSPL) link budget and applying terrain-dependent correction factors. Calculates total link budget from transmit power, antenna gains, and receiver sensitivity, then solves the FSPL equation for distance after subtracting terrain losses (0 dB open to 50 dB indoor). Returns estimated range in km, link margin at 1 km, and effective path loss. Useful for Meshtastic deployment planning and coverage mapping. Terrain corrections are empirical estimates; real-world range varies with elevation, foliage, and weather.

`POST /api/lora_range_estimate`

## Request

- Base URL: `https://calc.engineer`
- URL: `https://calc.engineer/api/lora_range_estimate`
- Auth: none declared

## Request body

- object
  - `tx_dbm` number: Transmit power in dBm. Typical LoRa: 14-30 dBm depending on region and module.
  - `freq_mhz` number: Carrier frequency in MHz. Common: 868 (EU), 915 (US/AU), 433 (Asia).
  - `tx_gain_dbi` number: Transmit antenna gain in dBi. 2.15 dBi = half-wave dipole.
  - `rx_gain_dbi` number: Receive antenna gain in dBi. 2.15 dBi = half-wave dipole.
  - `rx_sensitivity_dbm` number: Receiver sensitivity in dBm. Typical LoRa SF10/BW125: -130 dBm. Varies by SF and bandwidth.
  - `terrain` 'open' | 'suburban' | 'urban' | 'dense_urban' | 'indoor': Terrain type for path loss correction. open: line-of-sight, suburban: light buildings, urban: moderate buildings, dense_urban: city center, indoor: inside buildings.

## Response `200`

Computed result for lora_range_estimate

- object
  - `result` object, required
    - `max_range_km` number, required: Estimated maximum range in kilometers accounting for terrain correction.
    - `margin_at_1km_db` number, required: Link margin at 1 km distance in dB. Positive means signal above sensitivity.
    - `effective_path_loss_db` number, required: Maximum allowable path loss in dB (link budget minus terrain correction).
  - `tool` string, required
  - `version` string, required
  - `computed_at` string, date-time, required
  - `chain` object, required
    - `feeds` unknown[]
      - unknown
    - `accepts_from` unknown[]
      - unknown

## Other responses

- `400`: Validation error or invalid JSON
- `404`: Tool not found

---

[API](https://skmtc.dev/calc/apis/calc-engineer-api.md) · [All operations](https://skmtc.dev/calc/apis/calc-engineer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/calc/apis/calc-engineer-api/revisions/8830480ec488?raw)
