All
Back to the bush: A tailor-made safari through Timbavati and Klaserie
18th August 2026
Client holidays, Safari +1
Julian and his wife, Jane, recently returned from their second South Africa safari with Holiday Architects, spending five nights at Bateleur and five at nThambo Tree Camp, in the Timbavati and Klaserie private game reserves. Our travellers are at the heart of everything we do, and hearing about a trip like this straight from them means more to us than any review ever could. Here's a look at their adventure, shared mostly in their own words. A quick note on the photography: every image in this piece was taken by Julian himself, out on the same game drives he describes below. Capturing wildlife this wonderfully takes as much patience as skill, and we're grateful he let us share his work with you here. A zebra spotted in the Timbavati Reserve, taken by Julian A second trip, no question While some travellers like to shop around for every trip, Julian knew exactly who to come back to for his South Africa holiday : Array ( [0] => stdClass Object ( [content] => "We recently returned from South Africa on our second safari organised by Holiday Architects. We chose Holiday Architects after they organised our first trip a couple of years ago and we loved that one so much that there was no question about using them for this trip." [name] => Julian Lane [location] => [text_color] => [quote_color] => [admin_label] => Item 1 ) ) “ "We recently returned from South Africa on our second safari organised by Holiday Architects. We chose Holiday Architects after they organised our first trip a couple of years ago and we loved that one so much that there was no question about using them for this trip." Julian Lane ” This particular trip wasn't all plain sailing. Flooding forced a change of dates just months before they were due to fly, the kind of thing that could easily have unravelled the whole plan entirely (or caused an exceptional amount of stress if you were planning the trip yourself!). Instead, our South Africa destination expert, Catherine Williams , pulled the itinerary apart and put it back together for June, without losing what made it worth booking in the first place. Julian later wrote in a five-star Trustpilot review that Catherine "was brilliant at rearranging our trip to the greater Kruger from January to June, after the floods destroyed the trip." The result was five nights at Bateleur Safari Camp , in the Timbavati Private Nature Reserve, and five at nThambo Tree Camp , in the neighbouring Klaserie Private Nature Reserve. Lion crossing the road in the Timbavati Reserve, taken by Julian Array ( [0] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_4045-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Bateleur Safari Camp, taken by Julian ) [1] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_4192-dxo_deepprime-xd3.jpg [height] => 854 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Elephant, taken by Julian ) [2] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_4292-dxo_deepprime-xd3.jpg [height] => 1000 [width] => 843 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Lion, taken by Julian ) [3] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_4213-dxo_deepprime-xd3.jpg [height] => 818 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Cape buffalo, one of South Africa's Big Five, taken by Julian ) ) Show More @media (min-width: 1200px) { #zen-gallery-expand { display: none; } } @media (min-width: 768px) and (max-width: 1199px) { #zen-gallery-expand { display: none; } } @media (max-width: 767px) { #zen-gallery-expand { display: none; } } document.addEventListener("DOMContentLoaded", function() { const videos = document.querySelectorAll(".zen-gallery-video"); videos.forEach(function(img, index) { if (!img.getAttribute("src") || img.getAttribute("src") === "/") { img.src = "https://placehold.co/600x400/transparent/000?text=Video+thumbnail+loading..."; const video = document.createElement("video"); video.crossOrigin = "anonymous"; video.muted = true; video.preload = "auto"; const videoUrl = decodeURIComponent(img.dataset.videoSrc); let isProcessing = false; let errorTimeout; errorTimeout = setTimeout(() => { if (!isProcessing) { video.remove(); } }, 5000); video.addEventListener("canplay", function() { if (isProcessing) return; isProcessing = true; clearTimeout(errorTimeout); video.currentTime = 0.1; // just a tiny bit in }); video.addEventListener("error", function(e) { console.error("Video load error:", e.target.error.message); video.remove(); img.src = "https://placehold.co/600x400/EEE/31343C?text=Browser+cannot+play+video+:(+"; }); video.addEventListener("seeked", function() { if (!isProcessing) return; const canvas = document.createElement("canvas"); canvas.width = video.videoWidth; canvas.height = video.videoHeight; try { canvas.getContext("2d").drawImage(video, 0, 0); const dataUrl = canvas.toDataURL("image/jpeg", 0.8); img.setAttribute("src", dataUrl); } catch(e) { console.error("Failed to generate thumbnail:", e); } video.remove(); canvas.remove(); }); // Add media fragment to only load first second video.src = `${videoUrl}#t=0,1`; video.load(); } }); }); document.addEventListener("click", function(e) { if (e.target.matches(".zen-gallery-expand")) { const items = document.querySelectorAll(".zen-gallery-item"); items.forEach((item, index) => { if (index >= 12) { item.classList.toggle("d-xl-none"); } if (index >= 9) { item.classList.toggle("d-md-none"); item.classList.toggle("d-xl-block"); } if (index >= 6) { item.classList.toggle("d-none"); item.classList.toggle("d-md-block"); } }); const anyHidden = Array.from(items).some(item => item.classList.contains("d-none") || item.classList.contains("d-md-none") || item.classList.contains("d-xl-none") ); e.target.textContent = anyHidden ? "Show More" : "Show Less"; if (anyHidden) { const expandButton = document.getElementById("zen-gallery-expand"); const rect = expandButton.getBoundingClientRect(); const scrollTop = window.pageYOffset || document.documentElement.scrollTop; window.scrollTo({ top: rect.top + scrollTop - 200, behavior: "instant" }); } } }); Both Timbavati and Klaserie sit on the western edge of Kruger National Park , and since 1993, there have been no fences between them – just open wilderness as far as the eye can see. That means the wildlife Julian and his wife spotted weren't limited to one reserve, but could roam freely across nearly 2 million hectares of connected bush. Timbavati, protected since 1956, is the only place in the world where white lions have ever been seen in the wild. Klaserie is the largest privately owned reserve in the Greater Kruger, and its low guest numbers mean you get those magical, uncrowded sightings that safari dreams are made of. The elephant at the pool Imagine this: the sky shifting from orange to deep violet over the reserve, dinner set out on an open deck, lanterns glowing as the bush darkens beyond the treeline. There's nothing between your table and the wild – just firelight and open ground, exactly what makes a stay here so special. Then, out of the darkness, something stirs. Not just a distant shape, but a full-grown bull elephant, wandering in with the last of the light, close enough that you can hear him breathe. Up close with an elephant visitor, taken by Julian Array ( [0] => stdClass Object ( [content] => "Sitting out having dinner at night as a large adult bull elephant drank from the swimming pool just a few feet from us was something we will remember forever." [name] => Julian Lane [location] => [text_color] => [quote_color] => [admin_label] => Item 1 ) ) “ "Sitting out having dinner at night as a large adult bull elephant drank from the swimming pool just a few feet from us was something we will remember forever." Julian Lane ” There's a particular kind of quiet that follows a moment like that: cutlery set down, conversation forgotten, everyone at the table watching the same thing at once. It's the sort of encounter no itinerary can promise, but it's exactly the kind of moment our destination experts are trying to make possible when they choose an unfenced camp over a fenced one. A wildlife documentary's highlight reel Ask most safari guests what they saw and you'll get the Big Five, ticked off like a shopping list. Ask Julian, and the list reads more like a wildlife documentary's highlight reel, the kind of sightings guides wait years for, and guests remember for a lifetime: Array ( [0] => stdClass Object ( [content] => "Watching an African Snake Eagle eating a Mozambican Spitting Cobra, seeing a big bull elephant in full musth approach the vehicle, watching hippos mating and lions embracing each member of their pride, these are just simple examples of the kind of adventures that we experienced." [name] => Julian Lane [location] => [text_color] => [quote_color] => [admin_label] => Item 1 ) ) “ "Watching an African Snake Eagle eating a Mozambican Spitting Cobra, seeing a big bull elephant in full musth approach the vehicle, watching hippos mating and lions embracing each member of their pride, these are just simple examples of the kind of adventures that we experienced." Julian Lane ” Cheetah in the Klaserie Reserve, taken by Julian Array ( [0] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3455-dxo_deepprime-3.jpg [height] => 679 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Male ostrich, taken on safari by Julian ) [1] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3569-dxo_deepprime-xd3.jpg [height] => 806 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Male kudu, taken by Julian ) [2] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3484-dxo_deepprime-3.jpg [height] => 1000 [width] => 684 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => top [caption] => Giraffe with his reflection, taken by Julian ) [3] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3669-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Warthog, taken by Julian ) ) Show More @media (min-width: 1200px) { #zen-gallery-expand { display: none; } } @media (min-width: 768px) and (max-width: 1199px) { #zen-gallery-expand { display: none; } } @media (max-width: 767px) { #zen-gallery-expand { display: none; } } document.addEventListener("DOMContentLoaded", function() { const videos = document.querySelectorAll(".zen-gallery-video"); videos.forEach(function(img, index) { if (!img.getAttribute("src") || img.getAttribute("src") === "/") { img.src = "https://placehold.co/600x400/transparent/000?text=Video+thumbnail+loading..."; const video = document.createElement("video"); video.crossOrigin = "anonymous"; video.muted = true; video.preload = "auto"; const videoUrl = decodeURIComponent(img.dataset.videoSrc); let isProcessing = false; let errorTimeout; errorTimeout = setTimeout(() => { if (!isProcessing) { video.remove(); } }, 5000); video.addEventListener("canplay", function() { if (isProcessing) return; isProcessing = true; clearTimeout(errorTimeout); video.currentTime = 0.1; // just a tiny bit in }); video.addEventListener("error", function(e) { console.error("Video load error:", e.target.error.message); video.remove(); img.src = "https://placehold.co/600x400/EEE/31343C?text=Browser+cannot+play+video+:(+"; }); video.addEventListener("seeked", function() { if (!isProcessing) return; const canvas = document.createElement("canvas"); canvas.width = video.videoWidth; canvas.height = video.videoHeight; try { canvas.getContext("2d").drawImage(video, 0, 0); const dataUrl = canvas.toDataURL("image/jpeg", 0.8); img.setAttribute("src", dataUrl); } catch(e) { console.error("Failed to generate thumbnail:", e); } video.remove(); canvas.remove(); }); // Add media fragment to only load first second video.src = `${videoUrl}#t=0,1`; video.load(); } }); }); document.addEventListener("click", function(e) { if (e.target.matches(".zen-gallery-expand")) { const items = document.querySelectorAll(".zen-gallery-item"); items.forEach((item, index) => { if (index >= 12) { item.classList.toggle("d-xl-none"); } if (index >= 9) { item.classList.toggle("d-md-none"); item.classList.toggle("d-xl-block"); } if (index >= 6) { item.classList.toggle("d-none"); item.classList.toggle("d-md-block"); } }); const anyHidden = Array.from(items).some(item => item.classList.contains("d-none") || item.classList.contains("d-md-none") || item.classList.contains("d-xl-none") ); e.target.textContent = anyHidden ? "Show More" : "Show Less"; if (anyHidden) { const expandButton = document.getElementById("zen-gallery-expand"); const rect = expandButton.getBoundingClientRect(); const scrollTop = window.pageYOffset || document.documentElement.scrollTop; window.scrollTo({ top: rect.top + scrollTop - 200, behavior: "instant" }); } } }); Sightings like these are part of why Klaserie has a reputation among safari specialists as one of South Africa's better-kept secrets: fewer vehicles per sighting than the busier parts of Kruger, and guides who have the time to wait out a moment and the magic of each encounter, rather than move on to the next radio call. The guides and the quiet Julian is clear about what made the difference, and it wasn't just the animals on the checklist: Array ( [0] => stdClass Object ( [content] => "Both camps are fantastic and provide a wonderfully personal service. The guides and spotters are superb and really make these trips so wonderful. It's not just about seeing the famous animals; the guides will find you the less common animals, birds and plants, making you really feel at one with the bush." [name] => Julian Lane [location] => [text_color] => [quote_color] => [admin_label] => Item 1 ) ) “ "Both camps are fantastic and provide a wonderfully personal service. The guides and spotters are superb and really make these trips so wonderful. It's not just about seeing the famous animals; the guides will find you the less common animals, birds and plants, making you really feel at one with the bush." Julian Lane ” A big part of the magic is the scale. nThambo Tree Camp, tucked into the Klaserie bush about fifty minutes from Hoedspruit Airport, has just five raised, canvas-sided chalets and takes a maximum of ten guests at a time, so game drives stay small, and guides can go at their own pace rather than a group's. Bateleur runs on a similar principle within Timbavati, solar-powered, low-impact, and built around twice-daily drives and guided bush walks with armed rangers. It's a set-up that leaves room for exactly the kind of moment Julian remembers most, the one where nothing was scheduled to happen at all... No radio chatter, no pressure to chase the next sighting – just you, your guide, and the bush coming alive all around you. Jane on safari, taken by Julian Array ( [0] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3637-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => White rhinoceros, taken by Julian ) [1] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3781-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Male double-collared sunbird, taken by Julian ) [2] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3878-dxo_deepprime-xd3.jpg [height] => 415 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Mongooses crossing the road, taken by Julian ) [3] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_4021-dxo_deepprime-xd3.jpg [height] => 1000 [width] => 822 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Big ears for a little elephant, taken by Julian ) ) Show More @media (min-width: 1200px) { #zen-gallery-expand { display: none; } } @media (min-width: 768px) and (max-width: 1199px) { #zen-gallery-expand { display: none; } } @media (max-width: 767px) { #zen-gallery-expand { display: none; } } document.addEventListener("DOMContentLoaded", function() { const videos = document.querySelectorAll(".zen-gallery-video"); videos.forEach(function(img, index) { if (!img.getAttribute("src") || img.getAttribute("src") === "/") { img.src = "https://placehold.co/600x400/transparent/000?text=Video+thumbnail+loading..."; const video = document.createElement("video"); video.crossOrigin = "anonymous"; video.muted = true; video.preload = "auto"; const videoUrl = decodeURIComponent(img.dataset.videoSrc); let isProcessing = false; let errorTimeout; errorTimeout = setTimeout(() => { if (!isProcessing) { video.remove(); } }, 5000); video.addEventListener("canplay", function() { if (isProcessing) return; isProcessing = true; clearTimeout(errorTimeout); video.currentTime = 0.1; // just a tiny bit in }); video.addEventListener("error", function(e) { console.error("Video load error:", e.target.error.message); video.remove(); img.src = "https://placehold.co/600x400/EEE/31343C?text=Browser+cannot+play+video+:(+"; }); video.addEventListener("seeked", function() { if (!isProcessing) return; const canvas = document.createElement("canvas"); canvas.width = video.videoWidth; canvas.height = video.videoHeight; try { canvas.getContext("2d").drawImage(video, 0, 0); const dataUrl = canvas.toDataURL("image/jpeg", 0.8); img.setAttribute("src", dataUrl); } catch(e) { console.error("Failed to generate thumbnail:", e); } video.remove(); canvas.remove(); }); // Add media fragment to only load first second video.src = `${videoUrl}#t=0,1`; video.load(); } }); }); document.addEventListener("click", function(e) { if (e.target.matches(".zen-gallery-expand")) { const items = document.querySelectorAll(".zen-gallery-item"); items.forEach((item, index) => { if (index >= 12) { item.classList.toggle("d-xl-none"); } if (index >= 9) { item.classList.toggle("d-md-none"); item.classList.toggle("d-xl-block"); } if (index >= 6) { item.classList.toggle("d-none"); item.classList.toggle("d-md-block"); } }); const anyHidden = Array.from(items).some(item => item.classList.contains("d-none") || item.classList.contains("d-md-none") || item.classList.contains("d-xl-none") ); e.target.textContent = anyHidden ? "Show More" : "Show Less"; if (anyHidden) { const expandButton = document.getElementById("zen-gallery-expand"); const rect = expandButton.getBoundingClientRect(); const scrollTop = window.pageYOffset || document.documentElement.scrollTop; window.scrollTo({ top: rect.top + scrollTop - 200, behavior: "instant" }); } } }); Array ( [0] => stdClass Object ( [content] => "When our guide just turned off the engine and sat listening to the sounds of the bush, both in the day and at night, it was truly special." [name] => Julian Lane [location] => [text_color] => [quote_color] => [admin_label] => Item 1 ) ) “ "When our guide just turned off the engine and sat listening to the sounds of the bush, both in the day and at night, it was truly special." Julian Lane ” Array ( [0] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_4443-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Yellow-footed squirrel, captured by Julian ) [1] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3999-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Searching for signs of wildlife in the bush, taken by Julian ) [2] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3936-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Blue wildebeest ) [3] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3508-dxo_deepprime-3.jpg [height] => 1000 [width] => 667 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Jane, enjoying a bit of relaxation between safari adventures ) ) Show More @media (min-width: 1200px) { #zen-gallery-expand { display: none; } } @media (min-width: 768px) and (max-width: 1199px) { #zen-gallery-expand { display: none; } } @media (max-width: 767px) { #zen-gallery-expand { display: none; } } document.addEventListener("DOMContentLoaded", function() { const videos = document.querySelectorAll(".zen-gallery-video"); videos.forEach(function(img, index) { if (!img.getAttribute("src") || img.getAttribute("src") === "/") { img.src = "https://placehold.co/600x400/transparent/000?text=Video+thumbnail+loading..."; const video = document.createElement("video"); video.crossOrigin = "anonymous"; video.muted = true; video.preload = "auto"; const videoUrl = decodeURIComponent(img.dataset.videoSrc); let isProcessing = false; let errorTimeout; errorTimeout = setTimeout(() => { if (!isProcessing) { video.remove(); } }, 5000); video.addEventListener("canplay", function() { if (isProcessing) return; isProcessing = true; clearTimeout(errorTimeout); video.currentTime = 0.1; // just a tiny bit in }); video.addEventListener("error", function(e) { console.error("Video load error:", e.target.error.message); video.remove(); img.src = "https://placehold.co/600x400/EEE/31343C?text=Browser+cannot+play+video+:(+"; }); video.addEventListener("seeked", function() { if (!isProcessing) return; const canvas = document.createElement("canvas"); canvas.width = video.videoWidth; canvas.height = video.videoHeight; try { canvas.getContext("2d").drawImage(video, 0, 0); const dataUrl = canvas.toDataURL("image/jpeg", 0.8); img.setAttribute("src", dataUrl); } catch(e) { console.error("Failed to generate thumbnail:", e); } video.remove(); canvas.remove(); }); // Add media fragment to only load first second video.src = `${videoUrl}#t=0,1`; video.load(); } }); }); document.addEventListener("click", function(e) { if (e.target.matches(".zen-gallery-expand")) { const items = document.querySelectorAll(".zen-gallery-item"); items.forEach((item, index) => { if (index >= 12) { item.classList.toggle("d-xl-none"); } if (index >= 9) { item.classList.toggle("d-md-none"); item.classList.toggle("d-xl-block"); } if (index >= 6) { item.classList.toggle("d-none"); item.classList.toggle("d-md-block"); } }); const anyHidden = Array.from(items).some(item => item.classList.contains("d-none") || item.classList.contains("d-md-none") || item.classList.contains("d-xl-none") ); e.target.textContent = anyHidden ? "Show More" : "Show Less"; if (anyHidden) { const expandButton = document.getElementById("zen-gallery-expand"); const rect = expandButton.getBoundingClientRect(); const scrollTop = window.pageYOffset || document.documentElement.scrollTop; window.scrollTo({ top: rect.top + scrollTop - 200, behavior: "instant" }); } } }); Julian's words, in full Julian left this review on Trustpilot , after the trip: Array ( [0] => stdClass Object ( [content] => "This is the second time I have booked a holiday with HA, and it won't be the last. The service from beginning to end is simply excellent, starting with the initial phone call where information gathering takes place on what you want from your holiday, through to refining the smallest details so that your trip is exactly what YOU want. This is not a package tour where one trip fits all; this is a bespoke service where the holiday is planned around what you, the customer, want. Special mention has to go to Catherine Williams, the Africa consultant, who was brilliant at rearranging our trip to the greater Kruger from January to June, after the floods destroyed the trip. I wouldn't hesitate to recommend Holiday Architects to anyone wanting a trip tailor-made to them. Our location was the Timbavati and Klaserie private game reserves." [name] => Julian Lane [location] => [text_color] => [quote_color] => [admin_label] => Item 1 ) ) “ "This is the second time I have booked a holiday with HA, and it won't be the last. The service from beginning to end is simply excellent, starting with the initial phone call where information gathering takes place on what you want from your holiday, through to refining the smallest details so that your trip is exactly what YOU want. This is not a package tour where one trip fits all; this is a bespoke service where the holiday is planned around what you, the customer, want. Special mention has to go to Catherine Williams, the Africa consultant, who was brilliant at rearranging our trip to the greater Kruger from January to June, after the floods destroyed the trip. I wouldn't hesitate to recommend Holiday Architects to anyone wanting a trip tailor-made to them. Our location was the Timbavati and Klaserie private game reserves." Julian Lane ” A lionness and her young, taken by Julian Array ( [0] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_4405-dxo_deepprime-xd3.jpg [height] => 785 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Jane in her safari gear, taken by Julian ) [1] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_4418-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Happy hour, done right. Taken by Julian ) [2] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_4362-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Hyena, taken by Julian ) [3] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_4280-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => A snoozy lion, captured by Julian ) [4] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3579-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => A safari sunset ) [5] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3526-dxo_deepprime-xd3.jpg [height] => 667 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Making fire at camp ) [6] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3480-dxo_deepprime-3.jpg [height] => 1000 [width] => 905 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Zebras spotted, taken by Julian ) [7] => stdClass Object ( [title] => Gallery Item [item_type] => image [full] => stdClass Object ( [src] => images/2026/08/11/0z8_3298-dxo_deepprime-3.jpg [height] => 803 [width] => 1000 [alt] => ) [video] => stdClass Object ( [src] => ) [thumbnail] => stdClass Object ( [src] => ) [video_aria_label] => Hit space to toggle, play or pause video [video_loop] => 0 [image_focus] => center [caption] => Roaring lion, captured by Julian ) ) Show More @media (min-width: 1200px) { #zen-gallery-expand { display: none; } } @media (min-width: 768px) and (max-width: 1199px) { #zen-gallery-expand { display: none; } } @media (max-width: 767px) { #zen-gallery-expand { display: block; } } document.addEventListener("DOMContentLoaded", function() { const videos = document.querySelectorAll(".zen-gallery-video"); videos.forEach(function(img, index) { if (!img.getAttribute("src") || img.getAttribute("src") === "/") { img.src = "https://placehold.co/600x400/transparent/000?text=Video+thumbnail+loading..."; const video = document.createElement("video"); video.crossOrigin = "anonymous"; video.muted = true; video.preload = "auto"; const videoUrl = decodeURIComponent(img.dataset.videoSrc); let isProcessing = false; let errorTimeout; errorTimeout = setTimeout(() => { if (!isProcessing) { video.remove(); } }, 5000); video.addEventListener("canplay", function() { if (isProcessing) return; isProcessing = true; clearTimeout(errorTimeout); video.currentTime = 0.1; // just a tiny bit in }); video.addEventListener("error", function(e) { console.error("Video load error:", e.target.error.message); video.remove(); img.src = "https://placehold.co/600x400/EEE/31343C?text=Browser+cannot+play+video+:(+"; }); video.addEventListener("seeked", function() { if (!isProcessing) return; const canvas = document.createElement("canvas"); canvas.width = video.videoWidth; canvas.height = video.videoHeight; try { canvas.getContext("2d").drawImage(video, 0, 0); const dataUrl = canvas.toDataURL("image/jpeg", 0.8); img.setAttribute("src", dataUrl); } catch(e) { console.error("Failed to generate thumbnail:", e); } video.remove(); canvas.remove(); }); // Add media fragment to only load first second video.src = `${videoUrl}#t=0,1`; video.load(); } }); }); document.addEventListener("click", function(e) { if (e.target.matches(".zen-gallery-expand")) { const items = document.querySelectorAll(".zen-gallery-item"); items.forEach((item, index) => { if (index >= 12) { item.classList.toggle("d-xl-none"); } if (index >= 9) { item.classList.toggle("d-md-none"); item.classList.toggle("d-xl-block"); } if (index >= 6) { item.classList.toggle("d-none"); item.classList.toggle("d-md-block"); } }); const anyHidden = Array.from(items).some(item => item.classList.contains("d-none") || item.classList.contains("d-md-none") || item.classList.contains("d-xl-none") ); e.target.textContent = anyHidden ? "Show More" : "Show Less"; if (anyHidden) { const expandButton = document.getElementById("zen-gallery-expand"); const rect = expandButton.getBoundingClientRect(); const scrollTop = window.pageYOffset || document.documentElement.scrollTop; window.scrollTo({ top: rect.top + scrollTop - 200, behavior: "instant" }); } } }); Still as good, the second time This was a trip rebuilt from scratch just five months before departure, and it still ran so smoothly that Julian's already thinking about his third adventure with us. That's not down to luck – it's the difference you get when you have a real conversation with a destination expert, rather than just filling in a form or flicking through a brochure. Julian's own summary of the trip is hard to improve on: Array ( [0] => stdClass Object ( [content] => "Accommodation was its usual high standard, as was the food, and all the staff helped to make our trip so good. Holiday Architects did a superb job of organising the entire trip, which went so smoothly, and when we are ready for our next one, we will be using them again." [name] => Julian Lane [location] => [text_color] => [quote_color] => [admin_label] => Item 1 ) ) “ "Accommodation was its usual high standard, as was the food, and all the staff helped to make our trip so good. Holiday Architects did a superb job of organising the entire trip, which went so smoothly, and when we are ready for our next one, we will be using them again." Julian Lane ” Ready to start planning your own South Africa holiday with time to experience the magic of Timbavati and Klaserie? Get in touch with one of our South Africa experts, and we'll help you plan something truly personal. (A big thank you once again to Julian Lane, for his wonderful words and photography!) That's Cat, our South Africa destination expert, out on a research trip of her own, with a white rhino grazing just a few metres from the vehicle. This is how she spends her time between client trips, back out in reserves like Timbavati and Klaserie, checking which camps, guides, and routes still deserve a place on our itineraries. When she helped rebuild Julian's trip around the floods, she wasn't working from a brochure; she was drawing on camps she's slept in and guides she already trusts. That's what a genuine destination expert looks like, and it's why every recommendation she makes comes from first-hand experience and real passion. Let's talk holidays South Africa safari holidays Cat recommends Ready for your own safari adventure? Get in touch with our experts today. ZEN_HOLIDAY_GET_A_QUOTE ZEN_HOLIDAY_TEL ZEN_HOLIDAY_OPEN_HOURS
Read More