Thursday, August 01, 2013

Choosing a micro SD card for your phone

Three years ago I wrote an introductory article on choosing an SD card, with the emphasis on camera usage. Times have changed and so have applications. This time around, I want to focus on finding the best microSD memory card for your smart phone. Naturally you will want to examine brand name reliability, price, and performance. To determine which is the fastest card for your money you might read online reviews, manufacturers specifications, and examine closely the strange nomenclature ("Class10", "UHS-1", "SDXC") surrounding memory cards.

But this is misleading. Everything you know about memory card performance is wrong.

Let's start with the basics. A memory card is a solid state storage device to which you write data, and later read it back. What data? Ah, there's the rub. You might be taking photographs. Or shooting video. Or running Android apps directly from your extra storage. Each of these tasks uses disk space in a different way. But the problem is that manufacturers only define speed in one very particular manner. This says nothing about our other use cases.

Speed Class Designations

More than anything, manufacturers promote the speed class designations. Class 2, 4, 6, and 10 each indicate a speed in MB/s (megabytes per second), so the higher the number the better. These are actual measured results, which is temporarily reassuring. Unfortunately the manufacturer might well get their figures using interfaces that are non-standard or simply enhanced to boost their numbers. (SanDisk admits as much.) Does real-world usage match the manufacturer specs? Read on!

It is important to realise that these figures represent a non-fragmented sustained sequential write speed. In other words, the speed it takes to write out a single large file, without a break, on a newly-formatted and otherwise virgin card. In the real world this number only applies to activities like recording video. Indeed, when I shoot high bitrate video on my Panasonic camera I reformat the card each and every time, so that I might approach this maximum value.

But you are not going to be continuously reformatting on your phone. And likely your number one activity is not video. So these numbers are inapplicable to the task at hand.

More recently, two further classes have been established to further confuse. UHS-I and USH-II have maximum write speeds of 50 MB/s and 312 MB/s respectively. But these are not measured values, like those for the other classes. They are only theoretical values. And no phones have the interfaces to support them. Even if they did, there is absolutely no need for these sorts of transfer speeds. So these designations are rather meaningless. (Is a picture emerging?)

Capacity Designations

In passing I should mention the capacity designations, so you don't end up buying a card your phone cannot use. These are SD, SDHC, and SDXC. Confusingly, all are referred to as SD cards in casual conversation, since they are physically and electrically identical. But there are fundamental differences.

The original SD (Secure Digital) cards are available in capacities up to 2GB and formatted with FAT16. This file system does not support larger capacities and so SDHC (Secure Digital High Capacity) was developed to exploit FAT32 formatting. Such cards are the most commonly purchased as I write, in capacities from 4GB to 32GB.

Beyond this, there is SDXC (Secure Digital eXtended Capacity), supporting cards up to 2TB. You need a USB 3 bus on your computer to get the full use out of SDXC cards (though they are backwards compatible with USB 2). Likely your phone does not support this standard.

I should note that this discussion applies equally to SD cards and microSD cards. This second term designates the physically tiny form factor we can use in our Android (and other) phones. Otherwise they are the same.

A million twisty version numbers

SanDisk is the biggest and most popular manufacturer of memory cards. They have many variants on the market at the same time, so simply referring to them by common name (e.g. SanDisk Ultra 32GB Class 10) doesn't always properly distinguish between them. Beware any writer who does not specify the card they are reviewing by model number.

SanDisk's codes look like this: SDSDQUA-032G-U46A. Breaking it down, there are four segments: SDSD, QUA, 032G, U46A.

All of the codes have prefix "SDSD" which simple means it's an SD card. And all of them have a suffix indicating the retail packaging, namely:
A11 = US packaging
FFP = Amazon "Frustration Free Packaging"
U46 = EU packaging

Additionally, an "A" tacked on the end indicates that the package displays the Android logo. That's just marketing; the card is no different. (An opportunity lost, actually!)

Believe it or not, the remaining two parts of the code convey useful info.

The Q code is the class, with six common codes on the current market (many additional codes exist on historical items):
Q = Class 4
QY = Class 6
QU, QUA, QUI = Class 10 "Ultra" designation, for different market segments, e.g. A = Android, I = Imaging
QXP = Class 10 "Extreme Pro" designation

Finally, the G code indicates capacity, for example:
032G = 32GB

The word "Ultra" in the name adds no further information; it's just what they call certain Class 6 and 10 cards. "Mobile Ultra" is exactly the same. There is nothing particularly mobile about it.

Which brand?

Every manufacturer has cards that fail. The solution is to back up your data. Some brands, like SanDisk, are so popular they are plagued with counterfeiters. The solution is to never buy memory cards off eBay. Always purchase from a trusted source.

What about generic cards from web shops? Brands you've never heard of? Lexar, Patriot, PNY, Kingston, Team, Nokia, AData, and on and on? Yes, some might be very good. Some will not be. And hard data can be difficult to come by. Online user reviews will be full of people for whom a card failed, but this is no indicator of quality. Such complaints are statistically meaningless and only the manufacturers themselves have access to the hard data.

While I prefer to stick to the top makes, it's even better to see which brands come through in terms of real-world performance. We will soon see...

What size?

Android apps are quite small -- all of mine currently fit in half a GB. How much extra space you need will be dictated by your use of your phone. If you are taking a lot of video or recording and creating music, then you might need a thousand times more space than someone who simply stores SMS messages and the occasional snapshot.

But the size you buy mostly depends on market forces. High capacity cards come onto the market at premium prices but grow cheaper rapidly. Capacities that seemed insane a few years ago are now commonplace and inexpensive. Lower capacity cards might well be more expensive than they are worth. For example, as I write I can get a certain 8GB SanDisk card for €10.79, or pay €2.50 more for 16GB.

But these cards may not have the same performance, even if they are identical in all ways except capacity. And that leads us to the heart of the article.

Determining Performance

Marketing speak aside, how does one determine the performance of a memory card? Simple: Using disk benchmark software, like the highly-regarded CrystalDiskMark. Put the card in a card reader, set your parameters, and wait for the results. Users from all over the world do just that, compiling their results at forums like XDA Developers and Whirlpool.

These results are not free of variables, since not everyone has the same computer, interface, card reader, and so on. Thus, small variations in values should not be taken as meaningful. Nonetheless, the hope is that larger patterns will emerge from the aggregate data.

I have summarised results from these forums, appying additional filters for clarification. First, I have restricted myself to 16GB and 32GB capacities, based on current price points. If you are reading this even a few months into the future, I doubt 8GB cards will make any financial sense. On the other hand, you might think that 16GB is too much space in August of 2013, but when you upgrade your phone in a year or two, I bet you will be grateful you don't have to buy a new card.

Second, I have listed only write speeds, since it is writing data that puts a limit on device performance in almost all cases. An app can wait to read data, the only downside being a slight delay at it responds. But if an app cannot write data quickly enough, the function it is trying to execute might fail. A common example is burst shooting of still photos, or streaming of video.

Third, I have tried to report only on tests using large data runs (1GB), so that performance averages out over time. This was not always possible from the available reports. But I have removed outlier data that might otherwise mislead.

Fourth, I have been forced to include tests where the SanDisk model number was not reported. Annoying! But few people realise the importance of this information. (Hence this article, I suppose!) This might well mean that the same card type is reported on twice, in some cases.

Finally, I had to make a decision as to what tests to include. Here we come to the crux. First up is a table showing sequential write speeds (in MB/s). I've ranked the cards in order, sticking close to first tier brands. But I've included various card classes.
name                size  class    seq   model          note
------------------  ----  -----  -----   -------------  ----
Transcend Ultimate  16GB     10  21.27                  *
Samsung Pro UHS-1   32GB     10  15.84   MB-MGBGBA      
Transcend Extreme   32GB     10  15.66                   
SanDisk Ultra       16GB     10  12.56                  *
Transcend Ultimate  32GB     10  11.96                  *
Lexar               32GB     10  11.95                  * 
PNY                 32GB     10  11.66                  *
SanDisk Ultra       32GB     10  11.65                  *
Samsung             32GB     10  11.53                  *
Lexar               16GB      4  11.20                  *
SanDisk Ultra UHS-1 32GB     10  10.68                  *
Transcend           16GB      6  10.51                  
SanDisk Ultra       32GB     10   9.71   QUA-032G-U46A  
SanDisk Ultra HC-I  32GB     10   9.67   QUI-032G-A11    
SanDisk Ultra       32GB     10   9.57   QU-032G-U46A    
SanDisk Ultra       16GB      6   8.09                  *
SanDisk Ultra       32GB      6   8.05                  *
SanDisk             32GB      4   6.02                  
SanDisk             32GB      4   5.98                    1
SanDisk             32GB      2   5.77                  *
SanDisk             16GB      4   5.21   QM-016G-B35    
SanDisk             16GB      4   4.89                  * 2
SanDisk             16GB      2   3.44                  *
Source: XDA Developers, except * Whirlpool

1 average of 6 tests
2 average of 2 tests

We can compare these values to the claimed card Class. The results are encouraging. All the cards meet their Class designation, or at least come close. But manufacturers make additional claims in their literature, for many Class 10 cards claiming 30MB/s or higher rates. These cards do not support these optimistic claims.

Note that the "off-brands" do well here.

The REAL Performance Test

OK, enough setup. It's time to come to the surprising conclusion. We've just seen that sustained sequential write speeds are good across card manufacturers, supporting their Class claims, if not their other inflated marketing. Cards from the top of the chart would be ideally suited to continuous video recording.

But that's not what memory cards are used for in mobile phones. Instead we use them to store apps, plus the associated small databases like contact lists, SMS histories, and the like. We store music files, take photos, and so on. Many small read and write operations occur as applications and their data come into memory and leave again.

A much more meaningful measure of this performance is the "Random 4k (QD=1)" test from CrystalDiskMark. So let's rank those same cards using this benchmark.
name                size  class  rand   model       
------------------  ----  -----  ----   -------------
SanDisk             32GB      2  2.86                
Transcend Ultimate  32GB     10  1.99                
SanDisk Ultra       16GB      6  1.99                
SanDisk Ultra       32GB      6  1.78                
SanDisk Ultra       32GB     10  1.74                
SanDisk             16GB      4  1.71                
SanDisk Ultra       32GB     10  1.62   QU-032G-U46A 
SanDisk Ultra       16GB     10  1.60                
SanDisk Ultra       32GB     10  1.54   QUA-032G-U46A
SanDisk Ultra HC-I  32GB     10  1.47   QUI-032G-A11 
SanDisk             32GB      4  1.47                
SanDisk             16GB      4  1.43   QM-016G-B35  
SanDisk             32GB      4  1.33                
SanDisk             16GB      2  1.30                
Transcend Extreme   32GB     10  1.27                
Samsung             32GB     10  0.80                
SanDisk Ultra UHS-1 32GB     10  0.68                
Samsung Pro UHS-1   32GB     10  0.48   MB-MGBGBA    
Transcend           16GB      6  0.03                
Transcend Ultimate  16GB     10  0.01                
Lexar               32GB     10  0.01                 
PNY                 32GB     10  0.01                
Lexar               16GB      4  0.01                

Wow, there is a huge difference between cards on the top and those on the bottom. Many cards simply fall apart on this test. And notice how Lexar, PNY, and Samsung end up at the bottom. This is solid justification for sticking to the top two brands. To be honest, I was quite surprised with the poorer ratings for Samsung, who have a good name in the industry.

Perhaps surprisingly, a Class 2 card comes out on top! But this makes sense; Class only tells us about sequential performance. We need to forget all about Class for our current application. Yes, that's the moral of the story.

But the top 15 cards do pretty well. Any of them would be suitable.

So, how to choose among them? Take the top 15 cards on the random access test, and remove those that are nearer the bottom on the sequential test. This chart results:
name                size  class    seq   rand
------------------  ----  -----  -----   ----
SanDisk             32GB      2   5.77   2.86
SanDisk Ultra       16GB      6   8.09   1.99
Transcend Ultimate  32GB     10  11.96   1.99
SanDisk Ultra       32GB      6   8.05   1.78
SanDisk Ultra       32GB     10  11.65   1.74
SanDisk Ultra       32GB     10   9.57   1.62
SanDisk Ultra       16GB     10  12.56   1.60
Transcend Extreme   32GB     10  15.66   1.27

Availability is the next factor. In the continuous rage to upgrade specs, Class 2 cards are no longer available. Neither are Class 6 cards except in sizes less than what we are considering (and the performance in those sizes is weaker in any case). This reduces our options by half.

Final Recommendations

In conclusion, I can recommended you consider the following microSD cards.

For 16GB: SanDisk Class 10.

For 32GB: SanDisk Class 10, Transcend Ultimate Class 10, or Transcend Extreme Class 10.

Price will be the remaining factor for those of you who need the larger capacity.



Anonymous said...

"Brands you've never heard of? Lexar, Patriot, Kingston," - really? come on...Kingston, Patriot and Lexar(Crucial) are leading memory manufacturers on par with SanDisk :)
nevertheless the SanDisk coding info is great - thank you!

robin said...

I didn't mean that *all* of those were brands you'd never heard of. But my wording was ambiguous. So fair catch! ;-)

Anonymous said...

thanks interesting read. Trying to work out diff between Transcend Premium 16GB Class 10 and Samsung MicroSDHS 16GB UHS-1

robin said...

Though in general Transcend as a brand seems to trump Samsung, one would have to find speed tests for those two exact cards, in order to be sure.

Mariyam Nissar said...

Thanks for the wonderful article. it was very enlightening. i have the Transcend Premium 32 Gb Class 10 MicroSD card -- but can't find any Benchmark data for it. i'm planning to install Android on my HTC HD2 as NativeSD using this card and if the Random 4k for the card is low, i expect the installation to fail. do you think i should return it and get the Sandisk Ultra or Transcend Ultimate ?

robin said...

I can only suggest that you search on XDA Developers, Whirlpool, etc. to find specs for that exact card. Or simply try it! Cards today from major brands are likely to be "good enough" for most tasks.

Post a Comment