Skip to main content

Yelp’s Top 100 Places to Eat in Charlotte 2019



As this year comes to a close, and you mentally start to prepare for a New Year, we are here to help you wreck those resolutions before they even start by celebrating Yelpers’ favorite spots to grub across the Charlotte area.

This will not look like any other “best of” or listicle out there. We’re focusing on locally owned businesses. This list is solely pulled from Yelp data. That’s right, your reviews determined the best of the best. You’ll find fancy schmancy spots and a James Beard Semi-Finalist, but also gas station tacos and a one-man show hot dog street vendor. Strip mall gems, national award winners, cheap eats, and international fare; this is your ultimate guide to the Charlotte food scene.

Check out the full list below! Get social with us on TwitterFacebook, and Instagram using #YelpCLTTop100 when visiting these local eateries and be sure to share the love on Yelp. Also, check out our Best 40 New Places to Eat in Charlotte 2019 list.

Yelp’s Top 100 Places to Eat in Charlotte 2019

  1. Chili Man (Uptown) 
  2. The Tasty Bowl Subs N Such (Steele Creek)
  3. Enat Ethiopian Restaurant (The Plaza)
  4. Abugida Ethiopian Cafe & Restaurant (Plaza Midwood)
  5. Hello Chicken (Pineville Matthews Rd)
  6. King Fish Poke (University)
  7. Umami PokéRito (Pineville Matthews Rd)
  8. Lucy’s Bake & Deli (Stallings)
  9. Kabab-Je Rotisserie & Grille (Matthews. Other locations: Stonecrest)
  10. Poboy’s Low Country Seafood Market (Freedom Dr)
  11. Little Village Grill (Uptown)
  12. Banh Mi Brothers (University)
  13. The Loyalist Market (Matthews)
  14. Webb Custom Kitchen (Gastonia)
  15. The Dixie Pig (Rock Hill)
  16. Le’s Sandwiches & Cafe (North Tryon/Sugar Creek)
  17. Zablong Peculiar Pizza (Uptown)
  18. Euro Grill & Cafe (Plaza Midwood)
  19. Your GG’s Kitchen (Indian Trail)
  20. Capishe Real Italian Kitchen (Morehead St. Other locations: SouthPark)
  21. Ace No 3 (Belmont neighborhood)
  22. Royal Cafe & Creperie (Matthews)
  23. Kung Foo Noodle (Huntersville)
  24. Noda Bodega (NoDa) 
  25. Viva Chicken (Elizabeth. Other locations: Ballantyne, Park Rd, Waverly, Concord, Gastonia, Huntersville, Indian Trail, Indian Land)
  26. Viva Tequis (Gastonia)
  27. Somi Sushi (Matthews)
  28. Community Matters Cafe (Uptown)
  29. The Fig Tree Restaurant (Elizabeth)
  30. The Smoke Pit (Concord. Other locations: Gastonia, Monroe, Salisbury)
  31. Fresh Chef Kitchen (Cornelius. Other locations: Conover, Denver, Matthews, Mooresville, Providence Rd)
  32. Queen City Craft and Gourmet (Ballantyne)
  33. Crispy Banh Mi (South Blvd. Other locations: Shamrock Dr)
  34. Yafo Kitchen (Dilworth. Other locations: Plaza Midwood & SouthPark)
  35. Stone Table (Monroe)
  36. Thai Tamarind (Monroe)
  37. Tega Cay Gourmet Deli (Tega Cay)
  38. Tamales La Pasadita (The Plaza)
  39. Groovy Beast (Gastonia)
  40. Tea Fusion Cafe (University)
  41. Inizio Pizza Napoletana (Providence Commons. Other locations: Dilworth)
  42. Peace -N- Hominy Q (Belmont)
  43. 2 Gals Kitchen (Concord)
  44. Let’s Meat Kbbq (South End)
  45. Roaming Fork (Food Truck)
  46. Fin & Fino (Uptown)
  47. Good Food on Montford (Montford)
  48. Hazelnuts Creperie (Uptown. Other locations: 7th Street Public Market, Rea Rd, Indian Land)
  49. Nile Ethiopian Restaurant & Grocery (Eastland)
  50. Island Cuisine (Highland Creek)
  51. Anita’s Mexican Grill (Yorkmont Rd)
  52. Tacos El Regio (Eastland)
  53. Rock Store Bar-B-Q (Stallings)
  54. Peppervine (SouthPark)
  55. Jasmine Grill (South Blvd)
  56. Sheng Ramen (Ballantyne)
  57. Samvay’s Wings & Subs (Mount Holly)
  58. Omaggio Pizzeria (Midtown)
  59. Haberdish (NoDa)
  60. Midwood Smokehouse (Birkdale Village. Other locations: Ballantyne, Park Rd Shopping Center, Plaza Midwood)
  61. The Cellar at Duckworth’s (Uptown)
  62. Greco Fresh Grille (Blakeney Mall. Other locations: Matthews, Steele Creek, Wesley Chapel)
  63. The Common Market (Oakwold. Other locations: Plaza Midwood & South End)
  64. Toucan Louie’s (Rozzelles Ferry Rd)
  65. The Flipside Cafe (Fort Mill. Other locations: The Flipside Restaurant Rock Hill)
  66. Zafran Kabab Palace (Harrisburg)
  67. The Greek Grill (Fort Mill)
  68. Las Lupitas (N Tryon)
  69. Sileo’s New York (Indian Trail)
  70. The Workman’s Friend (Plaza Midwood)
  71. Banh Mi and Tea Company (Steele Creek)
  72. Pasta & Provisions (Park Rd. Other locations: Providence Rd & Wilmore)
  73. Rhino Market & Deli (Wesley Heights. Other locations: NoDa, Uptown)
  74. Kindred Restaurant (Davidson)
  75. Spindle City Cafe (Gastonia)
  76. Chatpatay (University. Other locations: Pineville)
  77. Cherubs Cafe (city of Belmont)
  78. Lam’s Kitchen (Matthews)
  79. Wasabi Sushi (Pineville)
  80. Saveeda’s American Bistro (Wesley Chapel)
  81. Papi Queso (Food Truck & Optimist Hall)
  82. Hot Dog Depot (Rock Hill)
  83. Dogwood Southern Table & Bar (SouthPark)
  84. Sabor Latin Street Grill (Elizabeth. Other locations: NoDa, Wesley Chapel, Indian Trail, Steele Creek, SouthPark, Ft Mill, Pineville, Huntersville, Davidson, South End, Mooresville, University, Uptown)
  85. Stockyard Restaurant (Rozzelles Ferry Rd)
  86. Athenian Grill (Indian Trail)
  87. Laurel Market (Myers Park)
  88. Local Dish (Ft Mill)
  89. Sandwich Max (Elizabeth)
  90. Las Meras Tortas (Huntersville)
  91. Pitstop Grill (Clover)
  92. Bar Marcel (SouthPark)
  93. Pizzeria Sapienza CLT (Uptown)
  94. Be’s Noodles & Banh Mi (Ballantyne)
  95. Jia Asian Fusion & Sushi Bar (Gastonia)
  96. Yummi Banh Mi Truck (Food Truck)
  97. The Cowfish Sushi Burger Bar (SouthPark)
  98. Sea Level NC (Uptown)
  99. Dilworth Tasting Room (Dilworth)
  100. VBGB Beer Hall and Garden (AvidXchange Music Factory)

Best Restaurants in Greater Charlotte According to Yelp Methodology: This is an all-time list of the best restaurants in the Charlotte area according to Yelp. We identified businesses in the restaurants category, then ranked those spots using a number of factors including the total volume and ratings of reviews. This list looked at businesses in the counties of Cabarrus, Gaston, Mecklenburg, Union and York. 

[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/yelps-top-100-places-to-eat-in-charlotte-2019/#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>
[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/yelps-top-100-places-to-eat-in-charlotte-2019/#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' >Email</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>