Best US family camp-style resorts for a throwback summer getaway
Build a tradition with your family to return to again and again at one of these nostalgic and chic summer resort camps.

Have you ever watched Dirty Dancing and thought, wow, I wish I could spend the summer in a delightful mountain resort where I could be with my family but also escape them (with or without a young Patrick Swayze) whenever I want? Lucky for you, the perfect multi-generational resort — aka “family camp” — does exist. There are a handful of standout camps across the United States that are truly turning heads — and luring families back, summer after summer.
That’s the true joy of these often retro-inspired resorts: They encourage you to build a tradition with your family, returning again and again — because once you arrive, staying there is just so easy. These gorgeous throwback escapes are heavy on amenities and light on forethought. Whether you're craving a rustic retreat in the wilds of Montana or a peaceful, simple stay just driving distance from New York City, there's a family-friendly camp here for every taste and adventure level. So pick your favorite from this list, book your summer stay and then just…show up. These resorts will take care of the rest.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('6256881', 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}
Ofland Escalante in Escalante, Utah
Ofland is exactly what it sounds like: of the land. This remote desert oasis combines minimalist design with retro Western charm — complete with an on-site drive-in movie theater permanently populated with antique cars where you can cuddle up to watch favorite films on the big screen. Ofland is ideal for families looking for an immersion into Southern Utah’s wilderness without skimping on high-quality amenities (hello, luxe private outdoor showers). Plus, the food from Ofland’s general store and food truck is phenomenal — we went back for the same portobello burger two meals in a row.
What You’ll Do: When you’re not relaxing by the fire, at the drive-in or eating in the chic community dining area, explore the world-famous hiking trails and spooky slot canyons of Escalante National Monument. The town of Escalante offers plenty of options for rentals and guided tours, including ATVS, horseback riding and fishing.
Make It Happen: Ofland Escalante is ideal in spring and fall when temperatures are more temperate. (It’s closed during the winter.) Book in advance, especially during peak seasons, as this is a popular destination for both family glampers and those seeking solitude.
Getting There: It ain’t easy, but it’s worth it. You’ll need to fly into Las Vegas or Salt Lake City and rent a car. Then, take the scenic 5ish-hour drive from either airport to Escalante. Yes, it’s long, but it’s a road trip through some of the most beautiful landscape in the country, and when you come around the bend after dark and see Ofland twinkling in the desert, you’ll feel like you just found the North Pole (but with way better food).
The Graham & Co in Phoenicia, New York
A fan-favorite getaway for Brooklyn hipsters and out-of-state families alike, The Graham offers a laid-back but always-curated retreat in the Catskill Mountains. It’s a charming and design-forward renovated motel — think summer camp meets boutique — and I have loved it since I first stayed there right after its opening in 2013.
What You’ll Do: Hiking, biking and river-swimming make building core memories easy during the warm Catskill summers (just like Baby!). The Graham has an outdoor pool and offers yoga, a cozy fire pit for s'mores, and sometimes even live music in the evenings. Don’t miss kayaking on the nearby Esopus Creek and high-end comfort food at Phoenicia Diner.
Make It Happen: Visit in late spring or summer for warm weather and plenty of outdoor activities, or aim for winter if you’re a ski fiend. The most important time to book early is during peak fall foliage season; this is the Catskills, after all.
Getting There: Fly into Albany just 1.5 hours away, or for more flight options pick a New York City airport (JFK or LaGuardia) and take the 2.5-hour drive to Phoenicia. There’s also Amtrak train service to nearby Kingston and bus service from NYC’s Port Authority. A car will be helpful for exploring the area, but it’s not 100% necessary — I’ve done multiple days at The Graham by bus and on foot.
Canyon Lodge & Cabins in Yellowstone National Park, Wyoming
If you’re looking for a family-friendly escape that’s immersed in nature, you can’t beat staying inside the protected wilderness of Yellowstone National Park. At Canyon Lodge & Cabins, you’ll have history (and bison and osprey and bears, oh my!) right on your doorstep. The resort is rustic but comfortable, with a no-frills, authentic feel and a convenient on-site cafeteria with a variety of options.
What You’ll Do: Canyon Lodge is the ideal base camp for exploring Yellowstone’s geothermal features, like the iconic Old Faithful geyser. My family went with local tour company Austin Adventures for guided hikes, tours of the geysers and animal-spotting at dawn in Hayden Valley — and I can’t recommend them enough. Kids can also participate in educational programming to become an official Junior Ranger, which was my son’s favorite part of the entire trip.
Make It Happen: Summer is peak season; visiting in late spring or early fall offers fewer crowds and more affordable rates.
Getting There: You can fly into Bozeman Yellowstone International Airport (BZN) and rent a car to drive 2.75 hours of incredible scenery to Yellowstone. But I actually recommend flying into Billings-Logan International Airport (BIL). It adds an hour to the drive but is a much more affordable starting point — both for flights and for fun add-on nights in surprisingly cool Billings, MT.
Camp Fimfo in New Braunfels, Texas
For Southern charm with a family-friendly atmosphere, head to Camp Fimfo, which merges KOA-like camping with elevated amenities plus a lively waterpark in Texas Hill Country. Rent a cabin, an RV or a very affordable tent site and get access to all the playful conveniences this resort has for “kids” of all ages.
What You’ll Do: You can’t possibly do all the activities available at Camp Fimfo — from the waterpark to tubing on the Guadalupe River to zip-lining to gem-hunting. There's also a mini-golf course, basketball courts, an on-site bar, restaurant and (pioneer-themed!) coffee cart.
Make It Happen: Summer is the peak season thanks to Texas heat and all those water activities, but spring and fall offer milder weather and fewer crowds.
Getting There: Fly into San Antonio International Airport (SAT) and rent a car for the easy 45-minute drive to New Braunfels.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('6256881', 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}
Sandy Pines Campground in Kennebunkport, Maine
Situated in a tranquil salt marsh, Sandy Pines is a quintessential “glampground” where nostalgic Maine summer vibes meet pretty accommodations — and air conditioning (phew). On property, family campers can mingle at the retro general store; everything is available for purchase here, from alcohol to lobster roll fixin’s (because Maine). There’s also a heated saltwater pool, seriously clean bathhouses and a modern lounge space with board games and a fireplace for those chillier coastal nights.
What you’ll do: Biking, hiking, arts and crafts — you name it, Sandy Pines has got it. Your family can go fishing, paddleboarding or just relax by the pool and splash pad. There’s also a private beach for swimming, kayaking and beach games. The campgrounds are bordered by the seaside towns of Kennebunk and Kennebunkport, both of which are brimming with boutiques, excellent seafood spots and of course sandy stretches like local favorite Goose Rocks Beach. You can even try a whale watching or lobster boat tour; it doesn’t get much more Maine than that.
Make it happen: Summer is the peak to aim for, but spring and fall are also lovely (and more affordable).
Getting there: Fly into Portland International Jetport (PWM), about 30 minutes away. You can even Uber straight to Sandy Pines, but renting a car is recommended to explore the area.
The Resort at Paws up in Greenough, Montana
The Resort at Paws Up is a sprawling 37,000-acre ranch in Montana’s wilderness that’s a glamorous take on cowboy culture. Multiple generations of your family will likely feel at ease here, since there’s something for high-energy outdoor lovers and sit-by-the-fire-pit relaxers alike.
What you’ll do: Everything, or absolutely nothing. It’s a win-win! Horseback ride through expansive meadows, go on a bucket-list hot air balloon ride, tackle a whitewater rafting adventure or chill the hell out in your Tree Haus. There's also an exciting kids’ camp where littles can explore nature, do arts and crafts or learn outdoor skills. In the evenings, enjoy a family BBQ under the stars or attend a Western-style cookout.
Make it happen: Book during summer months (June through September) for the best weather and activity selection, though Paws Up also offers winter picks like snowshoeing and dog sledding.
Getting there: Fly into Missoula International Airport (MSO), about 35 minutes from the resort. A car is needed to reach the property, though Paws Up can arrange airport transfers if you like.
Sundance Mountain Resort in Sundance, Utah
You’ve likely heard of it thanks to Robert Redford’s famous institute and film festival, but did you know you can retreat to Sundance when it’s not ski season? At the foot of Utah’s Wasatch Mountains, the Sundance Mountain Resort blends Western-inspired architecture with a focus on sustainability and the arts. It’s chill, outdoorsy and a bit bohemian: wood beams, fireplaces, morning mountain views; you get the idea. Expect a peaceful, scenic escape with an emphasis on environmental stewardship.
What you’ll do: Of course Sundance is renowned for skiing, snowboarding and snowshoeing in winter, but warmer months mean hiking, mountain biking, fly-fishing, zip-lining and wildlife-watching. The resort is unique because it also offers hands-on workshops — from pottery to painting — in its on-site art studio and gallery.
Make it happen: Really, you can and should visit Sundance year-round (and book early no matter what). December to March are ideal for skiing and June to August for that perfect summer gathering.
Getting there: Fly into Salt Lake City International Airport (SLC), about an hour’s drive from the resort. Renting a car is recommended for flexibility — and those scenic drives through the mountains.