Sound level distance calculator
A source measured at 90 dB from 1 metre is about 83.98 dB from 2 metres. Enter the level you measured, the distance where you measured it and a new distance to estimate the level there and the change in decibels. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Level
- 90
- Distance from
- 1
- Distance to
- 2
- Level at distance
- 83.9794000867 dB
- Delta db
- -6.0205999133
- Distance ratio
- 0.5
- Precision
- 10
This sound level distance calculator estimates how loud a source will be at a different range when you already know the level at one distance. In free-field conditions a compact source radiates with intensity falling as one over distance squared, so the decibel change between two ranges is twenty times the base-ten log of the distance ratio: L two equals L one plus twenty log ten of r one over r two. Classic checks include ninety decibels at one metre becoming about eighty-three point nine eight decibels at two metres, a doubling of distance near minus six decibels, and a tenfold increase in distance of exactly minus twenty decibels. The engine is pure finite arithmetic with no network calls, no sampling, and no date-dependent shortcuts.
Where inverse-square level estimates fit in study, events, and software
Students meet inverse-square sound levels when a physics or acoustics unit moves from intensity to decibels, when a lab asks how loud a speaker remains at twice the seat distance, or when a contest problem demands a six-decibel drop for a doubling of range without a calculator that invents room corrections. Event planners and safety coordinators use the same closed form as a first estimate of how far a PA or generator will still exceed a noise limit before measuring on site.
Teachers can pre-generate answer keys for modest level and distance pairs without trusting opaque apps that silently mix pressure and intensity formulas. Developers call the same contract from scripts to seed deterministic test vectors for outdoor-noise widgets, to normalize user-entered ranges before map overlays, or to satisfy programming-challenge statements that demand L two rather than a hand-waved sketch.
Product and education tools use the transfer when a learner types ninety decibels at one metre and the UI must show the level at two, ten, or one hundred metres with a clean formula reminder. Pair it with frequency or other physics helpers when you are building a small lab of free, deterministic acoustic calculators.
What you can do with it
Event and outdoor noise estimates
Roughly estimate how a PA, generator, or traffic source falls off with distance before on-site measurements or permits.
FAQ
What does the sound level distance calculator cost?
It is free in your browser on this page.
What happens if a distance is zero?
Zero distance is undefined under the inverse-square intensity model (division by zero at the source).
Does this account for walls, wind, or absorption?
No. It only applies free-field inverse-square transfer. Reflections, barriers, and atmospheric absorption are outside this tool.
Why does doubling the distance drop the level by about 6 dB?
20·log10(1/2) ≈ −6.0206 dB. A tenfold increase in distance is exactly −20 dB under the same free-field model.
Can I use feet instead of metres?
Yes, as long as both distances are in the same unit. Only their ratio counts, so a measurement at 1 foot moved to 2 feet gives the same drop as 1 metre moved to 2 metres.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/phys/decibel-distance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"level":90,"distance_from":1,"distance_to":2}'const res = await fetch("https://api.kit.forhosting.com/phys/decibel-distance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"level": 90,
"distance_from": 1,
"distance_to": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/phys/decibel-distance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"level": 90,
"distance_from": 1,
"distance_to": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/phys/decibel-distance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"level":90,"distance_from":1,"distance_to":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"level":90,"distance_from":1,"distance_to":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/phys/decibel-distance", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"level": 90,
"distance_from": 1,
"distance_to": 2
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "phys.decibel_distance",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_abs_level | 1000000 |
max_distance | 1000000000000000 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
What inverse-square sound levels mean and what the response contains
Sound intensity from an ideal point source in free field spreads over a sphere whose surface area grows with the square of radius, so intensity is proportional to one over r squared. Sound pressure level in decibels is ten times the log of intensity over a reference intensity, which expands into the familiar transfer formula L two equals L one plus twenty times log ten of r one over r two. That identity assumes spherical spreading, no ground reflections, no atmospheric absorption, and a source small compared with the distances involved; real rooms, barriers, and wind will shift the result, but the free-field estimate remains the standard first-order check used in textbooks, event permits, and quick field planning. This calculator returns the input level and both distances, the estimated level_at_distance, the signed delta_db between the two ranges, the distance_ratio r one over r two, the precision used, a method tag inverse_square_decibel, a short formula string, and the unit dB. There is no Monte Carlo path and no weather model: the engine either evaluates the closed form inside the supported ranges or rejects the input with invalid_input. Rejected cases include missing level or distances, non-finite values, magnitudes above the documented ceilings, and any distance that is zero or negative, because the inverse-square intensity model divides by distance and is undefined at the source.
How level and distances are read and how results stay reproducible
Distances must share a consistent length unit; metres are the usual choice, but any positive scale works as long as both distances use the same unit because only the ratio enters the formula. Optional leading plus signs and scientific notation on numeric strings are allowed when they parse as finite decimals; embedded spaces, hex prefixes, and non-numeric tokens are rejected with a clear message so a bad cell does not become a wrong level. Zero or negative distance_from or distance_to fails with invalid_input because zero distance is undefined under the inverse-square law. An optional precision field, with aliases decimals and dp, chooses how many decimal places to expose for all numeric fields, defaulting to ten and capped at fifteen so JSON goldens stay stable. Pair the free browser run on this page with the priced API when you need the identical mathematical result inside an automated pipeline without re-implementing twenty log ten yourself.
Where inverse-square level estimates fit in study, events, and software
On this page the work runs entirely in your browser; through the API each successful lookup costs $0.002, failed validation is not charged, and nothing is stored after the response returns. That split — free interactive exploration and a priced, identical API — matches the rest of the KIT tier-A catalog and lets you move from a classroom demo to an automated pipeline without changing the mathematical result.
Integration use cases
Homework and inverse-square drills
Check textbook problems that ask for dB at a new range from a known level and distance using L2 = L1 + 20·log10(r1/r2).
Deterministic acoustic fixtures
Generate reproducible level_at_distance and delta_db values for unit tests, CI assertions, and teaching demos.
Technical questions
What formula is used?
Free-field spherical spreading: L2 = L1 + 20·log10(r1/r2), equivalently L2 = L1 − 20·log10(r2/r1). Intensity is assumed proportional to 1/r².