Room Volume from Reverberation Time Calculator
This room volume from reverberation time calculator estimates the enclosed volume implied by a measured RT60 and a known total equivalent absorption area.
Run — free
Enter reverberation time in seconds and absorption in metric sabins, and the calculator rearranges the metric Sabine equation to solve for cubic metres. The result is deterministic and useful for acoustic surveys, measurement checks, teaching, and preliminary room analysis. It is an estimate based on a diffuse sound field, so unusual geometry, uneven treatment, coupled spaces, or frequency-dependent behavior may require a more detailed acoustic method.
What the inverted Sabine result represents
The standard metric Sabine equation is commonly written as RT60 = 0.161 × V ÷ A, where RT60 is the reverberation time in seconds, V is enclosed room volume in cubic metres, and A is total equivalent absorption area in metric sabins. This calculator rearranges that relationship to V = RT60 × A ÷ 0.161. The returned volume is therefore the room size that would be consistent with both supplied measurements under the assumptions of the Sabine model. It is not a geometric survey and does not infer length, width, or height. Many different room shapes can have the same volume, and a numerically plausible answer does not prove that the measured absorption or reverberation time is accurate. Treat the result as an acoustically implied volume that can be compared with plans, laser measurements, or a separately calculated geometric volume. A large disagreement is often a useful diagnostic signal: the absorption estimate may omit occupants or furnishings, the RT60 may come from a different frequency band, or the room may not behave like the diffuse field assumed by the equation.
Prepare consistent RT60 and absorption inputs
Use a measured reverberation time that represents a 60-decibel decay, whether it was observed directly or extrapolated from a shorter decay range by suitable measurement software. Enter that value in seconds. For total absorption, use metric sabins, also described as square metres of equivalent absorption area. Calculate it by multiplying each surface area by the material absorption coefficient for the frequency band of interest, then adding contributions from seats, people, curtains, furniture, and other absorbers. Both inputs must be finite numbers strictly greater than zero. Most importantly, keep the frequency basis consistent. Absorption coefficients vary by frequency, and measured RT60 commonly differs across octave or one-third-octave bands. Combining a 500 Hz RT60 with absorption estimated at 2 kHz produces a volume with no coherent physical meaning. The constant 0.161 assumes cubic metres and metric sabins; do not enter cubic feet or imperial sabins without converting them first. If you have several frequency bands, run one calculation per band and compare the implied volumes. A stable cluster supports the assumptions, while a wide spread suggests uncertain absorption data, measurement noise, or non-diffuse room behavior.
Interpret the estimate and understand its limits
Compare the calculated cubic metres with an independent geometric estimate whenever possible. For a simple rectangular room, multiply internal length, width, and height; for an irregular room, divide the space into simpler solids and add their volumes. Close agreement can support the consistency of the acoustic measurements, but it should not be treated as proof because errors in RT60 and absorption can offset one another. The relationship is linear: doubling measured RT60 while keeping absorption fixed doubles the implied volume, and doubling total absorption with the same RT60 also doubles it. This makes the calculator useful for sensitivity checks and for seeing how measurement uncertainty propagates into the result. Sabine's equation works best when sound energy is reasonably diffuse and absorption is not extremely high or concentrated in one area. Strong flutter echoes, long narrow proportions, coupled chambers, open doors, unusual ceiling forms, and highly absorptive rooms can violate those assumptions. Air absorption and frequency effects may also matter in large spaces. Use detailed simulation, repeated measurements, or professional acoustic advice when the estimate informs construction, compliance, substantial spending, or safety-related decisions. API execution costs $0.002 per request.
What you can do with it
Check an acoustic survey against room plans
Compare the volume implied by measured RT60 and estimated absorption with the volume calculated from architectural dimensions.
Estimate an inaccessible room volume
Produce a preliminary volume estimate when acoustic measurements and an absorption inventory are available but complete dimensions are not.
Teach the inverted Sabine equation
Demonstrate how reverberation time, equivalent absorption area, and enclosed volume relate in a deterministic metric calculation.
FAQ
Which equation does the calculator use?
It uses the inverted metric Sabine equation V = RT60 × A ÷ 0.161, returning volume in cubic metres.
What is a metric sabin?
One metric sabin is one square metre of equivalent perfectly absorbing area. Total absorption sums surface areas multiplied by their absorption coefficients plus other absorbers.
Can I enter cubic feet or imperial sabins?
No. The constant 0.161 is for cubic metres and metric sabins. Convert imperial measurements before using this calculator.
Should RT60 and absorption come from the same frequency band?
Yes. Pair the measured RT60 with total absorption for the same frequency band because both quantities can vary substantially with frequency.
Why does the result differ from the measured geometric volume?
Possible causes include incomplete absorption estimates, RT60 measurement error, inconsistent frequency bands, non-diffuse sound, coupled spaces, or geometry outside Sabine's assumptions.
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/optics/room-volume-from-rt60 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"reverberation_time_seconds":1.2,"total_absorption_sabins":50}'const res = await fetch("https://api.kit.forhosting.com/optics/room-volume-from-rt60", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"reverberation_time_seconds": 1.2,
"total_absorption_sabins": 50
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/optics/room-volume-from-rt60",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"reverberation_time_seconds": 1.2,
"total_absorption_sabins": 50
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/optics/room-volume-from-rt60", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"reverberation_time_seconds":1.2,"total_absorption_sabins":50}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"reverberation_time_seconds":1.2,"total_absorption_sabins":50}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/optics/room-volume-from-rt60", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"reverberation_time_seconds": 1.2,
"total_absorption_sabins": 50
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "optics.room_volume_from_rt60",
"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.
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. |