HomeArticlesInformation Theory & Coding

Channel Capacity: The Hard Ceiling Behind Every Wifi Speed Test

Why C = B·log2(1+SNR) rewards more bandwidth far more than more power, and what the noisy-channel coding theorem actually promises.

mysimulator teamUpdated June 2026≈ 8 min read▶ Open the simulation

A hard ceiling on any communication link

Every real communication channel — a wifi radio link, a copper phone line, an optical fibre — has a physical limit on how much information it can carry reliably, no matter how sophisticated the modulation scheme on top of it. Claude Shannon proved in 1948 that this limit is a single number, the channel capacity C, and derived it jointly with Ralph Hartley's earlier bandwidth-based reasoning, which is why the result carries both their names.

C  =  B * log2( 1 + SNR )

C   = channel capacity, in bits per second
B   = bandwidth, in hertz
SNR = signal-to-noise power ratio (a plain ratio, not decibels, inside this formula)
live demo · capacity responding live to bandwidth and SNR● LIVE

What the formula is actually saying

Bandwidth B sets how many independent symbols per second the channel can physically carry — the Nyquist rate says a channel of bandwidth B supports at most 2B independent samples per second without inter-symbol interference. The log2(1 + SNR) term is what turns those raw samples into bits: it is literally the entropy of the number of distinguishable amplitude levels the noise floor allows you to pack into each sample. A high SNR means the receiver can reliably tell many different signal levels apart per symbol, so each symbol carries more bits; a low SNR collapses the number of distinguishable levels toward one, and capacity toward zero.

Two limits make the shape of the curve intuitive. As SNR grows without bound, capacity grows only logarithmically — doubling your transmit power does not double your data rate, it barely nudges it, because log2(1+SNR) flattens out. As bandwidth grows without bound while power stays fixed, capacity does not diverge to infinity either — it saturates at a finite value, because spreading the same fixed power across ever more bandwidth thins the SNR in each slice proportionally, and the two effects cancel into a fixed asymptote (roughly 1.44 * P / N0 bits/sec, where N0 is the noise power spectral density — the fundamental Shannon-Hartley bandwidth-power trade-off).

Worked numbers, so the formula stops being abstract

SNR of 20 dB  =  ratio of 100   (dB → ratio: ratio = 10^(dB/10))
SNR of 30 dB  =  ratio of 1000
SNR of 40 dB  =  ratio of 10000

B = 20 MHz (typical 2.4 GHz wifi channel), SNR = 30 dB (ratio 1000):
C = 20,000,000 * log2(1 + 1000)
  = 20,000,000 * log2(1001)
  ≈ 20,000,000 * 9.97
  ≈ 199 Mbit/s          (an idealized ceiling — real 802.11 throughput is lower
                          due to protocol overhead, coding rate margins, and
                          imperfect channel estimation)

This is exactly why doubling your wifi's transmit power barely moves the number on a speed test, while switching from a 20 MHz channel to a 40 MHz or 80 MHz channel (doubling or quadrupling B directly, which sits outside the logarithm) has a much larger, roughly proportional effect on the ceiling. Engineers chasing more throughput reach for more bandwidth long before they reach for more power, precisely because of where each variable sits in the formula.

What the theorem promises, and what it deliberately does not

The noisy-channel coding theorem is the sharpest part of Shannon's result and the part people most often misstate. It says: for any rate R strictly below capacity C, there exists some encoding scheme that transmits at rate R with an error probability that can be made arbitrarily close to zero — not exactly zero, arbitrarily close, by using longer and longer codewords. And symmetrically, for any rate R above C, no encoding scheme can achieve reliable communication — the error probability is bounded away from zero no matter how clever the code is. Crucially, Shannon's proof is an existence proof: it establishes that a good code exists (via a random-coding argument averaged over an ensemble of codes) without constructing one, and it took the coding-theory community roughly sixty years — from 1948 to the arrival of Turbo codes in 1993 and LDPC codes' rediscovery in the 1990s-2000s, culminating in Arıkan's polar codes in 2008 — to find practical, decodable codes that approach C closely at real block lengths.

What sits between raw bits and a message you can trust

C measures raw information capacity, but a real link needs error-correcting codes to actually approach that ceiling reliably rather than just quickly. The trade is rate versus redundancy: a code that adds more parity information per data bit (a lower code rate) can correct more errors but carries proportionally less actual data per transmitted bit, pulling the achievable effective rate further below C. Modern codes — Turbo, LDPC, polar — are prized precisely because they get within a fraction of a decibel of the Shannon limit at practical block lengths and decoding complexity, which is why 4G, 5G, satellite links, and Wi-Fi's higher-order modes all use one of these three families rather than the simpler block and convolutional codes of the 1970s-90s.

Practical systems also have to contend with SNR that is not fixed — fading, interference and distance all move it — which is why adaptive modulation and coding exists: a wifi or cellular radio continuously estimates its current SNR and steps between modulation schemes (BPSK, QPSK, 16-QAM, up through 1024-QAM on modern wifi) and code rates to always sit just under the current capacity ceiling, trading peak rate for reliability as conditions change, second by second.

Frequently asked questions

Why does doubling transmit power not double my internet speed?

Because SNR sits inside a logarithm in the Shannon-Hartley formula, C = B*log2(1+SNR). Doubling the signal power roughly doubles the SNR ratio, but log2 of a doubled number only adds about one extra bit per symbol, not a doubled data rate — capacity grows very slowly once SNR is already reasonably high, which is why bandwidth is usually the more effective lever.

Does Shannon's theorem guarantee zero errors are possible below capacity?

It guarantees error probability can be made arbitrarily close to zero, approaching it as you use longer and longer codewords, but not exactly zero in a finite transmission. It also guarantees the opposite direction just as firmly: above capacity, no code of any cleverness or length can drive the error probability to zero, no matter how sophisticated the encoding and decoding scheme.

Why did it take decades to build codes that approach the Shannon limit?

Shannon's 1948 proof is a random-coding existence argument — it shows that some code with the right properties must exist on average across an enormous ensemble of possible codes, but it gives no construction and no practical decoding algorithm. Turbo codes (1993), LDPC codes (rediscovered in the 1990s after their 1960s origin) and polar codes (2008) were the breakthroughs that finally combined near-capacity performance with decoding algorithms fast enough to run in real hardware.

Try it live

Everything above runs in your browser — open Channel Capacity and change the parameters while it is running. Nothing is installed, nothing is uploaded, the whole model lives in one tab.

▶ Open Channel Capacity simulation

What did you find?

Add reproduction steps (optional)