ECC, short for Error Correcting Code, is a technology that automatically detects and corrects data corruption during read and write process. Its primary role is to ensure the completeness and security of data throughout storage and transmission. While ECC is widely used in both NAND flash and RAM, this article focuses on its application in NAND flash memory.
What Causes Errors in NAND Storage?
All modern flash memory devices have a problem with data integrity, commonly known as “Bit Errors.” These occur when a stored bit flips or changes state, rendering the data unreadable. These errors arise from several sources:
- Device characteristics: Cell-to-cell interference, gradual charge leakage, and wear from a finite number of program/erase cycles all degrade reliability over time.
- Operational factors: Read disturb, program disturb, and sudden power loss can lead to incomplete or corrupted write operations.
- Environmental conditions: Extreme temperatures, high humidity, shock, and vibration can accelerate degradation or cause intermittent failures.
- Design limitations: High-density NAND (MLC, TLC, QLC) offers narrower voltage margins, making it more susceptible to errors.
ECC is the most efficient way to protect data and fix it in case of errors, so all flash controllers utilize built-in ECC coders/decoders.
How ECC Works?
The ECC principle is based on mathematical coding. During the write process, the controller calculates a unique checksum for each block of data and stores it it along with the data. When the data is read back, the controller recalculates the checksum and compares it with the original checksum. If they match, the data is intact; if they don’t, an error has occurred during storage or transmission. The controller then uses the ECC algorithm to pinpoint and correct correct these errors.
Types of ECC
Over the years, several ECC algorithms have been developed, with the most common in NAND flash being Hamming code, Reed-Solomon code, BCH code, and LDPC code.

Hamming Code
Named after its inventor Richard Hamming, this is one of the earliest ECC algorithms used in computer storage. It features a simple structure and fast processing speed, capable of detecting single-bit and double-bit errors, but can only correct single-bit errors. Because of its limited correction strength, Hamming code was mainly used in early SLC NAND and low-capacity embedded storage. Today, it’s rarely used in high-density NAND but can still be found in low-power, cost-sensitive microcontroller systems.
Reed-Solomon Code
Reed-Solomon can detect and correct multiple random symbol errors within a block, making it highly effective against burst errors—multiple sequential bits failing together. It has long been used in optical media, magnetic tapes, and satellite communications. In NAND flash, it was once common in early CompactFlash cards and industrial control systems with high interference resistance requirements. However, its relatively high computational complexity and latency have led to its replacement by more efficient algorithms like BCH and LDPC in modern high-speed NAND controllers.
BCH Code
BCH (Bose–Chaudhuri–Hocquenghem) codes are among the most widely used ECC algorithms in NAND flash memory. It can correct multiple random bit errors and offer adjustable correction strength by tuning polynomial parameters, striking a balance between performance and error resilience. With moderate computational demands, BCH is well-suited for applications that require both reliability and performance, such as automation systems, traffic monitoring, and industrial instrumentation.
LDPC Code
LDPC code, also known as Gallagher code, is an advanced method for detecting and correcting damaged or lost data bits by adding redundancy to the data. It can handle high error rates with relatively low decoding complexity, enabling it to correct more errors than traditional ECC methods like BCH. LDPC is widely used in applications ranging from wireless communications to flash memory storage.
Neomory industrial-grade NAND flash cards typically employ LDPC or a BCH+LDPC hybrid, paired with technologies such as Advanced Wear Leveling, Auto-Refresh, Read Disturb Management, and Bad Block Management. These features ensure high performance and data integrity even in extreme temperatures, humidity, and vibration.
For customers with specialized requirements, we offer ECC parameter customization to optimize lifespan and stability for specific applications. Contact Neomory For more details on our NAND flash storage solutionscontact.