Best Of 2022
- 2023
- 2022
- 2021
- 2020
- 2019
- 2018
- 2017
- 2016
- 2015
- 2014
- 2013
- 2012
- 2011
- 2010
- 2009
- 2008
- 2007
- 2006
- 2005
- 1997
- Drinking + Nightlife
- Local Notables
- Arts + Entertainment
- Food + Dining
- Services
- Attractions + Recreation
- City Life
- Health, Beauty + Wellness
- Local Music
- Shopping + Retail
- Best Of Orlando
- 2022
- Drinking + Nightlife
- Readers' Choice
1st: Southern Nights, facebook.com/southernnightsorlando
2nd: Kush Ultra Lounge, instagram.com/kushultralounge
3rd: Ember, emberorlando.com
Previous Winners
- 2023Ember
- 2016Kush Ultra Lounge and Hookah Bar
Local Legends: Keith & Romi Mawardi
The Mawardi sibs and their super squad, Team Market Group, are faster than the Flash when it comes to creating new scenes. With Celine, Tier, Mathers Social Gathering, the Robinson co*cktail Room, the Wellborn boutique hotel, Plantees Burgers and soon — we're waiting and hoping — a reinvigorated Colonial Lanes to their names, they live up to their motto: Together Everyone Achieves More.
- Best Of Orlando
- 2022
- Drinking + Nightlife
- Readers' Choice
1st: Will's Pub, willspub.org
2nd: Tori Tori, toritoripub.com
3rd: The Guesthouse, instagram.com/the_guesthouse
- Best Of Orlando
- 2022
- Drinking + Nightlife
- Readers' Choice
1st: Santiago's Bodega, santiagosbodega.com
2nd: Kiwi's Pub & Grill, kiwispub.com
3rd: Tibby's New Orleans Kitchen, tibbys.com
- Best Of Orlando
- 2022
- Drinking + Nightlife
- Readers' Choice
Photo by Matt Keller Lehman
1st: The Wellborn, thewellbornorlando.com
A perfect spot for a sociable night out with friends, playing cards and sipping a Delaney Park Swizzle while sampling the Wellborn's new menu of "Floribbean" small plates. With a myriad of seating choices spread across a brick pavement, this enchanted patio fitted with mirrors hidden amongst hanging orchids and low-lying philodendron and ferns makes large groups or intimate outings equally comfortable.
2nd: Tuffy's Bottle Shop/Lounge/Music Box, tuffyscider.com
3rd: Eden Bar, enzian.org
- Best Of Orlando
- 2022
- Drinking + Nightlife
- Readers' Choice
Photo by Matt Keller Lehman
1st: Tori Tori, toritoripub.com
2nd: Mathers Social Gathering, mathersorlando.com
3rd: The Commission Beer Chamber, facebook.com/thecommissionbeerchamber
- Best Of Orlando
- 2022
- Drinking + Nightlife
- Readers' Choice
1st: The Commission Beer Chamber, facebook.com/thecommissionbeerchamber
2nd: Will's Pub, willspub.org
3rd: Hourglass Brewing, hourglassbrewing.com
- Best Of Orlando
- 2022
- Drinking + Nightlife
- Readers' Choice
1st: Tabitha Bonner, Corona Cigar Co. & Diamond Crown Lounge, coronacigar.com
2nd: Jenn Armas, Bowigens Beer Co., bowigens.com
3rd: Mark Cavallini, Cavo's Bar & Kitchen, cavosbar.com
- Best Of Orlando
- 2022
- Drinking + Nightlife
- Readers' Choice
1st: Celery City Craft, celerycitycraft.com
2nd: GB Bottle Shop & Tasting Bar, gbbottleshop.com
3rd: Hourglass Brewing, hourglassbrewing.com
- Best Of Orlando
- 2022
- Drinking + Nightlife
- Readers' Choice
1st: The Hammered Lamb, thehammeredlamb.com
Located across from Lake Ivanhoe, The Hammered Lamb lays out arguably Orlando's most extensive Bloody Mary bar. Try not to be overwhelmed when you're faced with the choice between good old Tito's or a vodka infused with either herbs, peppers, pickles, citrus or bacon, plus the roughly 75 items you can put in your drink (as a "garnish," LOL) including shrimp, veggies, cheeses and local hot sauces.
2nd: Maxine's on Shine, maxinesonshine.com
3rd: Hamburger Mary's, hamburgermarys.com/orlando
- Best Of Orlando
- 2022
- Drinking + Nightlife
- Readers' Choice
1st: GB Bottle Shop & Tasting Bar, gbbottleshop.com
2nd: Redlight Redlight, instagram.com/redlightredlight
3rd: The Commission Beer Chamber, facebook.com/thecommissionbeerchamber
'Object.defineProperties(this, {'items': { get: function() { return jQuery(this.itemContainerSelector).find(this.itemSelector)}},'currentItem': {get: function() {var foundItem = nullvar foundItemInView = nullthis.items.each(function () {var currentInView = elementInView(jQuery(this), scrollTopOffset, 0)if (currentInView) {// An in view item is already located extra logicif (foundItemInView && foundItemInView.inView) {// The entire previously found item is visible - it winsif (foundItemInView.topInView && foundItemInView.bottomInView) return// The previously found item covers the visible area - it winsif (foundItemInView.middleCoversView) return// The previously found item has more surface area - it winsif (foundItemInView.percentVisable > currentInView.percentOfViewHeight) return}foundItem = jQuery(this)foundItemInView = currentInView}})return foundItem}},'currentItemIndex': {get: function() {var currentElement = this.currentItem.closest('[bestof-index]')if(currentElement) {return parseInt(currentElement.attr('bestof-index'))}return null}},'currentItemId': {get: function() {var currentElement = this.currentItem.closest('[bestof-id]')if(currentElement) {return currentElement.attr('bestof-id')}return null}}})var bestOfInstance = thisvar scrollTopOffset = window.innerHeight > this.smallMenuBreakPoint ? 110 : 140var originUrl = window.location.hrefthis.scrollToIndex = function (index) {var bestOfItem = this.items.filter('[bestof-index="' + index + '"]')if (bestOfItem.length) { var topOffset = bestOfItem.offset().top - scrollTopOffset// window.scrollTo({ top: topOffset, behavior: 'smooth' })window.scrollTo({ top: topOffset, behavior: 'auto' })}else {this.fetchMore(index, function () {bestOfInstance.scrollToIndex(index)})}}this.fetchMore = function (startIndex, callback) {var currentItemOnFetch = this.currentItemvar url = window.location.origin + window.location.pathnamevar params = {ajaxComponent: componentId,action: 'grabMore',startIndex: startIndex,startingItem: jQuery('[bestof-starting-item]').attr('bestof-starting-item'),}var keywords = currentItemOnFetch.attr('bestof-keywords')if (keywords) {params.keywords = keywords}var featureValue = currentItemOnFetch.attr('bestof-feature')if (featureValue) {params.feature = featureValue}jQuery.ajax({url: url,type: 'GET',data: params,dataType: 'json',beforeSend: function () { console.log('Fetching results') },success: function (data) {console.log('success', data.results, data.results.length, data.error, data)if (data) {if (data.error) {console.log(data.error)}else if (data.results) {console.log('bestOfInstance.items', bestOfInstance.items)for (var i = 0; i < data.results.length; i++) {var resultItem = jQuery(data.results[i])var resultItemIndex = parseInt(resultItem.attr('bestof-index'))var resultAlreadyInserted = bestOfInstance.items.filter('[bestof-index="' + resultItemIndex + '"]').length > 0console.log('result', resultItemIndex)var previousItem = nullvar previousItemIndex = 0if (!resultAlreadyInserted) {bestOfInstance.items.each(function () {if (resultAlreadyInserted) returnvar currentItem = jQuery(this)var currentItemIndex = parseInt(currentItem.attr('bestof-index'))if (resultItemIndex === currentItemIndex ) {resultAlreadyInserted = truereturn}else if (resultItemIndex > previousItemIndex && resultItemIndex < currentItemIndex) {var topOffsetBeforeInsert = currentItemOnFetch.get(0).getBoundingClientRect().topresultItem.insertBefore(currentItem)resultAlreadyInserted = truevar adjustedTopPosition = currentItemOnFetch.offset().top - topOffsetBeforeInsertwindow.scrollTo({ top: adjustedTopPosition, behavior: 'auto' })}previousItem = currentItempreviousItemIndex = currentItemIndex})if (!resultAlreadyInserted) {var topOffsetBeforeInsert = currentItemOnFetch.get(0).getBoundingClientRect().topresultItem.insertAfter(bestOfInstance.items.last())resultAlreadyInserted = truevar adjustedTopPosition = currentItemOnFetch.offset().top - topOffsetBeforeInsertwindow.scrollTo({ top: adjustedTopPosition, behavior: 'auto' })}}}}else { console.log('How did we get here?') }}else { console.log('No result or error returned from content request.') }},complete: function () { bestOfInstance.items = jQuery(bestOfInstance.itemSelector) // Update items resultjQuery(bestOfInstance.itemContainerSelector + ' div[uk-spinner]').remove()if (typeof callback === 'function') { callback() }},error: function (error) { console.log(error) }})}var lazyLoadTimeout = nullvar lazyLoadSurroundingItems = function (index) {if (bestOfInstance.lazyLoadMoreResults) {// Give lazyLoad a chance to finish before submiting more requestsvar lazyLoadTimeout = setTimeout(function () {var prevIndex = Math.max(index - 1, 1)var prevPrevIndex = Math.max(index - 2, 1)var nextIndex = index + 1var nextNextIndex = index + 2var prevIndexLoaded = bestOfInstance.items.filter('[bestof-index="' + prevIndex + '"]').length > 0var prevPrevIndexLoaded = bestOfInstance.items.filter('[bestof-index="' + prevPrevIndex + '"]').length > 0var nextIndexLoaded = bestOfInstance.items.filter('[bestof-index="' + nextIndex + '"]').length > 0var nextNextIndexLoaded = bestOfInstance.items.filter('[bestof-index="' + nextNextIndex + '"]').length > 0if(!prevIndexLoaded) {jQuery(bestOfInstance.itemContainerSelector + ' div[uk-spinner]').remove()// jQuery(bestOfInstance.itemContainerSelector).prepend(bestOfInstance.spinnerHTML)bestOfInstance.fetchMore(Math.max(prevIndex - 9, 1))}else if(!prevPrevIndexLoaded) {jQuery(bestOfInstance.itemContainerSelector + ' div[uk-spinner]').remove()// jQuery(bestOfInstance.itemContainerSelector).prepend(bestOfInstance.spinnerHTML)bestOfInstance.fetchMore(Math.max(prevPrevIndex - 9, 1))}if(!nextIndexLoaded) {jQuery(bestOfInstance.itemContainerSelector + ' div[uk-spinner]').remove()jQuery(bestOfInstance.itemContainerSelector).append(bestOfInstance.spinnerHTML)bestOfInstance.fetchMore(nextIndex)}else if(!nextNextIndexLoaded) {jQuery(bestOfInstance.itemContainerSelector + ' div[uk-spinner]').remove()jQuery(bestOfInstance.itemContainerSelector).append(bestOfInstance.spinnerHTML)bestOfInstance.fetchMore(nextNextIndex)}}, 500)}}var lastIndex = bestOfInstance.currentItemIndexjQuery(window).on('scroll resize', function () {// Give lazyLoad a chance to finish before submiting more requests// var lazyLoadTimeout = setTimeout(function () {// }, 200)var currentIndex = bestOfInstance.currentItemIndexif(currentIndex !== lastIndex) {lastIndex = currentIndexlazyLoadSurroundingItems(currentIndex)console.log(`BestOf Item index: ${currentIndex}`)fireEvent('foundation:bestof:itemchange')}})this.initialized = falsethis.init = function () {if (this.initialized === true) return// Prevent the browser from trying to scroll to the last scroll position before reloadif (history.scrollRestoration) {history.scrollRestoration = 'manual'}var startIndex = this.items.first().attr('bestof-index')var oid = window.location.pathname.match(/\d+$/)if (oid) {var grabIndex = parseInt(this.items.closest('[bestof-id="' + oid[0] + '"]').attr('bestof-index'))if (!isNaN(grabIndex)) {var startIndex = grabIndex}}if (startIndex > 1) {this.scrollToIndex(startIndex)}if(jQuery(this.itemContainerSelector + '[single-listing]').length === 0) {this.lazyLoadMoreResults = true}this.initialized = truelazyLoadSurroundingItems(startIndex)}return this}var BestOfItems = new BestOfItemsObj()// Timeout to prevent fast jogging from item to itemvar itemChangeTimeout = nulljQuery(document).on('foundation:bestof:itemchange', function () {itemChangeTimeout = setTimeout(function () {updateMetaDataFromElement(BestOfItems.currentItem)// Google track pageviewif (typeof ga === 'function') {console.log("foundation:bestof:itemchange event", "sending pageview navigation to:", window.location.href);ga('set', 'location', window.location.href)for (let i = 1; i <= 3; i++) {let currentDimension = jQuery(BestOfItems.currentItem).attr('ga-dimension'+i)if (typeof currentDimension === 'string') {ga('set', 'dimension' + i, currentDimension)}else {ga('set', 'dimension' + i, '') }}ga('send', 'pageview')}}, 200)if (typeof (Foundation.Ad.slots['_LeaderboardHeader-1']) === 'object') {Foundation.Ad.refresh('_LeaderboardHeader-1')}if (typeof (Foundation.Ad.slots['_Footer-1']) === 'object') {Foundation.Ad.showFooter('_Footer-1');}})// Try to init immediatelyBestOfItems.init()// On document loadedjQuery(function () {BestOfItems.init()})})();