Skip to main content

Top 25 places to eat in Charleston



Photo by Shauna M. on Yelp at Vicious Biscuit

Yelp’s Top 25 Places to Eat is a list unlike any other “best of” out there. Sure, you’ll see your obvious local favorites on the list, but it’s also chock full of hidden gems and off-the-beaten-path joints like Taco Kitchen tucked away off of Savannah Highway in West Ashley. From fine dining to shawarma food trucks — find them all in Yelp’s Top 25 Places to Eat in Charleston.

Did your favorite restaurant make it into the top 25? Let us know on Twitter and Instagram. Remember, we only know how good a spot is if you take the time to review it. So share your thoughts on Yelp, and maybe your favorites will be on next year’s list! Plus, we’re hosting a handful of free events and promos at some of the top places on our list. To get in on the fun, RSVP to one or all of the events on our landing page!

Topping this year’s best 25 list is Myles and Jun Yakitori, a Japanese Char Grill with delicious Yakitori, small plates, and Japanese classics such as Hibachi. It is also known for its welcoming and lovable owners, Mama Myles and Jun. They will always remember you and if you’re lucky, Mama Myles may even sing you a song!

Pro tip: You’re going to want to make a note of these spots, so we made it easy for you. For great businesses at your fingertips, get the Top 25 to-go. Follow this collection on Yelp.

1. Myles and Jun Yakitori (Summerville, SC)

Photo by Kara E on Yelp

Cuisine: Japanese

Known for: Yakitori (Japanese BBQ Skewers), Crispy Pork Belly, their lovable owners

Yelpers say: “Sangria is a must, the flavor is ever changing with a variety of fresh fruit daily… you won’t be disappointed. There has not been a dish we haven’t enjoyed. Grab a few skewers for an appetizer, the beef tongue or beef heart are great as well as the Kawa (fried chicken skin), it’s like a hot pork rind but much better… There are very few places you go where the owners know you by name and treat you like family.”

2. Hall’s Chophouse (Downtown CHS, SC)

Photo by Pappy H. on Yelp

Cuisine: Steakhouse

Known for: Steak, Lobster Tails, Oysters Rockefeller

Yelpers say: “The owner talks to all of the customers and personally shakes your hand when you come in, it’s truthfully so rare that businesses care as much as this one. Now besides the amazing servers, beyond spectacular service, and amazing environment the food is stellar. The steak is absolutely the best around the area. The shrimp and grits were delectable. The absolute showstopper is the lavender brioche French Toast with an espresso mascarpone on top and the best bacon I have ever had in my life.” – Jess S.

3.  Toni’s Detroit Style Pizza (Mount Pleasant, SC)

Photo by Corey W. on Yelp

Cuisine: Italian, pizza

Known for: Their thicker crust pizzas (Detroit style), affordable prices, and salads

Yelpers say: “A beautifully crisped margherita greeted me. It’s basically just extra tomatoes and basil. The best part is the way the cheese browns at the corners, but when you eat it fresh, the light, fluffy crust shines as well and the flavor mix is mesmerizing. In the entirely likely event that I someday visit Detroit, I can only hope to find a pizza this delicious.” – John B.

 4.  Jack Of Cups Saloon  (Folly Beach, SC)

Photo by Blake R. on Yelp

Cuisine: Globally inspired comfort food

Known for: Their changing menu, Sangria, and curry options

Yelpers say: “I will keep coming back until I’ve tried everything on the menu and then I’ll keep coming back to repeat! We got the Captain Crunch deviled eggs which were delicious. We also got the Indian nachos with the coconut curry and wowwee — delicious! So many unique flavors and satisfying… Then we ordered the espresso martinis, which come with mini powdered doughnuts on top! “ – Daniela Z.

5. 167 Raw Oyster Bar- Charleston (Downtown CHS, SC)

Photo by Andrew C. on Yelp

Cuisine: Seafood

Known for: Raw Bar, Lobster Roll, Fried Oysters, Tuna Burger

Yelpers say: “The vibe is hip, trendy, and you can’t help but get swept up in the energy of the restaurant. The staff was phenomenal, offering great suggestions and helping us get out of our comfort zone. As busy as it was (and it was nuts) we never wanted for anything. The oysters were on point with the freshness. We tried three different varieties, along with the V-10 oyster shooter (you HAVE to try this.) The lobster roll was divine, the local farm salad was gorgeous, and the ceviche, forget about it…we were fighting over it. The flavors were so developed and it was just delicious.” – Annemarie B.

6.  Sena Cafe (Mount Pleasant, SC)

Photo by Teresa F. on Yelp

Cuisine: Cafe, bakery, breakfast & brunch

Known for: Lobster roll, breakfast sandwiches, pastries, and desserts

Yelpers say: “We tried the German chocolate cake, mascarpone, strawberry shortcake, and several pie slices and they were all so good I couldn’t choose a favorite. Their breakfast sandwich croissants are buttery, flaky, cheesy and oh so good. We loved their coffee drinks as well; they’re strong! We spoke to the baker, and he was such a kind man who has an inspiring passion for making tasty desserts.” – Harry W.

7. The Pickled Palate (Mount Pleasant, SC)

Photo by Julie D. on Yelp

Cuisine: American with Italian style paninis 

Known for: Italian paninis, wine and beer selection, their garden atmosphere, soups

Yelpers say: “The paninis are SO good. We got the Turkey Brie and the Italian and both meals were so delicious. Like some of the best paninis I’ve had… There’s so much greenery around and it’s mostly outdoor seating with a little inside. It’s super super cute and photogenic. I highly recommend the scene for a fun lunch, a girls date out, or a casual date! Overall a wonderful experience and I’d love to go back and try the other paninis too!” – Alexis P.

8. Bistro A Vin (Downtown CHS, SC)

Photo by the business owner on Yelp

Cuisine: French

Known for: Wine, Charcuterie boards

Yelpers say: “This wine bar is phenomenal. All of the staff is extremely friendly and very knowledgeable. Conversations were great. We got a bottle of sparkling wine and a Charcuterie Board with Rust Belt Saucisson (meat) and P’tit Basque (cheese). The inside is very elegant and inviting, and the patio is so cute. Great scenery. We had a fantastic time and everything was delicious!” – Ali D.

9. Lewis Barbecue (Downtown CHS, SC)

Photo by Angelica H. on Yelp

Cuisine: Central Texas style Barbecue

Known for: Brisket, “Hot Guts”, Pulled pork, Ribs

Yelpers say: “ Absolutely. Love. This. Space. Great indoor and even better outdoor space. Food is so tender, like fall off the bone. If that isn’t the goal when eating delicious BBQ, what is right? I have been here multiple times and each time I am so happy as are the people I bring. Perfect for any group size and for kiddos. The staff here are always so nice and helpful. The Green Hatch Chile is a must, even if you are thinking nah, no… GET IT! We call the ribs “Meat Candy” because it is so good and serves as the perfect dessert! All the sides are great but our faves are the mac & cheese and green chile corn pudding.” – Anna L.

10. Sorghum and Salt (Downtown CHS, SC) 

Photo by Chris H. on Yelp

Cuisine: American

Known for: Tapas, seasonal ingredients, changing menu, trendy setting

Yelpers say: “This charming little place has big flavor. I cannot say enough how happy I was to stumble on to this gem serving up dishes that impressed my taste buds in a way fussier restaurants tend to miss out on. The atmosphere is casual and perfect for a quiet dinner for two or six. Whether you’re celebrating or just out for a bite to eat, this place is special.” – Angela F.

11. The CODfather Proper Fish & Chips (North Charleston, SC)

12. Gnome Cafe (Downtown CHS, SC)

13. The Harbinger Cafe and Bakery (Downtown CHS, SC)

14.  Taco Kitchen (West Ashley, SC)

15. Vicious Biscuit (Mount Pleasant, SC)

16. R Kitchen (Cannonborough, Charleston, SC)

17. Ra Coffee Company (Goose Creek, SC)

18. Jackrabbit Filly (North Charleston, SC)

19. Wild Olive (Johns Island, SC)

20. Galpao Gaucho Brazilian Steakhouse (French Quarter, Downtown Charleston) 

21. The Grit Counter (Mount Pleasant, SC)

22. Dashi (North Charleston, SC)

23. Stella’s (Downtown CHS, SC)

24. Boxcar Betty’s (West Ashley, SC)

25. Edison James Island (James Island, SC)

Top Places to Eat in Charleston Methodology: This is an all-time list of the Top Places to Eat in the Charleston area according to Yelp. We identified businesses in the restaurant category on Yelp, then ranked those spots using a number of factors, including the total volume and ratings of reviews. This list looked at businesses in and around the Charleston area. All businesses were marked open on Yelp as of July 1st, 2022. When available, all businesses on this list have a passing health score as of July 1st, 2022.

[gravityform id="4" title="false" ajax="true"]
<script type="text/javascript">var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,initializeOnLoaded:function(o){gform.domLoaded&&gform.scriptsLoaded?o():!gform.domLoaded&&gform.scriptsLoaded?window.addEventListener("DOMContentLoaded",o):document.addEventListener("gform_main_scripts_loaded",o)},hooks:{action:{},filter:{}},addAction:function(o,n,r,t){gform.addHook("action",o,n,r,t)},addFilter:function(o,n,r,t){gform.addHook("filter",o,n,r,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,n){gform.removeHook("action",o,n)},removeFilter:function(o,n,r){gform.removeHook("filter",o,n,r)},addHook:function(o,n,r,t,i){null==gform.hooks[o][n]&&(gform.hooks[o][n]=[]);var e=gform.hooks[o][n];null==i&&(i=n+"_"+e.length),gform.hooks[o][n].push({tag:i,callable:r,priority:t=null==t?10:t})},doHook:function(n,o,r){var t;if(r=Array.prototype.slice.call(r,1),null!=gform.hooks[n][o]&&((o=gform.hooks[n][o]).sort(function(o,n){return o.priority-n.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==n?t.apply(null,r):r[0]=t.apply(null,r)})),"filter"==n)return r[0]},removeHook:function(o,n,t,i){var r;null!=gform.hooks[o][n]&&(r=(r=gform.hooks[o][n]).filter(function(o,n,r){return!!(null!=i&&i!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][n]=r)}});</script> <div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_4' ><div id='gf_4' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <span class='gform_description'></span> </div><form data-form-name='Newsletter Signup Popup' method='post' enctype='multipart/form-data' target='gform_ajax_frame_4' id='gform_4' action='/community/top-25-places-to-eat-in-charleston/#gf_4' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below'><li id="field_4_1" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible gf-email" data-field-class="gf-email" data-js-reload="field_4_1"><label class='gfield_label screen-reader-text' for='input_4_1' >youremail@address.com</label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_4_1' type='email' value='' class='large' placeholder='youremail@address.com' aria-invalid="false" /> </div></li><li id="field_4_2" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_2"><label class='gfield_label' for='input_4_2' >Name</label><div class='ginput_container'><input name='input_2' id='input_4_2' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_2'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_4' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} jQuery("#gform_4").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=4&amp;title=&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsImE0YjFiMmUxY2IxMWVhYTljM2FhNzdkODk4NDUzZmY0Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_4' id='gform_ajax_frame_4' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script> gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}, 50);}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [4, current_page]);} );} ); </script>
[gravityform id="4" title="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_4' ><div id='gf_4' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <span class='gform_description'></span> </div><form data-form-name='Newsletter Signup Popup' method='post' enctype='multipart/form-data' target='gform_ajax_frame_4' id='gform_4' action='/community/top-25-places-to-eat-in-charleston/#gf_4' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below'><li id="field_4_1" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible gf-email" data-field-class="gf-email" data-js-reload="field_4_1"><label class='gfield_label screen-reader-text' for='input_4_1' >youremail@address.com</label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_4_1' type='email' value='' class='large' placeholder='youremail@address.com' aria-invalid="false" /> </div></li><li id="field_4_2" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_2"><label class='gfield_label' for='input_4_2' >Comments</label><div class='ginput_container'><input name='input_2' id='input_4_2' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_2'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_4' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} jQuery("#gform_4").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=4&amp;title=&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsImE0YjFiMmUxY2IxMWVhYTljM2FhNzdkODk4NDUzZmY0Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_4' id='gform_ajax_frame_4' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script> gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}, 50);}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [4, current_page]);} );} ); </script>