I bought a M for my son, which the sizing chart says is a 12-14, (my son generally wears a 10-12, but I ordered up in case it shrank). There must be something wrong with the sizing charts though because the shirt was very small, more like a 8-10 and too small for an average 10 year old.
I read previous reviews for the "Freeze" brand shirts which said that a "Small" is not a size 8, but more like a size 5. That's 100% correct in my opinion. I ordered a small for my 4 year old and it fits him perfectly. He usually wears anywhere from a size 4 to a size 6. I did the same for 3 other "Freeze" brand shirts and they all fit about the same. (The small is about a 5.) Shirt is a nice quality and really inexpensive. I'd recommend, just size up!! If a small is about a 5. A medium is probably about a 7. I'd think a large would be about a 10. And so on... I think it's worth it with it being under $5 and free two day shipping.