PCM Audio Bitrate Calculator
The PCM audio bitrate calculator finds the raw, uncompressed data rate produced by a digital audio format.
Run — free
Enter the sample rate in hertz, the number of bits used for every sample, and the channel count. The result shows the rate in bits and bytes per second, with convenient decimal kilobit, megabit, and megabyte conversions. It is useful for checking interface capacity, estimating storage needs, comparing recording formats, and understanding why uncompressed audio requires more throughput than its compressed delivery formats.
What raw PCM bitrate means
Pulse-code modulation represents an audio waveform as a sequence of numeric samples. The raw bitrate describes how many data bits those samples produce every second before compression, container overhead, metadata, error correction, or transport framing is considered. Three values determine that rate. The sample rate says how many snapshots are taken per second. The bit depth says how many bits represent each snapshot for one channel. The channel count says how many independent streams are recorded at the same time. Multiplying these values gives the raw PCM bitrate: sample rate × bit depth × channels. For example, stereo doubles the data rate of mono when the other settings stay unchanged. Likewise, moving from 16-bit to 24-bit audio increases the rate by fifty percent. This direct relationship makes the calculation valuable when selecting recording settings, checking whether a connection has enough sustained capacity, or explaining the size difference between common PCM formats. The calculator reports decimal networking units, where one kilobit is 1,000 bits and one megabit is 1,000,000 bits.
How to enter the format correctly
Enter the sample rate as an integer in hertz rather than using an abbreviated label. For a 48 kHz recording, enter 48000. Enter the actual stored bit depth for each sample, such as 16, 24, or 32, and enter the number of channels as a positive integer. Mono is one channel, conventional stereo is two, and multichannel sessions may use six, eight, or many more channels. The calculator deliberately does not restrict these fields to a short list because professional and experimental systems can use valid settings outside familiar consumer presets. It does require positive whole numbers and rejects missing values, fractions, text, zero, negative numbers, and calculations beyond JavaScript’s exact safe-integer range. Results use bits per second for the primary bitrate. Bytes per second are calculated by dividing by eight, even when that produces a fractional byte rate for an unusual bit depth. The decimal kbps, Mbps, and MB/s values are conversions of the same exact raw rate, not separate estimates or rounded approximations.
Interpreting the result for storage and transport
Use bits per second or megabits per second when comparing the PCM stream with the advertised throughput of an audio link, network, recorder, or processing pipeline. Real transports need headroom because packet headers, framing, clocking, checksums, and other protocol costs may sit above the raw sample payload. A connection whose nominal capacity merely equals the calculated PCM rate is therefore not automatically sufficient. Use bytes per second or megabytes per second as a starting point for storage estimates. Multiplying bytes per second by duration gives the raw payload size, but an actual WAV, AIFF, RF64, or other file can be slightly larger because it also contains headers and metadata. The result is not the bitrate of a compressed encoding such as MP3, AAC, Opus, FLAC, or ALAC. Lossy codecs choose their own target rate, while lossless formats vary with the signal and compression efficiency. This calculator answers a narrower and dependable question: how much sample data an unpacked PCM format generates continuously from its declared sampling parameters.
What you can do with it
Check audio interface capacity
Compare a multichannel PCM session’s raw Mbps requirement with the sustained payload capacity available from an interface or network link.
Estimate recording storage
Use the returned bytes per second as the basis for estimating how much raw sample storage a session duration will consume.
Compare format settings
See exactly how changing sample rate, bit depth, or channel count affects the uncompressed data rate.
FAQ
What formula does the calculator use?
It multiplies sample rate in hertz by bit depth and channel count. The product is the raw PCM rate in bits per second.
Does the result include WAV or AIFF headers?
No. It measures the continuous PCM sample payload only. File headers, metadata, padding, and other container overhead are excluded.
Are kilobits and megabits decimal units?
Yes. One kilobit is 1,000 bits and one megabit is 1,000,000 bits. The MB/s result also uses 1,000,000 bytes per megabyte.
Can I calculate multichannel audio?
Yes. Enter the total number of independent channels. The rate grows linearly with the channel count.
Is this the bitrate of FLAC, MP3, AAC, or Opus?
No. Those formats compress audio. This calculator returns the uncompressed PCM payload rate before any lossless or lossy encoding.
What does the API request cost?
The API price is $0.002 per calculation. The browser version can run the same deterministic calculation locally.
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/hobby/music-pcm-bitrate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"sample_rate_hz":48000,"bit_depth":24,"channels":2}'const res = await fetch("https://api.kit.forhosting.com/hobby/music-pcm-bitrate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"sample_rate_hz": 48000,
"bit_depth": 24,
"channels": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/music-pcm-bitrate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"sample_rate_hz": 48000,
"bit_depth": 24,
"channels": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/music-pcm-bitrate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"sample_rate_hz":48000,"bit_depth":24,"channels":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"sample_rate_hz":48000,"bit_depth":24,"channels":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/music-pcm-bitrate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"sample_rate_hz": 48000,
"bit_depth": 24,
"channels": 2
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.music_pcm_bitrate",
"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. |