7 packed days in Uzbekistan: the ultimate itinerary
With its stunning architecture and lively bazaars, Uzbekistan is a traveler’s dream. This week-long itinerary will show you the best of the country.
![7 packed days in Uzbekistan: the ultimate itinerary](https://lp-cms-production.imgix.net/2025-02/shutterstock1742347241-RFE-cropped.jpg?w=600&h=400)
Everyone who visits Uzbekistan talks about the blues: the cerulean domes of the Mir-i Arab Madrasah in Bukhara, the cobalt teal tones of Khiva’s Kalta Minor minaret and the gloriously cloudless skies.
But it’s the golds and ambers I remember most vividly from my recent trip – the swift images of ample cotton fields moving past my window, the sun setting on Ayaz Kala, the dappled facade of the Ismail Samani Mausoleum.… If this all sounds like something out of a dream, that’s because it is – for travelers, anyway.
On a recent trip across the country with Exodus Adventure Travels, I hit up all the country’s major sites with a local guide. Though I’ve squeezed my recommendations into a packed one-week itinerary, I’d recommend a trip of 10 days or more to fully absorb everything this Central Asian country has to offer.
- When to arrive: Arrive on any day except Monday, when some sites in Tashkent – Uzbekistan’s main port of entry – are closed. March through early June (spring) and September to October (autumn) are peak seasons, and the weather is what I call “AC weather,” with highs in the 20s°C (70s°F).
- How to get to and from the airport: Book a cab via rideshare app Yandex Go (US$3–5) from Tashkent International Airport. Some hotels and guided tours offer shuttle services, so it's worth confirming arrangements beforehand. (Getting around the country is a little more varied, so check out our Uzbekistan transportation guide.)
- What to pack: Almost everything goes in Tashkent, though modest clothing is appropriate when visiting mosques and other religious sites. Always carry a light scarf (which doubles as a head covering for women), and pack ample layers as mornings and evenings can get chilly, depending on when and where you visit.
- Stay connected: Bigger sites and restaurants have free wi-fi, but it can be spotty. You can get a physical SIM card at the Uztelecom kiosk (US$7 for 50G), or sort out an eSIM before you land.
Day 1: Ambling through Tashkent
How to spend the day: Start at the Hazrati Imam Complex, which contains buildings dating from the 16th century through 2007 (the Friday Mosque). What brings most people to this complex is the Moyie Mubarek Library Museum, which contains the Quran of Osman: written on buckskin in the 7th century, it’s one of the oldest Qurans in the world. Also in the library are ancient manuscripts and Qurans in languages from across the world, including braille.
Walk across to Madrasah Barak Khan, then head through its the blue-tiled facade to browse souvenirs ranging from textiles, wood, brass and ceramics to the usual magnets and postcards. (Since these are made and sometimes sold by craftspeople, avoid haggling if you see something you really like.) If you’ve got time, wander through the by-lanes and past the Mausoleum of Abu Bakar Kaffal Shoshi (a prominent theologian) to get a feel of the old city. You’ll spot the odd Soviet-era Lada car and a few traditional mud-and-straw houses alongside newer structures (most of Tashkent was rebuilt following a 1966 earthquake).
From here, head to Chorsu Bazaar, the city’s beloved farmers' market. Expect to walk past mounds of seasonal produce (when I visited, piles of pumpkins resembled mountains), and pretty much everything from dry fruits and nuts to veggies, meats and eggs. And, of course, bread: round, golden-brown, smooth, pillowy non in stacks, plucked fresh from the ovens. It is as heavenly as it sounds. (I had to eat some in the name of research.)
Next up, dash over to the Museum of Applied Arts, which displays textiles and art exhibitions in the one-time mansion of a Russian diplomat. Finally, head to Amir Temur Square, a victory square with a horseback statue of the founder of the Timurid empire at its center. It’s a majestic site as you emerge from the metro exit (also named after Temur; from the museum, take the blue line from Kosmonavtlar and switch to the red line at Alisher Navoi). If you’re with a guide, expect a story about how the horse statue lost a certain reproductive organ.
Where to eat: Sim Sim is a go-to for most visitors – and while the kitschy decor doesn’t exactly seem designed for locals, the place does do great grilled meats (get the lula kebab) and salads. Weekends and nights can be crowded (and loud, thanks to a live DJ), so be sure to book ahead and flag any dietary restrictions.
Where to stay: The Wyndham Tashkent is a 10-minute walk from Amir Temur Square, with all the bells and whistles that come with a business hotel. Expect comfortable, spacious rooms, a great breakfast spread and reliable wi-fi.
Day 2: Nurturing a love of art in Nukus and history in the Kyzylkum Desert
How to spend the day: Fly from Tashkent to Nukus (the capital of the autonomous Republic of Karakalpakstan) in the morning. After touching down, you can grab food and a coffee at the airport or at Cinnamon, across from the Savitsky Museum (officially called the “State Museum of Arts of Karakalpakstan named after IV Savitsky”). This institution is what lures travelers to this otherwise laid-back town, as it houses a remarkable art collection saved from destruction during the Soviet era by artist and archaeologist Igor Savitksy, alongside artifacts, textiles and jewelry. You can take a tour with a guide, or visit on your own thanks to scannable QR codes that pull up information in both Russian and English. (The Russian entries are more detailed, so opt to translate using a smartphone if going this route; the museum has wi-fi.) Keep an eye out for Mikhail Kurzin’s gouache Capital, J Lepesov’s Song and Alisa Poret’s Buffo. (The last work – a painting of a fluffy grey-black cat against a pink background – particularly speaks to me, Lonely Planet’s resident cat lady.)
From here, most people drive to Moynaq to see the "ship graveyard,” a result of the tragically shrunken Aral Sea. Instead we chose to drive further east into the Kyzylkum Desert to Ayaz Kala, a 6th-century fortress perched on a hill. After a rewarding walk up and around the ruins, head to the Ayaz Kala Yurt Camp and prepare to be plied with tea and snacks (and even vodka) by Rano Yakubova, a generous Karakalpak woman. Aim to leave at dusk to reach Khiva by 8 or 9pm, depending on traffic.
Where to eat: For a leisurely lunch, sit down at Restobar Neo in Nukus, which serves a combination of local and global fare (think grilled meats and borscht, plus tempura and sushi rolls).
Where to stay: The Said Islom Khoja Hotel is a 10-minute drive from Khiva’s walled Itchan Kala. Rooms are on the basic side, but clean and well maintained – plus, the hotel has a pool, bar and decent breakfast salon. You can also stay in a guesthouse or hotel within Itchan Kala, in ancestral homes that have been converted into lodgings. Hotel Orient Star is one such place and right by the Kalta Minor Minaret.
Extra time? Consider spending a night at the Ayaz Kala Yurt Camp, which has a handful of yurts available (make arrangements beforehand).
Day 3: Exploring the walled city in Khiva
How to spend the day: It’s impossible to take a bad photograph in Khiva’s Itchan Kala, the town’s walled inner city. Walk past the ticket counter through the carved wooden doors of the West Gate (Ota Darvoza) for a first glimpse of history: the Kalta Minor Minaret, tiled in shades of turquoise, and plump and stumpy from having never been completed. To the left, you’ll see round, fuzzy chugurma hats; to the right, embroidered textiles, ceramics and brass trinkets. You’ll have to make some choices as you maneuver through the Itchan Kala’s lanes. My recommendation? Head to Kunya Ark (the fortress) and whet your visual appetite at the Summer Mosque, with its brilliant blue tiles, adorned with calligraphy and mesmeric patterns. Do a quick spin of the mint museum next door, then climb up to the Kunya Ark watchtower to get a sense of the place from above. (You might be inspired to come back at sunset – but know that it will be too crowded. And everyone knows sunsets are ugly with too many people to watch them.)
Next, head to Pahlavon Mahmud Mausoleum for more elaborate tile work. Mahmud was a leather worker turned wrestler and poet; legend has it he freed enslaved people when he won a wrestling match in India. Take your time here if you can, and be sure to look up at the domes, one in each of the two chambers. Walk on to the Juma Mosque, with its 200-some wooden columns carved from black elm, walnut and chinar, some dating back to the 10th century. Finally, head to the Tosh-Hovli Palace – easily the pièce de résistance, thanks to its intricate blue tile work and harem wing. If you’re a shopper, you’ll find ceramics and embroidered linens here.
If you can, squeeze in a trip to the Gastronom grocery store across from the Ark (where I picked up snacks and vodka). There’s also a ton more to see and do in the walled city before sunset (when almost everyone packs up), including a silk-carpet workshop and ceramic studio.
Where to eat: Book a table at Cafe Zarafshon for lunch and enjoy the manty (Uzbek dumpling) demonstration before your food arrives. Opt to sit indoors if the weather’s unforgiving; indoors or out, wash your meat or pumpkin manty down with a chilled beer (Sarbast is the domestic go-to). For dinner, Terressa Cafe is a must. Order the lagman (noodles and beef) and soak in rooftop views of the city at night while a clarinetist covers Ed Sheeran.
Where to stay: Said Islom Khoja Hotel.
Day 4: On to Bukhara
How to spend the day: Whether you choose to get from Khiva to Bukhara by rail or road, you’ll spend at least six hours traveling across the Kyzylkum Desert. Aim to leave early (ideally before 8am) and plan for at least one highway rest stop (the Kizilqum Teahouse on the A-380 is the go-to for most tourist vans; skip the mains and just get the samsa, meat-filled pastries). If all goes to plan, you’ll reach Bukhara by late afternoon.
Once you’re checked into your hotel, make a beeline for Ulugbek Madrasah, built in 1417 and the oldest preserved madressa in Central Asia. Across is the Abdul Aziz Khan Madrasah, which once contained student rooms but is today packed with souvenir shops. As you walk around browsing everything from bed sheets to secondhand watches, look up at the ornate architectural stalactites that hang from the ceilings. Walk through the bazaar and pause at the Ikromov Samadjon Knife Shop, a family-owned workshop that sells exquisite stork-shaped embroidery scissors and (yes) knives. Finally, try to make it to Kalon Mosque for a quick tour of this 16th-century site before watching the sunset hues fall on the 47m-tall (154ft-tall) Kalon Minaret, outside the mosque and across the Miri Arab Madrasah.
Where to eat: With ample alfresco seating, trees in its courtyard and great food, Old Bukhara Restaurant is the dinner spot (book ahead). Definitely get the shakarob (Uzbek tomato salad) and walnut baklava.
Where to stay: Hotel Shahriston is in the heart of historic Bukhara, and walking distance from the Miri Arab Madrasah complex and the hammam. The hotel also has its own hammam and a resident cat (once again delighting this cat lady), in addition to a great breakfast spread and warm English-speaking staff. 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(27): array_map(Array, Array) #3 /code/web/modules/custom/aws_event_pipeline/src/Mappers/v1/ArticleMapper.php(126): 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('5935057', 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}
Day 5: Sauntering through a Silk Road city
How to spend the day: Walk through the trading domes and past the caravanserai to the Magokhi Attori, a carpet museum occupying a space that’s believed to be Central Asia’s oldest mosque. Next, head to the Nadir Divan Begi Khanaka, a Sufi center and museum where you can get a sense of Bukhara’s historic water-supply system. Admire the peacocks depicted in the tiled facade as you walk past the Nadir Divan Begi Madrasah. If you fancy a ceramics master class, head to Salim’s workshop in the Nugay caravanserai; you can also use this time to wander through by-lanes or get in some shopping.
After lunch, head to the Bolo-Hauz Mosque (best photographed from across the pool in front), then cross the road and tour the Ark (fortress) of Bukhara. This is also where you’ll get the best views of the city, before you continue by foot to the Ismail Samani Mausoleum. Built in the 10th century, the Samanid-family tomb has an architecturally enchanting facade, made of geometric terracotta bricks that make the structure look woven in sunlight. If you’re up to it, walk onward to the Chashma-Ayub Mausoleum, which has a fountain with reputed healing properties. Finally, finish the day with an appointment at a hammam (I had heard that Hammom Kunjak is overrated – but my complexion was complimented by a stranger after my appointment, so I maintain otherwise). If you’re feeling up to it, you can head back to Nadir Divan Begi Madrasah for a touristy but lively cultural performance and fashion show (book ahead).
Where to eat: Grab lunch at Chalet, a quaint alfresco spot with a menu best described as cuisine-agnostic (primarily continental European and Uzbek). Expect to award bonus points for the friendly tuxedo cat who’ll sit on your lap once you’ve finished your meal.
Where to stay: Hotel Shahriston.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(27): array_map(Array, Array) #3 /code/web/modules/custom/aws_event_pipeline/src/Mappers/v1/ArticleMapper.php(126): 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('5935057', 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}
Day 6: A Bukhara finale, before zipping off to Samarkand
How to spend the day: Sprint straight to Sitorai Mohi Hosa, the last emir’s summer residence, to learn about the always-entertaining lives of the rich and the royal (don’t skip the clothing exhibit), before heading to Baha-ud-Din Naqshband complex. Named after the founder of the Naqshbandi Sufi order, this spot is relatively free of tourists (though not of pilgrims), and also houses a necropolis for a few of Temur’s ancestors. After lunch, make a quick stop at Chor Minor (literally “four minarets”), whose unique architectural style was supposedly inspired by the Charminar in Hyderabad, India.
Next, it’s off the station to catch the high-speed Afrosiyob train, which pulls into Samarkand Station about 90 minutes later, by 7:30pm. Before checking into your hotel, stop by the Gur-e-Amir Mausoleum complex (Amir Temur’s mausoleum) – lit up and tourist-free – and the Registan for the son et lumière – lit up and swarming with tourists.
Where to eat: Take a plov (pilaf) master class at Davlat House (our session was with Nellya Khamraeva, who’s been cooking plov since she was a child). Once you’ve enjoyed the fruits (or plov) of your labor, wrap up the meal with tea and chak-chak, a crispy-chewy sweet treat.
Where to stay: The Savitsky Plaza is a swank hotel with spacious rooms, right off Samarkand’s Rowing Canal.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(27): array_map(Array, Array) #3 /code/web/modules/custom/aws_event_pipeline/src/Mappers/v1/ArticleMapper.php(126): 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('5935057', 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}
Day 7: Sightseeing in Samarkand
How to spend the day: Start the day with a tour of the Gur-e-Amir Mausoleum. Really take your time here, soaking in the wondrousness of the paper maché muqarnas (roof niches) and onyx in the tomb’s interiors. Then drive to Registan, once the center of the Timurid Samarkand, where you’ll see several impressive buildings including the golden Tilla-Kari Medressa (the cover of our Central Asia guide). Walk or hop in a golf cart to the Bibi Khanym Mosque, and prepare to be regaled with a tale of the love story between Temur’s wife Bibi Khanym and the architect who built the mosque, before spending some time at the nearby Siyob (Siob) Bazaar. After lunch, head to Shah-i-Zinda, a necropolis where you’ll see exquisite cerulean–Prussian blue tile work from the 14th century. (This is an important Islamic pilgrimage site, so heed the “no photography” signs and dress respectfully.)
Last up: Ulugbek’s Observatory, which has an underground meridian arc from the days of Ulugbek and a modest museum (download the NazzAR App to fully immerse yourself in the displays here). Then it’s back to Tashkent via the Afrosiyob train, and onward home.
Where to eat: Samarkand Restaurant’s menu is stellar – get the local-style non, cauliflower fritters, kebabs and walnut baklava for dessert. The decor varies from room to room; the one with the green sofas, ornate ceilings and potted palms has caged birds.
Extra time? Add another night in Samarkand – there’s an impossible number of things to see here.
Akanksha Singh traveled to Uzbekistan with the support of Exodus Adventure Travels. Lonely Planet staff do not accept freebies in exchange for positive coverage.