I need to replace the memory in my system and I'm not quite sure how to determine if the memory is ECC or Non-ECC. How do I determine this?
6 Answers
For Windows 7 you can run the following command in command prompt:
wmic MemoryChip get DataWidth,TotalWidth
If the TotalWidth value is larger than the DataWidth value you have ECC memory.
Example output:
//ECC Memory
DataWidth TotalWidth
64 72
//Non-ECC Memory
DataWidth TotalWidth
64 64
A better way to determine is via the following command:
wmic MemPhysical get MemoryErrorCorrection
This will return a code based on the type of memory installed:
| Value | Meaning |
|---|---|
| 0 (0x0) | Reserved |
| 1 (0x1) | Other |
| 2 (0x2) | Unknown |
| 3 (0x3) | None |
| 4 (0x4) | Parity |
| 5 (0x5) | Single-bit ECC |
| 6 (0x6) | Multi-bit ECC |
| 7 (0x7) | CRC |
- 5,693
- 26,529
For FreeBSD (and probably most Unix like platforms):
dmidecode -t 17
Example output:
# dmidecode 2.12
SMBIOS 2.5 present.
Handle 0x1100, DMI type 17, 28 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB
Form Factor: DIMM
Set: 1
Locator: DIMM1
Bank Locator: Not Specified
Type: DDR2
Type Detail: Synchronous
Speed: 667 MHz
Manufacturer: AD00000000000000
Serial Number: 00002062
Asset Tag: 010839
Part Number: HYMP125P72CP8-Y5
Rank: 2
The Total Width: 72 bits is the part you are looking for.
More information in detecting this in Linux can be found on our sister site Unix & Linux Stack Exchange.
More information on how error correcting code works can be found in this simple post where I showed how you could use extra bits to detect and correct errors. This is why we have DIMMs which are 64 bits wide (8 bytes of data wide) or 72 bits wide (64 data plus extra bits to store redundant information).
19.07.2022 - Minor update now that ECC DDR5 is out. DDR5 is not 64 bit normal or 64+8 for ECC. It instead has two 32 bit channels, and more bits are needed for ECC. So expect 80 bits for ECC on DDR5.
- 5,693
- 65,804
- 7
- 115
- 169
If you look at the physical memory module, ECC will usually have 9 (sometimes more) chips. Non-ECC will have only 8 (or rarely, 8x2=16).
(Image courtesy of Puget Systems)
- 95,412
inxi can do that:
# On this desktop PC non ECC-RAM modules are used, so it outputs `EC: None`:
$ sudo inxi -m -xxx
Memory: Array-1 capacity: 32 GB devices: 4 EC: None
Device-1: ChannelA-DIMM0 size: 4 GB speed: 1333 MHz type: DDR3 (Synchronous)
bus width: 64 bits manufacturer: Kingston part: KHX1600C9D3/4GX serial: B7ED5A53
This server has 16 GB ECC RAM:
$ sudo inxi -m -xxx
Memory:
RAM: total: 15.49 GiB used: 592.6 MiB (3.7%)
Array-1: capacity: 32 GiB slots: 2 EC: Multi-bit ECC max-module-size: 16 GiB note: est.
Device-1: PROC 1 DIMM 1 type: no module installed
Device-2: PROC 1 DIMM 2 type: DDR4 detail: synchronous unbuffered (unregistered) size: 16 GiB
speed: spec: 2666 MT/s actual: 2667 MT/s volts: 1.2 width (bits): data: 64 total: 72
manufacturer: HPE part-no: 879527-091 serial: N/A
- 1,182
On a Mac you can look in the System Information application to determine ECC status of the Computer and each RAM module.
/Applications/Utilities/System Information
Select Memory on the right pane, under the hardware section.
Then with the "Memory Slots" listing selected. The window below should show an ECC status.
See picture below:

Also as an FYI each RAM slot will have a Status field if there is a problem detected in a RAM module the status will be a value other than "OK"
- 1,382
You might also try a free app like Belarc. Gives a bunch more info about your system also...
I have used the software a few times. I have no affiliation with this software, but I do know that it is used by some universities.
I can not provide a screen shot of the results because it contains confidential data, but the web site should provide some examples. Its pretty straight forward (and fast), download the file, run it and the results are presented.
- 117