Does SpinRite do what it claims to do? [closed]

I've had a reasonably good experience with SpinRite, but I think it's highly overrated. In fact, it might just be too clever for its own good. There are free solutions which work just as well (actually, the free ones might work even better).

We had a 200 GB NTFS drive that suddenly failed catastrophically. This was supposed to be the "shared" drive on which people just dumped stuff temporarily, but it ended up turning into a huge data repository that had miscellaneous backups, as well as a bunch of files that nobody bothered to back up anywhere. When the drive died, we couldn't get it to mount, no matter how many times we ran chkdsk or other tools.

In the end, we purchased and ran SpinRite...which continued to run for more than 1 month. Every time it hit a bad cluster, it spent hours trying to recover data from it. Again, it ran nonstop for more than a month trying to recover data from a defective 200 GB drive. (In SpinRite's defense, it can scan a drive in just a few hours if there are no physical defects.) SpinRite was eventually able to recover all our files, although many of the larger ones turned out to be corrupt anyway. SpinRite also made the drive mountable again. So I'd definitely say it did something.

However, despite the fact that it worked, I don't know if it helped any more than just booting off a Linux CD and running dd to copy the entire drive to a file. There's something to be said for not running a dying disk for an entire month, as it's dying! Physical defects seem to have a habit of spreading. It wouldn't surprise me if the disk degraded even further while SpinRite was running. Personally, I'd rather get the data off the disk as quickly as possible, make several backup images, and try to repair the files offline.

We've had to recover other data recently, and dd has done a great job. You can tell it to copy all the good data off the drive, then you can run it a few more times to go and try harder (i.e., use smaller block sizes) trying to pull data off the bad areas.

If you've got an hour or so to spare, I'd say it's worth your time to learn how to use dd instead of buying SpinRite: http://www.debianadmin.com/recover-data-from-a-dead-hard-drive-using-dd.html

Or go the slightly easier route and just download dd_rescue: http://www.garloff.de/kurt/linux/ddrescue

If you still want to run SpinRite, I'd highly recommend doing it AFTER you've copied all existing data off the drive, just in case running the drive for a longer period of time allows it to become further degraded.

Every time you get a new drive, you should boot off a Linux CD and run badblocks to check it for defects. You should also periodically check your drives for degradation. We've had at least 2 brand-new drives come with defects, and 3 or 4 more die within a couple of months (even though we did thorough tests before putting them into service).

Note that you need to run badblocks as root, or prefix the commands with "sudo " if you're booting off an Ubuntu live CD.

Brand-new drives (warning: destroys all data!):

badblocks -wvs /dev/sd#

or

badblocks -wvs /dev/hd#

In-use drives (read-only test):

badblocks -vs /dev/sd#

or

badblocks -vs /dev/hd#

Where # is the drive number in Linux. IDE drives usually are called /dev/hd#, and SCSI (and often SATA) drives are /dev/sd#.

More info on badblocks here: http://en.wikipedia.org/wiki/Badblocks

By the way, even though dd and badblocks are Linux programs, you can use them on NTFS drives, and you can even mount NTFS partitions in Linux, regardless of whether you're using MBR partitions, dynamic disks, or GPT disks.

Steve's documentation discusses a lot of hypothetical problems that SpinRite theoretically could help with. For example: data fading away over time and needing to be "refreshed" by reading every block and writing it back to the disk again, or the notion that repeatedly repositioning the read head on either side of a block will eventually permit you to statistically divine the original data stored in that block. Logically, these things make sense, but I think they are just solutions to academic problems which may not actually arise in the real world. (At least, with hard disks--maybe Zip disks and such were more susceptible to data fading.) If Steve cited papers on the subjects, or if these techniques had been experimentally proven to be effective, then I would expect for there to be many open-source or commercially-available SpinRite clones. It would be well within the capabilities of an average script programmer to write a Python, Perl, or UNIX shell script that includes all of SpinRite's documented features.


Having written disk drive firmware in the past (starting back in the '80s), there's a lot of misconceptions here about what drive firmware does. I've also spent a lot of time on the GRC forums, but am not connected with SpinRite in any way other than as a user.

First, drive firmware has always recovered and remapped sectors since at least the '80s (I wrote firmware to do that back then). There's absolutely nothing new about this. When drives hit a problem sector, they do several retries on their own, but the number is limited because the drive is not allowed to go several seconds on one read command -- many operating systems get upset if the drive does not complete a command in well under a second. If the drive can recover the data, it will usually remap the sector automatically if it thinks the error is more than a one-time hiccup. Thus programs such as chkdsk or dd which simply read the disk drive will trigger this behavior just as well as SpinRite.

The real question is what happens when the drive firmware can't recover the sector data. What SpinRite will do that most other programs don't is to do thousands of rereads and reseeks to see if it can get the disk to read the data successfully one time. If this happens, SpinRite tells the drive to remap the sector and writes the recovered data to it. In my experience, multiple rereads and reseeks have a limited success rate, and as others have noted here, can result in using the remaining limited lifetime of a failing drive. Thus it's always a good idea to try using dd or chkdsk before trying SpinRite.

The problem is when the drive cannot recover the data no matter how many rereads and reseeks are tried. SpinRite reads the raw uncorrected data from the sector many times and does a statistical analysis of what it gets back to try and recover the actual data. It then tells the drive to remap the sector and writes the recovered data to it. This part of SpinRite is unique as far as I know, and it's a last ditch effort when everything else has failed. As a result, I have used SpinRite to recover data that no other program (dd, manufacturer diagnostics, etc.) has been able to. But when you run SpinRite, you have to accept that the data recovered may only be partially correct. SpinRite also has the effect of mapping out all bad blocks, which can make the drive usable again. But simply writing to all bad sectors will do that as well, and this can be done with badblocks.

Of course, some drives are a lost cause that no program can save. If you really need the data, take the drive to a drive recovery house which will try replacing faulty parts of the drive and other techniques to get back as much data as possible. Be prepared to spend thousands of dollars. It's a very labor intensive process requiring expensive clean rooms and these places have to maintain inventories of replacement parts for every commercially released drive going back years.

As of this writing, Steve is working on version 7 of SpinRite which will include data recovery similar to dd_rescue as well as the sector recovery stuff he does now. Supposedly this will be done before he concentrates on individual bad sectors so that he won't use up the life of a dying drive on recovering just one sector.


SpinRite was a great program in the era it was written, a long time ago. Back then, it would do black magic to recover drives that were seemingly toast, by being more persistent than the drive firmware itself was.

But here in 2009, it's worthless. Modern drives do complicated sector mapping and testing on their own, and SpinRite is way too old to know how to trigger those correctly on all the drives out there. What you should do instead is learn how to use smartmontools, probably via a Linux boot CD (since the main time you need them is when the drive is already toast).

My usual routine when a drive starts to go back is to back its data up using dd, run smartmontools to see what errors its reporting, trigger a self-test and check the errors again, and then launch into the manufacturer's recovery software to see if the problem can be corrected by it. The idea that SpinRite knows more about the drive than the interface provided by SMART and the manufacturer tools is at least ten years obsolete. Also, getting the information into the SMART logs helps if you need to RMA the drive as defective, something SpinRite doesn't help you with.

Note that the occasional reports you see that SpinRite "fixes" problems are coincidence. If you access a sector on a modern drive that is bad, the drive will often remap it for you from the spares kept around for that purpose. All SpinRite did was access the bad sector, it didn't actually repair anything. This is why you still get these anecdotal "it worked for me" reports related to it--the same thing would have been much better accomplished with a SMART scan.


I can tell you with certainty that this tool will recover data that other tools (such as ddrescue) will not. And therefore, it is worth using if your drive has failed. Spinrite has recovered a drive for me when all other tools have failed. However, it can only recover certain types of errors, and doesn't work every time.

That said, there are important cases where you should not even attempt to recover your disk with spinrite or any other software-based solution. That is, if your disk has failed for an unknown reason and the data on it is absolutely critical -- you should immediately unplug the disk and ship it directly to a professional repair shop (not geek squad or data doctors or other consumer shops) where they can disassemble it to find out and resolve the problem. These shops operate in a clean-room environment and have the tools to replace heads, motors, PCBs, and any other component that may have failed. They're not cheap -- on the order of $800 to $3000 (or more) for a single disk, but they're by far and away your best shot.

Most importantly, if there is physical damage within the enclosure, simply spinning up the drive can irreparably destroy your data, making any future recovery attempts futile. Spinrite cannot recover a disk that has damaged components. Spinning up the drive for any reason if there are loose pieces inside is incredibly destructive.

Also, and Spinrite does not work "non-destructively" -- that is, it remaps bad sectors after reading them, which can affect future recovery efforts. Therefore, if you want to attempt a software-based recovery, you should dump what you can using tools like ddrescue, and then use spinrite on the drive.