Error Correction vs Error Detection Only
Detecting that data got corrupted is cheap and easy. Fixing it without asking for a retransmit is the harder, more valuable trick. Which strategy you reach for depends on whether you can ask again — and most of the time you can't, or shouldn't.
The short answer
Error Correction over Error Detection Only for most cases. When a retransmit is impossible, expensive, or too slow — storage, space links, RAM, streaming — detection alone just tells you you're sunk.
- Pick Error Correction if cannot cheaply re-request the data: deep-space links, disk/SSD/RAM (ECC), QR codes, optical media, real-time audio/video, or any one-way channel where a retransmit would arrive too late or never. FEC pays its overhead back every time it saves a round trip
- Pick Error Detection Only if have a cheap, reliable back-channel and low latency — a TCP session over a clean LAN, a checksum on a file you can just re-download. Detect, drop, ask again. Why carry parity overhead you'll rarely cash in?
- Also consider: They aren't equals. Every correcting code detects; not every detecting code corrects. The real question is your retransmit cost. Cheap retransmit favors detection + ARQ; expensive or impossible retransmit forces correction. Hybrid ARQ exists precisely because the honest answer is usually 'both, tuned to the channel.'
— Nice Pick, opinionated tool recommendations
What they actually do
Error detection answers one question: did this data change in flight? A parity bit, a CRC, a checksum — they flag corruption and stop. The receiver knows something broke but can't undo it; its only move is to discard and request a retransmit. Error correction answers a harder question: what was the data supposed to be? Forward error correction (Hamming, Reed-Solomon, LDPC, turbo codes) embeds enough redundancy that the receiver reconstructs the original bits without asking the sender for anything. That extra redundancy is the whole tradeoff: detection is nearly free, correction costs bandwidth, compute, and code complexity. People frame these as rivals, but detection is a strict subset — every correcting code can detect. The honest comparison isn't 'which is better,' it's 'can you afford to ask again, or not?' Everything downstream flows from that single question about your channel.
Overhead and the cost of being wrong
Detection is the budget option and it shows. A 32-bit CRC adds four bytes to a packet of any size and catches essentially all real-world burst errors. Correction is greedy by comparison: to fix t errors you carry roughly 2t redundancy symbols, so a Reed-Solomon(255,223) burns 32 bytes of every 255 to repair 16. That's a 14% tax you pay on every block whether you needed it or not. Detection only pays when a retransmit fires. So the math is simple and unsentimental: multiply your error rate by your retransmit cost. Clean channel, cheap retransmit — detection wins on pure efficiency and you're being wasteful otherwise. Noisy channel, expensive retransmit, or no retransmit at all — correction's fixed tax is cheaper than the alternative of constant resends or unrecoverable loss. Anyone quoting one overhead number without the channel context is selling you half an answer.
Where each one is non-negotiable
Some channels make the choice for you. Deep-space probes use heavy FEC because a retransmit from Voyager is a multi-hour round trip — detection alone would mean staring at corruption you can never fix. ECC RAM and modern SSDs correct in hardware because there's no 'sender' to re-ask; the bit flipped and the data is the data. QR codes survive coffee stains and torn corners precisely because Reed-Solomon rebuilds the missing modules. Streaming audio and live video lean on FEC because by the time a retransmit arrives, the moment has played. Meanwhile, detection-plus-retransmit rules the friendly cases: TCP rides simple checksums and just resends over a reliable, low-latency path; Ethernet frames carry a CRC and drop on failure; a corrupted download gets re-fetched. The pattern is brutally consistent — no back-channel forces correction, a cheap back-channel rewards detection. Match the code to the channel, not to a textbook preference.
The decisive call
Stop treating these as equals on a shelf. Error correction is the more capable tool because it contains detection and then does the part that's actually hard — repair without a retransmit. If your channel is one-way, slow to round-trip, or has no sender to re-ask, detection alone is just a polite way of telling you you've lost data. That's why my pick is correction: it's the strategy that still works when conditions are bad, which is exactly when you needed help. The case for detection-only is real but narrow — a clean, low-latency link with a cheap back-channel, where carrying parity you'll almost never use is dead weight. Most engineers reach for detection by reflex because it's simpler and lighter, then get surprised when retransmits dominate their latency budget. Hybrid ARQ — detect, request, and FEC the resend — exists because the grown-up answer blends both. But if you force me to one: correct.
Quick Comparison
| Factor | Error Correction | Error Detection Only |
|---|---|---|
| Recovers data without retransmit | Yes — reconstructs original bits in place (Hamming, Reed-Solomon, LDPC) | No — can only flag corruption and discard |
| Overhead on a clean channel | Always-on redundancy tax (~14% for RS(255,223)) | Tiny — a 32-bit CRC is 4 bytes regardless of payload |
| Works on one-way / no-retransmit links | Essential — deep space, ECC RAM, SSD, QR, live streaming | Useless alone — there's no sender to re-ask |
| Implementation complexity | Heavy — finite-field math, decoders, real compute cost | Trivial — parity, checksum, or CRC lookup |
| Capability coverage | Superset — every correcting code also detects | Subset — detection is one feature of correction |
The Verdict
Use Error Correction if: You cannot cheaply re-request the data: deep-space links, disk/SSD/RAM (ECC), QR codes, optical media, real-time audio/video, or any one-way channel where a retransmit would arrive too late or never. FEC pays its overhead back every time it saves a round trip.
Use Error Detection Only if: You have a cheap, reliable back-channel and low latency — a TCP session over a clean LAN, a checksum on a file you can just re-download. Detect, drop, ask again. Why carry parity overhead you'll rarely cash in?
Consider: They aren't equals. Every correcting code detects; not every detecting code corrects. The real question is your retransmit cost. Cheap retransmit favors detection + ARQ; expensive or impossible retransmit forces correction. Hybrid ARQ exists precisely because the honest answer is usually 'both, tuned to the channel.'
Error Correction vs Error Detection Only: FAQ
Is Error Correction or Error Detection Only better?
Error Correction is the Nice Pick. When a retransmit is impossible, expensive, or too slow — storage, space links, RAM, streaming — detection alone just tells you you're sunk. Forward error correction fixes the bit in place and keeps moving. Detection is a feature of correction, not a competitor to it.
When should you use Error Correction?
You cannot cheaply re-request the data: deep-space links, disk/SSD/RAM (ECC), QR codes, optical media, real-time audio/video, or any one-way channel where a retransmit would arrive too late or never. FEC pays its overhead back every time it saves a round trip.
When should you use Error Detection Only?
You have a cheap, reliable back-channel and low latency — a TCP session over a clean LAN, a checksum on a file you can just re-download. Detect, drop, ask again. Why carry parity overhead you'll rarely cash in?
What's the main difference between Error Correction and Error Detection Only?
Detecting that data got corrupted is cheap and easy. Fixing it without asking for a retransmit is the harder, more valuable trick. Which strategy you reach for depends on whether you can ask again — and most of the time you can't, or shouldn't.
How do Error Correction and Error Detection Only compare on recovers data without retransmit?
Error Correction: Yes — reconstructs original bits in place (Hamming, Reed-Solomon, LDPC). Error Detection Only: No — can only flag corruption and discard. Error Correction wins here.
Are there alternatives to consider beyond Error Correction and Error Detection Only?
They aren't equals. Every correcting code detects; not every detecting code corrects. The real question is your retransmit cost. Cheap retransmit favors detection + ARQ; expensive or impossible retransmit forces correction. Hybrid ARQ exists precisely because the honest answer is usually 'both, tuned to the channel.'
When a retransmit is impossible, expensive, or too slow — storage, space links, RAM, streaming — detection alone just tells you you're sunk. Forward error correction fixes the bit in place and keeps moving. Detection is a feature of correction, not a competitor to it.
Related Comparisons
Disagree? nice@nicepick.dev