Definitely try Trunk Bay on St John. The ship will offer a trip, but you won't get as much time there as you would like. You can get a water taxi from two different places and a taxi on St John to the park. We always go as early as possible, then start back around 2 or 3 depending on ship departure. Email me if you want more details. Jeri
100% agreement. St. John is tops. Either hop the ferry on your own or sign up for one of your ship's sail/snorkel excursions. Trunk Bay can become very crowded with fellow cruise passengers. Cinnamon Bay, Waterlemon Cay and Maho Bay are also great places to snorkel on St. John.
Have a great time and let us know how you like your cruise.
You can snorkel at Labadee(only so-so), but, as the rest of the replies indicate, you should go to St. Johns. If you want to maximize your time snorkelling and your ship gets into St. Thomas early enough, get yourself to downtown Charlotte Amalie and get the first ferry over to St. Johns. It leaves PROMPTLY at 9am and costs $7 per person each way. If you want to work off breakfast, walk to the ferry--it will take a little less than half an hour and saves you about $3 each. It will cost you $3 per person to get to Trunk Bay and most of the beaches along that part of the coastline and same to get back to Cruz Bay. This is the best way to avoid the crowds from the cruise ships--you'll get there before they do and you'll be ready to leave when the hordes arrive! If memory serves, ferries back to downtown Charlotte are at 1:15, 2:15 and 3:45. Allow enough time to get back to the ship so it doesn't leave without you!