Skip to main content

Yelp’s 2018 Top 100 Places to Eat in Charlotte



As we get ready to welcome in a new year, let’s first take a moment to celebrate Yelpers’ favorite spots to get your grub on across the Charlotte area.

This list won’t look like any other “best of” or listicle out there. No one paid to be on this, it’s all based solely off Yelp data. That’s right, YOUR reviews determined the best of the best. This is a unique, wide range of food- everything from strip mall gems to food trucks, fancy pants spots to gas station tacos, international to cheap eats, national award winners and off the beaten path joints. Looking for the must-try eats in the Queen City? Find them all in Yelp’s 2018 Top 100 Places To Eat In Charlotte.

Methodology:  This is a list of the best places to eat in the Charlotte area according to Yelp. We identified businesses in the restaurants and food categories and places where one can eat a full meal, then ranked those spots using a number of factors including the total volume and ratings of reviews. This list looked at businesses in the cities of Charlotte, Cornelius, Davidson, Waxhaw, Matthews, Huntersville, Belmont, Concord, Rock Hill (SC), and Fort Mill (SC).

Check out the full list below! Get social with us on Twitter, Facebook, and Instagram using #YelpCLTTop100 when visiting these local eateries and be sure to write a review to add your feedback about any of these spots.

Yelp’s 2018 Top 100 Places to Eat in Charlotte

  1. Chili Man (Uptown) 
  2. The Tasty Bowl Subs N Such (Steele Creek)
  3. Abugida Ethiopian Cafe & Restaurant (Plaza Midwood)
  4. Kabab-Je Rotisserie & Grille (Matthews)
  5. Umami PokéRito (Pineville Matthews Rd)
  6. Poboy’s Low Country Seafood Market (Freedom Dr)
  7. King Fish Poke (University)
  8. Little Village Grill (Uptown)
  9. The Loyalist Market (Matthews)
  10. The Dixie Pig (Rock Hill. Other locations: Tega Cay)
  11. Le’s Sandwiches & Cafe (North Tryon/Sugar Creek)
  12. Noda Bodega (NoDa) 
  13. Aroy Thai Restaurant (Independence Blvd)
  14. Kung Foo Noodle (Huntersville)
  15. Zablong Peculiar Pizza (Uptown)
  16. Enat Ethiopian Restaurant (The Plaza)
  17. Toucan Louie’s (Rozzelles Ferry Rd)
  18. Banh Mi Brothers (University)
  19. Viva Chicken (Elizabeth. Other locations: Ballantyne, Park Rd, Waverly, Concord, Gastonia, Huntersville, Indian Trail & Indian Land)
  20. Royal Cafe & Creperie (Matthews)
  21. The Smoke Pit (Concord)
  22. Fresh Chef Kitchen (Cornelius. Other locations: Providence Rd, Mooresville, Matthews)
  23. Yafo Kitchen (SouthPark. Other locations: Plaza Midwood & Dilworth)
  24. Crispy Banh Mi (South Blvd. Other locations: Shamrock Dr)
  25. What The Fries (Food Truck)
  26. Euro Grill & Cafe (Plaza Midwood)
  27. The Fig Tree Restaurant (Elizabeth)
  28. Inizio Pizza Napoletana (Providence Commons. Other locations: Dilworth)
  29. Good Food on Montford (Montford)
  30. 2 Gals Kitchen (Concord)
  31. Jasmine Grill (South Blvd)
  32. Thai Tamarind (Matthews)
  33. Be’s Noodles & Banh Mi (Ballantyne)
  34. Roaming Fork (Food Truck)
  35. Let’s Meat (South End)
  36. Hazelnuts Creperie (Uptown. Other locations: 7th Street Public Market, Rea Rd, Indian Land)
  37. Peace -N- Hominy Q (Belmont)
  38. Pasta & Provisions (Park Rd. Other locations: Providence Rd & Wilmore)
  39. Tea Fusion Cafe (University)
  40. Greco Fresh Grille (Blakeney Mall. Other locations: Colony Place Mall & Wesley Chapel)
  41. Queen City Craft and Gourmet (Ballantyne)
  42. Deep Sea Seafood Market (Monroe Rd)
  43. Fin & Fino (Uptown)
  44. Aix en Provence (Providence Rd)
  45. Sabor Latin Street Grill (Elizabeth. Other locations: NoDa, Wesley Chapel, Indian Trail, Steele Creek, SouthPark, Ft Mill, Pineville, Huntersville, Davidson, South End)
  46. Omaggio Pizzeria (Midtown)
  47. The Pickled Peach (Davidson)
  48. Yaki Asia Fresh (Sardis Rd N)
  49. Orrman’s Cheese Shop (Uptown)
  50. Las Lupitas (N Tryon)
  51. The Corner Bar (Steele Creek)
  52. Anita’s Mexican Grill (Yorkmont Rd)
  53. The Cellar at Duckworth’s (Uptown)
  54. Alino Pizzeria (Concord. Other locations: Mooresville)
  55. Banh Mi and Tea Company (Steele Creek)
  56. Local Dish (Ft Mill)
  57. Tamales La Pasadita (The Plaza)
  58. Midwood Smokehouse (Plaza Midwood. Other locations: Ballantyne, Birkdale Village, Park Rd Shopping Center)
  59. Haberdish (NoDa)
  60. The Common Market (Plaza Midwood. Other locations: Oakwold & South End)
  61. Rhino Market & Deli (Wesley Heights. Other locations: Uptown)
  62. Papi Queso (Food Truck)
  63. Pho Quynh (Central Ave)
  64. Dogwood Southern Table & Bar (SouthPark)
  65. Yamazaru (South End)
  66. Siggy’s Good Food (Belmont neighborhood)
  67. Kindred Restaurant (Davidson)
  68. Fiesta Mexicana Grill (Concord)
  69. Nile Ethiopian Restaurant & Grocery (Eastland)
  70. VBGB Beer Hall and Garden (AvidXchange Music Factory)
  71. Living Kitchen (South End)
  72. Due Amici Pizza (Highland Creek)
  73. Sandwich Max (Elizabeth)
  74. La Shish Kabob (Eastland)
  75. Laurel Market (Myers Park)
  76. Alexander Michael’s (Uptown)
  77. The Cowfish Sushi Burger Bar (SouthPark)
  78. Bang Bang Burgers (Elizabeth)
  79. Crunch Bistro (Ballantyne. Other locations: Uptown)
  80. Sangam Indian Cuisine (Cornelius)
  81. Lebowski’s Neighborhood Grill (Dilworth)
  82. Lang Van Vietnamese (Eastland)
  83. AQUA e VINO (Providence Rd)
  84. TIN Kitchen (Food Truck)
  85. Antico Italian Restaurant (Huntersville)
  86. Seoul Poke Bowl (South Blvd)
  87. Tenders Fresh Food (Cornelius)
  88. Zeitouni Grill (Ballantyne)
  89. Brooks Sandwich House (NoDa)
  90. Maola’s Pizza and Restaurant (Cornelius)
  91. Dressler’s – Charlotte (Midtown)
  92. Taco Truck (Huntersville)
  93. Earl’s Grocery (Elizabeth)
  94. Soul Gastrolounge (Plaza Midwood)
  95. The Flipside Restaurant (Rock Hill)
  96. The Dumpling Lady (Food Truck)
  97. Taqueria Los Altos (Monroe Rd)
  98. The Bellè Grille (Matthews)
  99. Hot Dog Depot (Rock Hill)
  100. Cherubs Cafe (Belmont)
[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_chrome 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-2018-top-100-places-to-eat-in-charlotte/#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_chrome 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-2018-top-100-places-to-eat-in-charlotte/#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>