Location: South Africa » Kwazulu Natal » South Coast » Hibiscus Coast » Pennington

Pennington is situated on the South Coast of KwaZulu Natal

Pennington developed with the railways arrival in early 1900, followed 15 years later by construction of a rudimentary whaling station at its northern extreme. As with many South Coast settlements, its name was derived from a land surveyor s fond memory of the Old Country and much criticised by certain historians and newspaper commentators of the day, who believed all these frontier districts should retain their traditional Zulu names.

Umdoni Park & Golf Course, Ocean View, Kelso, Sezela, Bazely Beach, Ifafa, Elysium and Mtwalume are popular resorts in the Pennington area

The tranquil seaside village, situated approximately 15 km south of Scottburgh, was originally a farm owned by the Pennington family. The town is located in one of the most beautiful woodland settings along the coast. The Pennington district comprises the pleasant villages of Ocean View, Kelso, Sezela, Bazley Beach, Ifafa Beach and Elysium.


How to get there

Durban 74 km, Johannesburg 650 km, Margate 60 km, Scottburgh 15 km

Average Rainfall – 1000 mm

Average Temperatures – Summer 19°c – 33°c; Winter 14°c – 23°c

Banks – NBS, Standard

Dams – Nkumbane


Braai Area - Available at a nominal fee for functions. Charcoal available


Arcade Games, Pool Table, Tuck Shop, Vending Machine, Playground, Skateboard Ramp

Postcards Lighthouse Tours

Tidal Pools - Pennington and Ifafa

Wine Circle

On the last Monday of the month. Join the ‘Fundis’ for wine tasting, snacks and enlightening conversation.



Fresh water, rock and surf. The Kelso Fly Anglers Club can help fly fishermen, fresh water or rock and surf anglers. For the ski boat fishermen there are clubs and launch sites at Pennington and Sezela. Bass fishing at Mkhumbane Dam, situated in the scenic valley, braai area and picnic spot boats record size large mouth Black Bass. Deep sea fishing tours. Fishing competition during the Easter Weekend.


Bird Watching

Nkomba Bird Sanctuary, Mkamati Dam, Ifafa Lagoon Estuary, Nkumbane Dam and the Elysium Wetland.


The Natal South Coast has always been a golfer’s mecca and Pennington can more than hold it’s own in this respect. The beautifully manicured Selborne Park and exquisite Umdoni Park Links Golf Course are complemented by the Sezela Country Club.

Scuba Diving

A short trip takes you to the world renowned Aliwal Shoal off Umkomaas.


Magnificent sites at Rocky Bay, Kelso, Umdoni Point, Ndasengane, Ifafa and Elysium

Windsurfing / Jet Skiing / Paragliding

An ideal venue for off shore windsurfing, jet skiing and paragliding is Bazley Beach.

Accommodation in and around Pennington

Leopard Tree Lodge    accommodation in Pennington
 Leopard Tree Lodge is currently changing ownership and no bookings  will be made untill further notice. Your patience is appreciated.  Ideally situated on the Sezela Sugar Estate on the popular South Coast of KwaZulu Natal, South... More

Lynton Hall    accommodation in Pennington
Lynton Hall is located between Selborne golf estate and Umdoni park golf course. We are in the middle of 85 hectares park. bird and butterfly paradise.The prestigious Lynton Hall and gardens are available for exclusive use for weddings, groups and co... More

Langlois Lodge (formerly Pennington House)    accommodation in Pennington
Welcome to Langlois Lodge - a newly converted residence located in the heart of a bird sanctuary on the South Coast of Kwa-Zulu Natal. Langlois Lodge, with its welcoming and spacious interior, is situated on a 4000 m² property that overlooks the... More

Selborne Hotel, Spa & Golf Estate    accommodation in Pennington
The Selborne Hotel, Spa & Golf Estate welcomes you to a very special lifestyle where all the cosmopolitan comforts and high standards of a refined and exclusive estate are only surpassed by the tranquil subtropical surroundings. This sub-tropical... More

The Bunkers    accommodation in Pennington
... More

Corians Pennington Caravan Resort    accommodation in Pennington
Ian and Cornelia welcome you to Corians where we will offer you friendly top class service in the Garden Park of the KwaZulu-Natal South Coast . The unspoilt beach is only a 2-minute walk away. Those with young families find our beach especially sati... More

The Zebra Lodge    accommodation in Pennington
... More

Pennington Beach Resort    accommodation in Pennington
Francois and Cecilia look forward to your arrival and trust that you will enjoy your holiday in the calm and peaceful atmosphere that prevails at their family resort. The resort is situated within walking dis... More

Error! URL does not start with http: ".$url : ""; return false; } else if (strlen($urlBits['host']) < 4 || strpos($urlBits['host'], ".") === false) { echo ($debug) ? "
  • Error! URL is incorrect: ".$url : ""; return false; } return true; } //Get the name of the cache file name function abGetCacheFileName($url, $debug=false) { $cacheFileName = md5($url).".cache"; echo ($debug) ? "
  • Cache file name for URL: ".$url." is ".$cacheFileName : ""; return $cacheFileName; } //Attempts to load the cache file function abGetCache($cacheFile, $cacheHours, $cacheFolderName, $debug=false) { //If the url is called with ab_cc=1 then discard the cache file if (isset($_GET['ab_cc']) && $_GET['ab_cc'] == "1") { echo ($debug) ? "
  • Clear cache invoked!" : ""; abRemoveCacheFile($cacheFile); unset($_GET['ab_cc']); return false; } if (!file_exists($cacheFile)) { echo ($debug) ? "
  • Error! Cache file does not exist! ".$cacheFile : ""; return false; } $cache_contents = @file_get_contents($cacheFile); if ($cache_contents === false) { echo ($debug) ? "
  • Error: Cache file is completely empty!" : ""; return false; } else { echo ($debug) ? "
  • Cache file contents".$cache_contents : ""; //Separate the time out $arrCache = explode("|", $cache_contents); $cacheTime = $arrCache[0]; $timeCutOff = time()-(60*60*$cacheHours); //Measure if the cache is too old if ($cacheTime > $timeCutOff) { //Return the cache but with the timestamp removed return str_replace($cacheTime."|", "", $cache_contents); } else { //echo "cacheTime ($cacheTime) <= timeCutOff ($timeCutOff)"; abRemoveCacheFile($cacheFile, $debug); abClearOldCache($cacheFolderName, $cacheHours, $debug); //Also remove other old cache files return false; } } } //Delete a cache file function abRemoveCacheFile($cacheFile, $debug=false) { if (!@unlink($cacheFile)) { echo ($debug) ? "
  • Error: Could not remove cache file: ".$cacheFile : ""; return false; } else { echo ($debug) ? "
  • Successfully removed the cache file: ".$cacheFile : ""; return true; } } //Loads links from the automaticbacklinks web site function abGetLinks($page, $accountCode, $v, $s, $debug=false) { //Make the URL $url = ""; $url = $url."?a=".$accountCode; $url = $url."&v=".$v; $url = $url."&s=".$s; $url = $url."&page=".urlencode($page); echo ($debug) ? "
  • Making call to AB: ".$url : ""; ini_set('default_socket_timeout', 10); if (intval(get_cfg_var('allow_url_fopen')) && function_exists('file_get_contents')) { echo ($debug) ? "
  • Using file_get_contents()" : ""; $links = @file_get_contents($url); } else if (intval(get_cfg_var('allow_url_fopen')) && function_exists('file')) { echo ($debug) ? "
  • Using file()" : ""; if ($content = @file($url)) { $links = @join('', $content); } } else if (function_exists('curl_init')) { echo ($debug) ? "
  • Using cURL()" : ""; $ch = curl_init ($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $links = curl_exec($ch); curl_close ($ch); } else { echo ($debug) ? "
  • Error: no method available to fetch links!" : ""; return false; } return $links; } //remove ab_cc etc. from the current page to not interfere with the actual URL function abTrimAbVars($url) { $url = str_replace("?ab_cc=1", "", $url); $url = str_replace("&ab_cc=1", "", $url); $url = str_replace("?ab_debug=8dac1be9c9bec7d0b0fca5412b482796", "", $url); $url = str_replace("&ab_debug=8dac1be9c9bec7d0b0fca5412b482796", "", $url); return $url; } //Get page function abGetPageUrl($debug=false) { $query = ""; $protocol = (isset($_SERVER['HTTPS'])) ? "https://" : "http://"; $host = $_SERVER['HTTP_HOST']; if ($_SERVER["REDIRECT_URL"]) { //Redirect if (isset($_SERVER['REDIRECT_SCRIPT_URI'])) { //Use URI - it is complete $page = $_SERVER['REDIRECT_SCRIPT_URI']; } else { //Use file and query $file = $_SERVER["REDIRECT_URL"]; if (isset($_SERVER['REDIRECT_QUERY_STRING'])) { $query = "?".$_SERVER['REDIRECT_QUERY_STRING']; } } } else { //No redirect if (isset($_SERVER['SCRIPT_URI'])) { //Use URI - it is complete $page = $_SERVER['SCRIPT_URI']; } else if (isset($_SERVER['REQUEST_URI'])) { //Use URI if (substr($_SERVER['REQUEST_URI'],0,4) == "http") { //Request URI has host in it $page = $_SERVER['REQUEST_URI']; } else { //Request uri lacks host $page = $protocol.$host.$_SERVER['REQUEST_URI']; } } else { $file = $_SERVER['SCRIPT_NAME']; if (isset($_SERVER['QUERY_STRING'])) { $query = "?".$_SERVER['QUERY_STRING']; } } } if (!$page) { $page = $protocol.$host.$file.$query; } $page = abTrimAbVars($page); echo ($debug) ? "
  • This page is reported as: ".$page : ""; return $page; } ?>