I use Rubyripper. It, like the others mentioned here, is a cdparanoia frontend, but it has a number of features that improve on the basic cdparanoia ripping # It has a GUI option for drive offset that it passes on to cdparanoia. (You have to look it up yourself, but the option is there.) # Edit in response to Dante127: Rubyripper does have a field in the settings where you can specify commandline parameters to pass on to cdparanoia # It uses full-track test-and-check. # If mismatches are found, it rerips the entire track (in order to get past drive cache — future versions might only rip multi-megabyte segments) until it hits the maximum number of times or until every 1000-byte chunk has been matched at least two times (although the number of required matches can be set higher). # It logs as it goes, listing the md5sum for the final WAV files. # At the end of the log, it lists suspicious positions so that you can listen to specific places where there might be errors and verify yourself whether or not any skipping is present. (In this respect, at least, it actually does out-do EAC.) (for more information, or if I've missed anything, check the link above) Like most ripper frontends, it also handles passing off the WAV files to the encoder. It has slots for FLAC, mp3, and Ogg Vorbis settings, but you can also leave the WAV files as-is or use other formats in the custom encoder slot. (If all else fails, just rip to lossless and transcode from there) Its tagging features are fairly rudimentary at best, so I usually take its cddb lookups as a base to work off of in other taggers. As for tagging, I usually use EasyTag, since I only upload FLAC and Vorbis. For mp3, however, EasyTag (and id3lib, which it uses) only supports id3v1 and id3v2.3, so I use it for its thoroughness and then edit the tags in Amarok (which uses Taglib) to convert the tags to id3v2.4 and unicode. Kid3 is another Taglib-based app, and it can even handle arbitrary tags, but its interface leaves a lot to be desired.