10 of the best pubs in England
The pub is an iconic cornerstone of British culture. Here's our pick of the best in England.

The pub is an iconic cornerstone of British culture, and the pub crawl is practically our national sport. Pubs have kept this fair isle well-watered ever since the Romans invaded in 43 CE and introduced their own wine-based drinking dens. While an Italian wine bar may sound like the antithesis of today’s "proper pub," these tabernae coined the term tavern and spurred the evolution of alehouses, inns and eventually public houses from which the humble "pub" is derived.
Pub preferences vary as much as your choice of tipple – whether you’re a real-ale puritan looking for hand-pulled hops or a gourmand seeking fine dining in this ever-evolving British institution. Personally, the hallmarks of a successful pub involve creaking wooden beams above flagstones slightly sticky with spilt beer, roaring fires, probably a dog, a TV that’s rolled out just for the rugby and no music unless it’s live. Regardless of taste, you’re unlikely to go wrong with these ten fine establishments. So pull up a stool or sniff out a snug, make mine a pint, and settle in for some of the best British boozers in England.
1. Try a tipple at the Fat Cat, Norwich
Best for real ale enthusiasts
The Fat Cat, 49 W End St, Norwich, Norfolk NR2 4NA
I once had the pleasure of calling this charming bolthole my local, so I may be biased. However, the Fat Cat’s many accolades – including the Campaign for Real Ale (CAMRA) National Pub of the Year and the Good Pub Guide Beer Pub of the Year on several occasions – are almost as extensive as its selection of 30 well-kept real ales. For a Session IPA, a nice hoppy pint of Tom Cat brewed at the Fat Cat’s eponymous Norwich brewery is hard to beat. The quintessential no-nonsense pub, you won’t find food here, aside from a packet of Scampi Fries and perhaps a stonkingly good pork pie.
2. Sip the scrumpy at the Square & Compass, Swanage
Best for walkers and music lovers
The Square and Compass, Worth Matravers, Swanage, Dorset BH19 3LF
Found on the clifftops above Dorset’s Jurassic Coast, this storied alehouse has been landlorded by the same family for the past 110 years. Stepping inside is like falling into a time warp with well-worn wooden tables and walls you wish could talk, while in the garden you’ll find a dedicated fossil museum. As you’d expect from the West Country, ciders are a specialty, with several scrumpies handmade by landlord Charlie Newman. Homemade pies, pasties and crisps are the extent of the food selection, but you will find a fantastic menu of live music throughout the year.
3. Relish fine northern nourishment at the Marble Arch, Manchester
Best for home-brewed beers and classic pub grub
The Marble Arch, 73 Rochdale Rd, Manchester M4 4HY
Don’t worry – it’s not the effects of the cask beer – the fine mosaic floor in this Grade II-listed establishment really is sloping considerably. Just a stone’s throw from Manchester’s vibrant Northern Quarter, this celebrated local watering hole is an opulent treasure with tiled walls and barrelled ceilings that hearken back to the Victorian era, a time when Gothic architecture was typically reserved for religious buildings. A secular church in itself and the birthplace of Marble Beers, enjoy a carefully selected range of refreshments alongside hearty pub classics, including an extremely popular Sunday roast. Exception: The parser function of type "canto_diptych" is not defined. Define your custom parser functions as: https://github.com/shuqikhor/editorjs-html-php#extend-for-custom-blocks in /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php:70 Stack trace: #0 /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php(17): edjsHTML::parse_function_error('canto_diptych') #1 [internal function]: edjsHTML::parse_block(Array) #2 /code/web/modules/custom/editorjs_custom_plugins/src/Parser/CustomParser.php(28): array_map(Array, Array) #3 /code/web/modules/custom/aws_event_pipeline/src/Mappers/v1/ArticleMapper.php(123): Drupal\editorjs_custom_plugins\Parser\CustomParser::parse(Array) #4 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(168): Drupal\aws_event_pipeline\Mappers\v1\ArticleMapper->toAwsPayload(Object(Drupal\node\Entity\Node)) #5 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(151): Drupal\aws_event_pipeline\AwsFormatter->getPayload(Object(Drupal\node\Entity\Node), Array) #6 /code/web/modules/custom/aws_event_pipeline/src/AwsEventSync.php(174): Drupal\aws_event_pipeline\AwsFormatter->getAwsMessage(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent), Array) #7 /code/web/modules/custom/aws_event_pipeline/src/EventSubscribers/EntityEventSubscriber.php(146): Drupal\aws_event_pipeline\AwsEventSync->sendToAws(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #8 [internal function]: Drupal\aws_event_pipeline\EventSubscribers\EntityEventSubscriber->onEntityUpdate(Object(Drupal\Core\Entity\EntityEvent), 'entity.update', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #9 /code/web/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(111): call_user_func(Array, Object(Drupal\Core\Entity\EntityEvent), 'entity.update', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #10 /code/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php(231): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object(Drupal\Core\Entity\EntityEvent), 'entity.update') #11 /code/web/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php(900): Drupal\Core\Entity\EntityStorageBase->invokeHook('update', Object(Drupal\node\Entity\Node)) #12 /code/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php(579): Drupal\Core\Entity\ContentEntityStorageBase->invokeHook('update', Object(Drupal\node\Entity\Node)) #13 /code/web/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php(781): Drupal\Core\Entity\EntityStorageBase->doPostSave(Object(Drupal\node\Entity\Node), true) #14 /code/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php(504): Drupal\Core\Entity\ContentEntityStorageBase->doPostSave(Object(Drupal\node\Entity\Node), true) #15 /code/web/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php(806): Drupal\Core\Entity\EntityStorageBase->save(Object(Drupal\node\Entity\Node)) #16 /code/web/core/lib/Drupal/Core/Entity/EntityBase.php(339): Drupal\Core\Entity\Sql\SqlContentEntityStorage->save(Object(Drupal\node\Entity\Node)) #17 /code/web/modules/contrib/lightning_workflow/modules/lightning_scheduler/src/TransitionManager.php(212): Drupal\Core\Entity\EntityBase->save() #18 /code/web/modules/contrib/lightning_workflow/modules/lightning_scheduler/lightning_scheduler.module(69): Drupal\lightning_scheduler\TransitionManager->process('node', Object(Drupal\Core\Datetime\DrupalDateTime)) #19 [internal function]: lightning_scheduler_cron(Object(Drupal\ultimate_cron\Entity\CronJob)) #20 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(325): call_user_func('lightning_sched...', Object(Drupal\ultimate_cron\Entity\CronJob)) #21 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(471): Drupal\ultimate_cron\Entity\CronJob->invokeCallback() #22 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(213): Drupal\ultimate_cron\Entity\CronJob->run(Object(Drupal\Core\StringTranslation\TranslatableMarkup)) #23 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(334): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launch(Object(Drupal\ultimate_cron\Entity\CronJob)) #24 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(309): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->runThread('6180762', 1, Array) #25 /code/web/modules/contrib/ultimate_cron/src/UltimateCron.php(64): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launchJobs(Array) #26 /code/web/modules/contrib/ultimate_cron/src/ProxyClass/UltimateCron.php(70): Drupal\ultimate_cron\UltimateCron->run() #27 /code/web/core/modules/system/src/CronController.php(46): Drupal\ultimate_cron\ProxyClass\UltimateCron->run() #28 [internal function]: Drupal\system\CronController->run() #29 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array) #30 /code/web/core/lib/Drupal/Core/Render/Renderer.php(592): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #31 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure)) #32 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) #33 /code/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #34 /code/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #35 /code/web/modules/contrib/redirect_after_login/src/RedirectMiddleware.php(44): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #36 /code/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Drupal\redirect_after_login\RedirectMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #37 /code/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #38 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(191): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #39 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(128): Drupal\page_cache\StackMiddleware\PageCache->fetch(Object(Symfony\Component\HttpFoundation\Request), 1, true) #40 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(82): Drupal\page_cache\StackMiddleware\PageCache->lookup(Object(Symfony\Component\HttpFoundation\Request), 1, true) #41 /code/vendor/asm89/stack-cors/src/Cors.php(53): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #42 /code/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Asm89\Stack\Cors->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #43 /code/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #44 /code/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #45 /code/web/core/lib/Drupal/Core/DrupalKernel.php(704): Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #46 /code/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #47 {main}
4. Sup at a Soho icon in the French House, London
Best for fine food and capital bonhomie
The French House, 49 Dean St, London W1D 5BG
This Dean St drinking den has long been the favored spot for London’s literati, booze-fueled bohemians and creatives, including Francis Bacon, Lucian Freud and Dylan Thomas. A Soho institution, getting your phone out in the French is likely to raise an eyebrow or two thanks to the no-tech rule. There’s an excellent wine selection (including 30 different kinds of champagne) and beer that is strictly served in half pints – a tradition that dates back to a 1920s brawl involving some rowdy sailors. Upstairs, you’ll find an intimate restaurant serving some of the finest French fare the capital has to offer.
5. Get cozy at the Woolpack Inn, the Cotswolds
Best for fireside drinks and countryside dining
The Woolpack Inn, Slad, Stroud GL6 7QA
Straddling the heartland of Cotswolds walking country within the bucolic Slad Valley, the Woolpack is synonymous with the writing of its old regular, Laurie Lee, famed for his childhood memoir Cider with Rosie. Despite having undergone several renovations in its 300-year history, this treasured spot retains its quiet country charm, serving well-kept local beers and ciders in a decidedly dog-friendly environment. Looking out over rolling farmland, the vine-clad terrace is perfect in summer, while inside you’ll find an intimate fireside tavern and a dining room dishing up unpretentious locally sourced food that has seen this pub voted as the UK’s 19th best gastropub.
6. Find rural refreshment at the Blisland Inn, Blisland
Best for a friendly welcome in an authentic setting
The Blisland Inn, Blisland, Cornwall PL30 4JF
You’ll find this gem on the edge of what is supposedly Cornwall’s only village green. Its famous Cornish hospitality, the varied roster of thirst-quenching beverages and a simple but satisfying menu of home-cooked food make it a walker’s paradise after a windswept stride across the rugged expanse of Bodmin Moor. Under its wood-beamed ceilings festooned with an eclectic selection of Toby jugs, you’ll find traditional hand pumps pouring an ever-changing selection of real ale and a decent range of ciders that justify its regular place in the Good Beer Guide. This is a traditional, old-school country pub at its finest.
7. Fill your boots at the Unruly Pig, Woodbridge
Best for gastropub dining
The Unruly Pig, Orford Rd, Bromeswell, Woodbridge, Suffolk IP12 2PU
The critic A.A. Gill once wrote that pubs and food go together, "like frogs and lawnmowers," but the rise of the gastropub has laid false to that claim. With what is frankly an embarrassment of awards to its name – including Estrella Damm’s best gastropub in the UK for three years in a row – the Unruly Pig’s "Britalian" menu may be Michelin-guide listed, but you can forget any pretentiousness. The authentic pub setting in a 16th-century rural Suffolk inn makes for a cozy, dog-friendly atmosphere, with wholesome plates that walk the line between upmarket restaurant fare and hearty pub food.
8. Unearth a Lakeland Gem at the Kirkstile Inn, the Lake District
Best for pub garden scenery and ambrosial ales
The Kirkstile Inn, Loweswater, the Lake District, Cumbria, CA13 0RU
Sat in the shadow of Melbreak Fell and just a stone’s throw from both Crummock Water and Loweswater, the Kirkstile holds a fond place as my favorite pub in the Lake District ever since a friend urged me to go for the roast beef sandwiches alone (she was right). Away from the bustle of Keswick, expect historic memorabilia hung on thick stone walls, filling home-cooked food and a seriously scenic pub garden. The pub’s brewery, Cumbrian Ales, is home to the astonishingly good Loweswater Gold, an ale as enticing as the crystal Lakeland fell water with which it is brewed. Exception: The parser function of type "canto_diptych" is not defined. Define your custom parser functions as: https://github.com/shuqikhor/editorjs-html-php#extend-for-custom-blocks in /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php:70 Stack trace: #0 /code/vendor/sqkhor/editorjs-html/src/edjsHTML.php(17): edjsHTML::parse_function_error('canto_diptych') #1 [internal function]: edjsHTML::parse_block(Array) #2 /code/web/modules/custom/editorjs_custom_plugins/src/Parser/CustomParser.php(28): array_map(Array, Array) #3 /code/web/modules/custom/aws_event_pipeline/src/Mappers/v1/ArticleMapper.php(123): Drupal\editorjs_custom_plugins\Parser\CustomParser::parse(Array) #4 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(168): Drupal\aws_event_pipeline\Mappers\v1\ArticleMapper->toAwsPayload(Object(Drupal\node\Entity\Node)) #5 /code/web/modules/custom/aws_event_pipeline/src/AwsFormatter.php(151): Drupal\aws_event_pipeline\AwsFormatter->getPayload(Object(Drupal\node\Entity\Node), Array) #6 /code/web/modules/custom/aws_event_pipeline/src/AwsEventSync.php(174): Drupal\aws_event_pipeline\AwsFormatter->getAwsMessage(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent), Array) #7 /code/web/modules/custom/aws_event_pipeline/src/EventSubscribers/EntityEventSubscriber.php(146): Drupal\aws_event_pipeline\AwsEventSync->sendToAws(Object(Drupal\node\Entity\Node), Object(Drupal\aws_event_pipeline\AwsEvent\AwsEvent)) #8 [internal function]: Drupal\aws_event_pipeline\EventSubscribers\EntityEventSubscriber->onEntityUpdate(Object(Drupal\Core\Entity\EntityEvent), 'entity.update', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #9 /code/web/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(111): call_user_func(Array, Object(Drupal\Core\Entity\EntityEvent), 'entity.update', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #10 /code/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php(231): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object(Drupal\Core\Entity\EntityEvent), 'entity.update') #11 /code/web/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php(900): Drupal\Core\Entity\EntityStorageBase->invokeHook('update', Object(Drupal\node\Entity\Node)) #12 /code/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php(579): Drupal\Core\Entity\ContentEntityStorageBase->invokeHook('update', Object(Drupal\node\Entity\Node)) #13 /code/web/core/lib/Drupal/Core/Entity/ContentEntityStorageBase.php(781): Drupal\Core\Entity\EntityStorageBase->doPostSave(Object(Drupal\node\Entity\Node), true) #14 /code/web/core/lib/Drupal/Core/Entity/EntityStorageBase.php(504): Drupal\Core\Entity\ContentEntityStorageBase->doPostSave(Object(Drupal\node\Entity\Node), true) #15 /code/web/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php(806): Drupal\Core\Entity\EntityStorageBase->save(Object(Drupal\node\Entity\Node)) #16 /code/web/core/lib/Drupal/Core/Entity/EntityBase.php(339): Drupal\Core\Entity\Sql\SqlContentEntityStorage->save(Object(Drupal\node\Entity\Node)) #17 /code/web/modules/contrib/lightning_workflow/modules/lightning_scheduler/src/TransitionManager.php(212): Drupal\Core\Entity\EntityBase->save() #18 /code/web/modules/contrib/lightning_workflow/modules/lightning_scheduler/lightning_scheduler.module(69): Drupal\lightning_scheduler\TransitionManager->process('node', Object(Drupal\Core\Datetime\DrupalDateTime)) #19 [internal function]: lightning_scheduler_cron(Object(Drupal\ultimate_cron\Entity\CronJob)) #20 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(325): call_user_func('lightning_sched...', Object(Drupal\ultimate_cron\Entity\CronJob)) #21 /code/web/modules/contrib/ultimate_cron/src/Entity/CronJob.php(471): Drupal\ultimate_cron\Entity\CronJob->invokeCallback() #22 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(213): Drupal\ultimate_cron\Entity\CronJob->run(Object(Drupal\Core\StringTranslation\TranslatableMarkup)) #23 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(334): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launch(Object(Drupal\ultimate_cron\Entity\CronJob)) #24 /code/web/modules/contrib/ultimate_cron/src/Plugin/ultimate_cron/Launcher/SerialLauncher.php(309): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->runThread('6180762', 1, Array) #25 /code/web/modules/contrib/ultimate_cron/src/UltimateCron.php(64): Drupal\ultimate_cron\Plugin\ultimate_cron\Launcher\SerialLauncher->launchJobs(Array) #26 /code/web/modules/contrib/ultimate_cron/src/ProxyClass/UltimateCron.php(70): Drupal\ultimate_cron\UltimateCron->run() #27 /code/web/core/modules/system/src/CronController.php(46): Drupal\ultimate_cron\ProxyClass\UltimateCron->run() #28 [internal function]: Drupal\system\CronController->run() #29 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array) #30 /code/web/core/lib/Drupal/Core/Render/Renderer.php(592): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #31 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure)) #32 /code/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) #33 /code/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #34 /code/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #35 /code/web/modules/contrib/redirect_after_login/src/RedirectMiddleware.php(44): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #36 /code/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Drupal\redirect_after_login\RedirectMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #37 /code/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #38 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(191): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #39 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(128): Drupal\page_cache\StackMiddleware\PageCache->fetch(Object(Symfony\Component\HttpFoundation\Request), 1, true) #40 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(82): Drupal\page_cache\StackMiddleware\PageCache->lookup(Object(Symfony\Component\HttpFoundation\Request), 1, true) #41 /code/vendor/asm89/stack-cors/src/Cors.php(53): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #42 /code/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Asm89\Stack\Cors->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #43 /code/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #44 /code/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #45 /code/web/core/lib/Drupal/Core/DrupalKernel.php(704): Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #46 /code/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #47 {main}
9. Spend the night at the Penny Bun, Ilkley
Best culinary rising star with overnight rooms
The Penny Bun, West Ln, Askwith, Ilkley LS21 2JQ
Despite reopening in 2024, this Wharfedale inn is quickly establishing a stellar reputation amongst foodies. Under new ownership by the Denton Reserve and named after a local mushroom, the Penny Bun is fiercely proud of its Yorkshire roots with a seasonal menu that sources all meat from the surrounding estate. A sustainability champion, the pub has a contemporary rustic style but offers a warm muddy boots welcome. The candle-lit snug is the perfect spot to cozy up with a pint from the nearby Ossett Brewery, and there are also five stylish, screen-free rooms to make the most of your stay.
10. Wind back the centuries at Ye Olde Fighting Cocks, St Albans
Best for a historic haunt
16 Abbey Mill Lane, St Albans AL3 4HE
For a pint-sized city, St Albans’ reputation for good pubs is anything but. It’s home to both the Campaign for Real Ale (CAMRA), and Ye Olde Fighting Cocks, the oldest pub in the UK – although others will dispute the title. Frothing flagons of ale have supposedly been poured at this scenic spot as far back as 793 CE, while the structure you see today dates to the 11th century. With scenic views across the Verulamium Lake and the cathedral orchard, nowadays, you’ll find a more modern twist with a regular lineup of music from local bands and a quality pub menu.