Regardless of what you're looking for, Miami has a beach for you.Photo by Sylvain Sonnet/Getty Images
Local News is Vital to Our Community
When you support our community-rooted newsroom, you enable all of us to be better informed, connected,and empowered during this important election year. Give now and help us raise$4,000 by June 7.
Support local journalism
$0
$4,000
$700
Yes, Miami has beaches, beaches, and more beaches. They come in the form of secluded keys, a thumpin' globally renowned stretch, and a windsurfing utopia. As South Florida gears up for another sizzling summer, odds are you'll want to take advantage of the beach in all its glorious forms.
Listed alphabetically, here are New Times' picks for the ten best beaches in Miami.
click to enlarge
Are you in Maine? Nope, you're still in South Florida.
Photo by Michael DeAngelis
Bill Baggs Cape Florida State Park
1200 S. Crandon Blvd., Key Biscayne786-582-2673
floridastateparks.org
Head to the southernmost tip of Key Biscayne for a landscape that feels more Maine than Miami. At the core of a Bill Baggs Cape Florida State Park adventure is a trek to the historic Cape Florida Lighthouse, which dates back to 1825. You can climb to the top of it for a truly unique vantage point. When thirst and hunger inevitably beckon, hit the Lighthouse Café or the Cleat, both nestled within the park. The latter, located at the tip of No Name Harbor, is stellar for sunsets. If you want a unique overnight adventure, you can dock your boat and camp in it for $20 a night. The entrance costs $8 per vehicle. Open daily 8 a.m. until sundown.
click to enlarge
Cool off at Crandon Park.
Photo by Chris Garcia / Greater Miami Convention and Visitors Bureau
Crandon Park
6747 Crandon Blvd., Key Biscayne305-365-2320
miamidade.gov
This much is clear: the waters at Crandon Park Beach are among the clearest in all of South Florida. You can thank its ban on floatation devices and an offshore sandbar for its pristine beauty. Aside from plopping it on the sandbar, there are eco-adventure experiences, cookout areas, and concession stands. For family fun, hit the amusem*nt center, open on weekends and holidays with a splash fountain, carousel, and beachfront playground. Entrance costs $5 per vehicle on weekdays and $7 on weekends. Open daily sunrise to sunset.
click to enlarge
Take it all off or keep it all on at Haulover.
Photo by Armando Rodriguez
Haulover Beach Park
10800 Collins Ave., Miami305-947-3525
miamidade.gov
Take it all off at the spot billed as the "top clothing-optional beach in the United States." That's right, the section of Haulover Beach Park (between lifeguard towers 12 and 16) is nude. Aside from all the human fun, dogs love this spot, too — between lifeguard towers 2 and 3 from 8 a.m. to 4 p.m., it's a total, on-leash dog playground. There is also an off-leash Bark Park area that's open from 8 a.m. to sunset. Entrance costs $7 per vehicle on weekdays and $10 on weekends. Open daily sunrise to sunset.
click to enlarge
Have a beach day with your best furry friend.
Photo courtesy of the Greater Miami Convention and Visitors Bureau
Hobie Island Beach Park
3501 Rickenbacker Cswy., Miami305-361-2833
Woof, woof, woof, woof! Translation? Fido loves this beach. With shallow, calm waters, fur babies can make a splash at this beach, located on the north side of Rickenbacker Causeway. There is some human fun to be had here, too, in the form of noshing on delicious arepas from its concession stands or embarking on a water sports or windsurfing journey from nearby Miami Watersports. Windsurfing is a way of life at this park — if you've ever wanted to learn, this is the spot to start practicing or snag a lesson. Monday through Thursday 6:30 a.m. to 8 p.m and Friday through Sunday 6:30 a.m. to 9 p.m.
click to enlarge
The city feels far away at the Historic Virginia Key Beach Park.
Photo by Jessica Gibbs
Historic Virginia Key Beach Park
4020 Virginia Beach Dr., Miami305-960-4600
virginiakeybeachpark.net
It's the site of several music festivals, including We Belong Here and GrassRoots Festival, but on a normal, quiet day, this is the spot for a tranquil reprieve with crystalline water. It's all within minutes of Brickell and just over the Rickenbacker Causeway. Its highlights include shaded pavilions, paddleboard, bike and kayak rentals, and coastal hammock trails. Come ready for some adventure with your dosage of paradise. Entrance is free Monday through Thursday and $10 per vehicle Friday through Sunday. Open daily 7 a.m. to sunset.
click to enlarge
Lummus Park in South Beach is a tourist destination for a reason.
Photo by Cris Ascunce/Greater Miami Convention and Visitors Bureau
Lummus Park Beach
Ocean Drive between Fourth and 14th streets, Miami Beachmiamibeachfl.gov
This is the park and beach most tourists dream of when Miami is mentioned. Just across Ocean Drive from this world-renowned beach, you'll find art deco buildings aplenty, buzzy hotels, and oft-raucous bars that jam late. On the beach portion itself is a winding walkway, outdoor gym, playground, and oodles of volleyball courts. For the LGBTQ crowd, hit 12th Street on the beach, where rainbow flags color each lifeguard station. Open daily sunrise to sunset.
click to enlarge
North Beach Oceanside Park continues to be a favorite among the locals.
Photo by Phillip Pessar/Flickr
North Beach Oceanside Park
Collins Avenue between 79th and 86th streets, Miami Beach305-861-3616
miamibeachfl.gov
Miami Beach may be in its address, but this spot is as chill as it gets, feeling worlds apart from the busier and crowded South Beach. Its features include a bike path, shaded playground areas, a dog park, and walking trails, making for a fun family and fur baby outing. There are barbecue grills and picnic pavilions if you're looking to host a barbecue or picnic. Open daily sunrise to sunset.
click to enlarge
Grab a kayak and explore Oleta River State Park.
Photo by Raul Rodriguez/Getty Images
Oleta River State Park Beach
3400 NE 163rd St., North Miami Beach305-919-1846
floridastateparks.org
The park is a big one — 1,043 acres — but there are plenty of quiet, cozy nooks for getting your serenity on. Among the favorite activities for groups and solo adventurers alike is a paddle or kayak through the park's mangrove trails or along its often-tranquil shore on Biscayne Bay. You can snag rentals at the Oleta River Outdoor Center, which costs $40 for two hours. Along the way, you're sure to see bird species galore and, if you're lucky, a friendly manatee or two. For an overnight stay, the park has cabin rentals. Entrance costs $6 per vehicle or $4 for single-occupant vehicles or motorcycles. Open daily 8 a.m. until sundown.
click to enlarge
At the tip of the barrier island, you'll find South Pointe Park and the nearby beach.
Photo by Walter Bibikow/Getty Images
South Pointe Park
1 Washington Ave., Miami Beach305-673-7779
miamibeachfl.gov
Saunter along extra-wide walkways and through a lush green park, and you'll arrive at this quaint beach. In addition to an ocean-themed water feature primed for the kiddos and a bark park for pups, the major highlight here is strolling along South Pointe Park's pier. From the end of it, enjoy unparalleled vistas of Fisher Island, Government Cut, and the seemingly endless Atlantic. Joe's Stone Crab and Carbone are within a few blocks when hunger calls. Open daily sunrise to sunset.
click to enlarge
Travel back in time at Surfside Beach.
Photo by Jessica Gibbs
Surfside Beach
Collins Avenue between 88th and 96th streets, Surfside305-864-0722
townofsurfsidefl.gov
Known as the "uptown beach town," friendliness always abounds in this retro-feeling area. Its beach is no exception. In addition to white sand bliss, Surfside is renowned for its offshore and on-the-bay fishing. If you're looking for a luxe staycation, opt for one of the best hotels in town, the Four Seasons Hotel at the Surf Club. For a snack, your options span Flanigan's to Backyard BBQ & Brew along Surfside's main drag. Open daily 7 a.m. to sundown.
') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } // const insertionBlockClass = `fdn-paragraph-insertion-block`; const styleElementHook = `fdn-paragraph-insertion-styles`; jQuery(element).addClass(insertionBlockClass); if (jQuery(`[${styleElementHook}]`).length === 0) { jQuery('div.fdn-content-body, div #storyBody').append('
') const paragraphLineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() const styleElement = jQuery(`
`); const styleText = ` div.fdn-content-body br+.${insertionBlockClass}:not([hidden]), div #storyBody br+.${insertionBlockClass}:not([hidden]) { margin-top: ${paragraphLineHeight*2}px; margin-bottom: ${paragraphLineHeight}px; } div.fdn-content-body br+.${insertionBlockClass}[hidden] > div:last-of-type, div #storyBody br+.${insertionBlockClass}[hidden] > div:last-of-type { margin-bottom: ${paragraphLineHeight*2}px; } ` styleElement.text(styleText); jQuery('head').append(styleElement); } // } } jQuery(element).insertBefore(this.paragraphEndNodes[index]); } else { console.warn('Foundation.ParagraphTool.insertElemenAt: invalid insertion index', index); } } this.insertElemenAtEnd = function (element) { if (this.paragraphEndNodes.length) { let lastNode = this.getNodeAtIndex(this.paragraphEndNodes.length -1); if (this.isDoubleBrParagraphBreak(lastNode) || this.isBrParagraphBreakBeforeBlockElement(lastNode)) { if (jQuery(element).get(0).tagName.match(/SCRIPT/i) !== null) { jQuery('
').insertAfter(this.paragraphEndNodes[index]); jQuery('
').insertAfter(this.paragraphEndNodes[index]); } else { jQuery('div.fdn-content-body, div #storyBody').append('
') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } } } } this.bodyContainer.append(element); } this.getNodeAtIndex = function (index) { return this.paragraphEndNodes[index]; } }
`); } var paragraphCount = myParagraphTool.getParagraphEndNodeCount(); // No need to insert if there aren't enough paragaphs if (paragraphCount >= parseInt(item.requiredCountToDisplay)) { // Matches specific paragraph insertion indexes if (item.insertPoint.match(/^\d+$/) !== null) { var insertIndex = parseInt(item.insertPoint) - 1; // Insert within content if (insertIndex < paragraphCount) { myParagraphTool.insertElemenAtIndex(componentElement, insertIndex); } // Append to the end if the insert point is beyond the paragraph count else { myParagraphTool.insertElemenAtEnd(componentElement) } } // Matches for 1/2, 1/4, 2/3, 5/6, etc else if (item.insertPoint.match(/^[1223456]\/[23456]$/) !== null) { var fractionMatch = new RegExp(/^([123456])(?:\/)([23456]$)/); var fractionPart = parseInt(item.insertPoint.match(fractionMatch)[1]); var fractionWhole = parseInt(item.insertPoint.match(fractionMatch)[2]); var fractionValue = fractionPart / fractionWhole; var fractionIndex = Math.floor(myParagraphTool.paragraphEndNodes.length * fractionValue) - 1; myParagraphTool.insertElemenAtIndex(componentElement, fractionIndex); } // Matches for every Nth insertion point else if (item.insertPoint.match(/^\d*th$/i) !== null) { var intervalIndex = parseInt(item.insertPoint.match(/^(\d*)th$/i)[1]); var startingIndex = parseInt(item.startingPoint) - 1; var insertionMax = parseInt(item.maxInsertions) || 100; var insertionCount = 0; for (var i = startingIndex; i < myParagraphTool.paragraphEndNodes.length && insertionCount < insertionMax; i++) { if ((i - startingIndex) % intervalIndex === 0) { let currentNode = myParagraphTool.getNodeAtIndex(i); const clonedComponent = componentElement.clone(); myParagraphTool.insertElemenAtIndex(clonedComponent, i); insertionCount++; } } } } }); Foundation.Content['19962853'].setupInlineComponents = function () { return true; }; if (typeof callback === 'function') { callback(); } }, 200); } Foundation.Content['19962853'].previewInsertionPoints = function () { var myParagraphTool = Foundation.Content['19962853'].paragraphTool myParagraphTool.paragraphEndNodes.each((index, item) => { const insertionPointPlaceholder = jQuery(`
`) myParagraphTool.insertElemenAtIndex(insertionPointPlaceholder, index); }); return 'Paragraph insertion placeholders applied.'; }