I did a guide for this a few years ago, but it's already kind of out of date, so let's look over the options again, especially since all the holiday sales are starting to happen. The main question when asking which DNA test/company to go with, is what are your reasons for testing? Instead of detailing each company, I'm going to answer the four main reasons people want to take a DNA test:
1. I'm a genealogy hobbyist and want to use DNA as an additional research tool.
AncestryDNA have the biggest database of testers, and because they are a genealogy website, they are the most likely to have DNA matches with family trees (which is the best way to get the most usage out of your DNA matches). Particularly, if you already subscribe there or have a tree there, it's easiest to have all your work in one place, including DNA. Even if you don't have an Ancestry.com subscription, you'll still benefit from testing at the biggest autosomal DNA database (you will be able to contact your DNA matches even without a subscription, and you can add a tree for free too).
Additionally, because AncestryDNA don't accept raw DNA data from other companies, but other companies (like MyHeritage and FamilyTreeDNA) do accept raw DNA data from AncestryDNA, it's ideal to test with AncestryDNA and then upload your raw DNA data to sites like MyHeritage and FamilyTreeDNA (they have free uploads, but there's a small fee to unlock your full results). You'll get the most out of your money this way, and have access to several databases.
MyHeritage are best for foreign DNA matches, particularly from certain places where MyHeritage is popular (for example, I have lots of DNA matches living in Germany, but only a few from Italy, despite having more recent ancestry from Italy). They also make it easy to find/sort by foreign matches, whereas other companies don't. You may choose to test with MyHeritage for this reason, especially if you already have a subscription/tree there, but again, be aware that you can upload an AncestryDNA test to MyHeritage, but not vice versa. (Right: a screenshot of my number of matches from various countries at MyHeritage).
23andMe are not ideal for genealogy, since they don't host shareable family trees, and they are not a genealogy website. They also cap your DNA match list at about 1,500 people (in comparison, most people at AncestryDNA get about 20,000+ DNA matches), unless you upgrade to a monthly subscription which still only expands it to 4,000 matches (the subscription also includes some additional health report benefits). Some people might cite 23andMe's inclusion of haplogroups in their reports as a reason to test there, but haplogroups generally aren't useful to recent genealogy. Sharing a haplogroup usually just means sharing a most recent common ancestor (on the patrilineal or matrilineal lines) from thousands of years ago, which long pre-dates recorded genealogy.
FamilyTreeDNA do allow you to upload a gedcom, but their database is small and since you can upload your raw DNA data, it makes more sense to test elsewhere and then upload to FTDNA if desired.
2. I want health reports.
23andMe are best for health results. They have the most useful of health reports, and while other companies like AncestryDNA and MyHeritage have added a few "traits" or health reports, they are very minimal and not as useful or extensive as 23andMe's. (Right: an example of 23andMe's Health Predisposition report - their healh reports also include Carrier Status, Wellness reports, Traits, etc).
Whatever company you test with, uploading to Promethease.org for a small fee will provide the most extensive health reports, though it is not super user friendly (and they do not offer testing, it's strictly an upload site). If you're willing to deal with the learning curve, testing at AncestryDNA and uploading to Promethease is a good option for those who want the test for both genealogy and health reasons. Otherwise, you'll have to prioritize one over the other because there's no testing company that's ideal for both.
Also be aware that if you have a specific health report in mind, you might want to consider a test more specific to it. For example, for reports on your genetic predisposition of cancer, I would recommend a more comprehensive test like Color.
3. I'm looking for an unknown biological parent/relative (like in the case of adoption).
First test with AncestryDNA, since they have the biggest database of testers and host family trees. Then upload your raw DNA data to MyHeritage and FamilyTreeDNA for small fees to unlock your full results. You can also upload to Gedmatch for free (but Gedmatch isn't a testing company, just a place to upload, so I won't mention them much in this article).
If your budget allows, also test at 23andMe (because like AncestryDNA, they do not accept uploads, so you have to test with them to be on their database). Although they aren't ideal for genealogy, which may make it difficult to make use of your DNA matches, when looking for unknown biological relatives, you want to maximize your chances of finding the closest DNA relative possible, and that means putting yourself on every database available.
If you are male, and looking for a biological father, or paternal grandfather, you should also consider taking a Y-DNA test at FamilyTreeDNA. Although more expensive than an autosomal DNA test, and there's no assurance that Y-DNA results will be useful because it depends on who else has tested, when it is useful, it can really help, especially in combination with your autosomal DNA matches. Because Y-DNA follows the patrilineal line, it's essentially linked to biological surnames. So excluding other NPEs (non-paternity events) or Y matches whose most recent common ancestor pre-dates the development of surnames, your Y matches surname should theoretically tell you your biological surname. That doesn't always happen, because again, it depends who has tested. But when it does, you can then take that surname and search your autosomal DNA matches trees for it, which should then point you to a most recent common ancestor.
4. I want to learn more about my ethnic ancestry!
I would strongly discourage from taking the test purely for the ethnicity percentages. I know they have great appeal, I know they seem like a quick, easy, and not too expensive way to learn more about your ancestral background, but the fact is, and I can't stress this enough, they are only estimates or interpretations of your DNA and are not particularly reliable
. Different companies will likely give you different results, and every company periodically updates their ethnicity reports, which generally changes them, sometimes quite drastically. There is no one company that has the most reliable ethnicity percentages for everyone - which one is more consistent with your personal family tree really depends on the individual, and that could always change with the company's next update.
That said, there are elements of the ethnicity report that can be more reliable. On a continental level (European vs Sub-Saharan vs East Asian vs Native American, etc), the percentages are generally much more reliable, so if you're of mixed race, the report might be enlightening. But the more specific the regional or sub-continental the percentage breakdown is, the more speculative it becomes, with only some exceptions in populations with high levels of endogamy (like Ashkenazi Jewish, or certain islander populations). So while it may be tempting to go with the company that offers the most percentage breakdown into specific nations, keep in mind that this will likely make it less reliable.
Ethnicity percentages are fun to explore, but you can't take them very literally. It's better to view them on a broader scale, covering bigger areas, but of course that's not what most people want. 23andMe's percentages have categories like "Broadly Northwest European" which covers a large area, and therefore is more reliable, but then people complain it's not specific enough.
You may notice I keep specifying ethnicity percentages, or percentage breakdown. That's because some companies offer sub-regional reports that don't include percentages because they are calculated a different way. At AncestryDNA, they are called Genetic Communities, and unlike the percentages, positive results in Genetic Communities tend to be very specific to small areas, and highly accurate. Not getting results in a GC doesn't mean you don't have ancestry there though, you generally need significant ancestry from a specific area to get results in a GC. When you do get GC results, you can be 99% sure you have ancestry from that area, you just won't know how much because there's no percentage. 23andMe have similar sub-regional results with no percentages, but in my experience, they are not as reliable as AncestryDNA's Genetic Communities.
In short, here's my recommendations:
For genealogy - AncestryDNA
For foreign matches - MyHeritage (or test at AncestryDNA and upload to MyHeritage for the best value).
For health reports - 23andMe
For unknown biological family - AncestryDNA, plus uploading to other companies, and if budget allows, also testing at 23andMe.
For ethnicity - if this is your only reason for testing, please reconsider. If you really insist, then I'd recommend either AncestryDNA or 23andMe, for the same reasons I've detailed above: you can upload raw DNA data from AncestryDNA and 23andMe to MyHeritage and FamilyTreeDNA (for additional ethnicity results), but not vice versa. If your interests lean more towards health, go with 23andMe. If you think you may develop an interest in genealogy or family history at any point in the future, go with AncestryDNA.