a:6:{i:0;s:30114:"						<section class="headBg theme2 ">
						<div class="wrap">
						<div class="page-title-inner fo"> 
						<div class="h1"><h1>Hampta Pass Trek Tour</h1></div>
						<p class="breadcrumb ar uu small"><a href="https://www.abctrekkers.in/" title="Home">Home</a>
						
													<b class="ffv p2px">&rsaquo;</b><a href="https://www.abctrekkers.in/trekking-packages.htm" title="Trekking Packages">Trekking Packages</a>
								
						<b class="ffv p2px">&rsaquo;</b> Hampta Pass Trek Tour</p>
						</div>
						</div>
						</section>
										<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					
											<p class="mb5px"><b>Duration :</b> 
						4 Nights / 5 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Manali</p>
												<p class="mb5px"><b>Price (Starting From) :</b> <span class="dif">On Request</span></p>
												<br />
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="https://www.abctrekkers.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Hampta Pass Trek Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px b large dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="186007"/>
						</form>
						
												</p>
											</td>
											<td class="p10px vat imgWidth200 w200px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w200px h200px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_19/557335/288311.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_19/557335/288311.jpg"  width="150" height="92"    alt="Hampta Pass Trek Tour" title="Hampta Pass Trek Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
													<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Tour Detail</p>
								</div>
													
								Region :- Himanchal <br />
Duration :- 4 Night 5 Days <br />
Grade :- Easy To Moderate <br />
Max Altitude :- 14,100 Ft. <br />
Approx Trekking Km :- 48 Kms.<br />
Himachal Pradesh is one of the most toured states in India. The state has beautiful pristine snow clad mountains which are a major source of tourist attraction. Tourists from all over the world come to this glorious, unpolluted and serene place to nurture their mind and soul and cherish an unfathomable nature's beauty. The word 'Hima' means snow in Sanskrit and hence the name Himachal Pradesh which means 'In the lap of Himalayas'. The mountains of the state are used for many adventure sports. One among them that is considerably being carried out here is trekking.<br />
<br />
With more than 200 defined trekking trails some of the famous trekking spots of Himachal Mountains are; Hampta Pass trek, Dhaulandhar (Triund Glacier)trek, Parvati valley trek, Bhabha pass trek, Sari Pass trek, Beas Kund trek, trek to Chamba and Pin Parvati, Kakeri lake trek etc.<br />
<br />
Hampta pass trek is considered the easiest and convenient of all treks in H.P. It might not be the most adrenalin rush giving or the most sought after trek, but definitely it is a trek that will leave you in awe of this beautiful place. The variation in the trails is enormous; scenic landscapes, open green pastures and meadows, glacial valleys, easy access and an exceptional, adventurous and hair raising crossing of the pass makes this trekking expedition to Hampta pass an exciting one.<br />
<br />
Generally, it takes 4 days to complete the Hampta pass trek, but one more day is further added to the itinerary so as to visit the well-known and striking Chandrataal, a high altitude alpine lake few hours from Chatru. The best months to trek are May and June and August through October. The reason why Hampta pass is famous trekking zone is snow; the pass has lump sum snow which draws more tourists.<br />
<br />
The nearest station is Manali. Therefore, the trip starts from Manali to Chika via Jobra. From Jobra the trek is undertaken by walk. This route comprises the first day. Balu ka Ghera is reached on the second day. You would cross amazing boulders, Gendrame and Rani Nallah on this day. The third day destination is Shea Goru from Balu ka Ghera via Hampta Pass. You will come across mind boggling and stupendous glaciers, cornice formation and snows all the way along. The maximum altitude will be reached on this day i.e. 14, 100 ft. Day four will start from Shea Goru and end up in Chatru. It is a steady descent on this day. You will witness the valleys of Lahual and Spiti and also the mountain ranges of Pir panjal and Spiti. On the same day you can also head to Chandra tal camp site and camp there for the night. The final day of the trek's route is from Chandra tal to Manali. From Chandra tal campsite you can visit the infamous chandratal lake, deepest amongst blue shades.<br />
<br />
One must carry necessary trekking gears like ankle support shoes and trekking poles which will make snow climbing easier.								</div>
								<br />
																<div class="headHr">
					            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
					            </div>
					            
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 1:</b> Manali to Chika via Jobra
										</p>
										<p class="aj">The trekking expedition starts from Manali to Jobra in vehicle. Manali is already at an elevation of 6, 700 ft above sea level. So, it is a good place to acclimatize your body before beginning the trek. It takes two hour and forty hairpin bends to arrive at Jobra. Jobra is at an altitude of 9, 800 ft. On the first day you will reach a height of 10, 100ft and cover up two to three hours of trek.<br />
<br />
The trek on foot initiates from Allain Guhugal Hydel Project junction. After crossing the main road, take the small path that leads to the forest of pine trees. You will also find other variety of trees like maple, deodar, toss and oak. The sight is refreshing. The slope that is supposed to be climbed is an easy one and not very steep. Twenty minutes into the trek, you will reach a bend that overlooks a lush green meadow strewed with small rocks. Enjoy the surrounding for a couple of minutes and head towards the meadow. The Rani nallah comes into view which flows directly in between the meadow. You will also see few sheep and cows grazing in the field. The sight looks exactly as if taken out from fairy tale. You can pass through the meadow or climb up the hill on the left hand side. Either way you will reach Chika which is at the end of the vast meadow. But, climbing the hill and descending down to Chika is a better and easier route. Chika camp site is a huge, spacious patch of green. The Rani River flowing in the middle makes this place perfect for setting up the tents.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 2:</b> Chika to Balu ka Ghera
										</p>
										<p class="aj">The next destination is Balu ka Ghera which is not visible from the Chika camp site, but you can make an idea as it falls to the right. Follow the left bank of the river that will appear at your right hand side. The trail leads the way to a slope of boulders and rough terrain. The path is an easy one and can be accomplished without any difficulty. You will find an entire stretch of the river's right bank lined up with amazing dwarf Rhododendron trees. These trees will cover the lower and the central region and cluster of silver birch trees cover up the upper region. Once you have reached the end of silver birch trees, wait a moment and look back to marvel the entire range of Dhauladhar snow clad peaks in front of you. The view is very picturesque. You will reach a clear stream waterfall to the left at a distant. Best place to fill in your bottles.<br />
<br />
After crossing the waterfall, the next route is towards the river to your left. You can go to the other side only by crossing the rivulet by wetting your feet. The water is super cold and will definitely prick your feet. You can also jump from one rock to another in the stream and get to the opposite side. You must have finished half of the day's trek when you enter Jwara. Jwara is a beautiful scenic sheltered valley; huge snow clad rocks at one side and the valley drops down to the river on the other side. You will feel like immersing yourself in the beauty of God's nature. You will find snows melting into the river and cattle grazing the land. In front of the picture is snow clad mountains and behind them lies the Hampta Pass. From here, the trail would be by the river side which will lead you to another rectangular valley. The path is covered with multi colored flowers. The last of the tree lines vanishes out of the sight and is left behind. It will take another half an hour or so to reach the end of the valley, which is the finishing part of Jwara. After Jwara, the path is a slope covered with snows and rocks. The end of the path is Balu ka Ghera, the name has nothing to do with the place. The place is covered with snow and greens whereas the name imply mound of sand. But it is said that this place was formed with the sands and dust deposited by the river. Balu ka Ghera campsite is a flat ground amidst the mountains that you will cross the next day to reach the pass. Balu ka Ghera is at an elevation of 11, 900 ft.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 3:</b> Balu Ka Ghera to Siagoru crossing Hampta Pass
										</p>
										<p class="aj">The day's trek encompasses 19 hours. You can split the journey in two halves, a steady ascent on moderate steep slope to Hampta Pass, thence a sharp descent to Sia Goru. The highest altitude will be achieved on this day at Hampta Pass (14, 100 ft). The day starts by heading towards the mountains you spotted the previous day. The trail is along the river side. The view is amazing, tiny yellow and orange flowers give a pleasant picture to the river. The river side trails takes you further to the base and then the actual climb to the Hampta pass takes place. It will take an hour to reach here. Another hour of walk will take you to the first plateau. In summer, the place is completely covered with thick fresh snow. Otherwise, it is just patches of snow everywhere. The Deo Tibet peak will fall right in front of you.<br />
<br />
You will reach another plateau and then to a ridge. It will take another half an hour to reach the ridge's end. Then from the first ridge trek further up to get on the second ridge. Hampta Pass is just a few meters and a bend away from the second ridge. The climb to Hampta Pass is a vertical one and is a hard mount. It will take about 15 minutes to reach the pass. Yes, by the time you reach there, you would be extremely tired but the site which enfolds in front of you is stunning. Enjoy for sometime in the pass, relish the beauty around, have your lunch and then get ready for the next descent to Siagoru.<br />
<br />
The descent is trickier than the journey to the pass. The decline is so steep that you would not be able to locate the base of the mountain, not even by craning your neck. The best possible way to get down is either by sliding down the slope or with the use of ropes for support. The route is a little meandering too. You will also spot Spiti from this point. In an hour and a half you will reach the base of the valley that will lead you to Siagoru. The valley is secured by snow clad mountains, and the side which is open is Siagoru's way. The trek to Siagoru is easy on flat land.<br />
<br />
The Siagoru camp site is also by the river side. Set your camps on the grounds and retire for the night with a feeling of contentment at the heart</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 4:</b> Siagoru to Chatru
										</p>
										<p class="aj">You will cover Sia goru to Chatru by foot and it will take approx 5 hours of easy downhill trek. Siagoru is placed at an altitude of 12, 900ft and Chatru at 11, 000ft. It is a gentle trek downhill from Siagoru. The trail here again is by the side of the river valley between mountain ranges. Chatru can be located at a distance. No vegetations can be seen in the barren mountains. The tricky part comes next.<br />
<br />
You will have to be careful as the trail might sometime lead you to edges of mountains and ridges. The route has slippery parts too. So, sure footed and careful navigation is required to go further. Nevertheless, the trek is not that difficult as it sounds. You will for sure enjoy the sliding and heart pumping mounting. Getting down the mountains will consume another two hours of your time. You will notice the Chandra River flowing below and a road that goes by its side. More than two Glaciers comes next which are to be crossed. The other side of the Glacier is Chatru, the next camping zone. Choose a location which has the river running around.<br />
<br />
Chatru is a magnificent camping site; it is a consensus of the three passes, Hampta, Rohtang and Spiti. The location is just about another two hours.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 5:</b> Chatru/ Chandratal to Manali
										</p>
										<p class="aj">If the weather permits and the roads are devoid of turbulence, then you can hike up to the marvellous Chandratal lake; also known as the moon lake. The sheer blue color of the lake has an amazing effect to the surroundings. Chandratal Lake is 70 km from Chatru camp site and few hours from Chandratal camp site. Vehicle can also be arranged from Manali to take you to Chandratal from Chatru and back to Manali. It will take seven hours to complete the journey and reach Manali.<br />
<br />
You can visit Chandratal only in the summer months. If not, you will have to drive directly from Chatru to Manali and skip Chandratal all together.</p>
										</td>
										</tr>
										</table>					
										</div>								<br />
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>CP (Room + Breakfast)</li>
																						<li>Hotel</li>
																						<li>Meals</li>
																						<li>Sightseeing</li>
																				<li>Transport: Manali to Manali.</li><li>
Meals while on trek (Veg. + Egg).</li><li>
All necessary entry fees and permits.</li><li>
Accommodation:- Guest house, Home stay, camping during Trek.</li><li>
Mountaineering qualified & professional trek </li><li>
Leader, guide, cook and Support staff.</li><li>
First aid medical kits.</li><li>
Trek equipments: Sleeping bag, mattress, tent (twin / Triple sharing), kitchen & dinning tent, toilet tent, utensils and crampon (if required).</li><li>
Porters/mules to carry central equipment.</li>
																	</ul>
								</div>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Exclusions</p>
								</div>
								
								<ul><li>Any kind of personal expenses.</li><li>
Food during the transit.</li><li>
Mules or porter to carry personal luggage.</li><li>
Insurance.</li><li>
Any kind of emergency evacuation charges</li><li>
Anything not specifically mentioned under the head.</li><li>
Uploading Bag packs</li></ul>
								</div>
																<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Payments Terms</p>
								</div>
								
								<ul><li>* Some Advance Percentage of total booking amount</li><li>
* Airfare/Transport fare to be paid full at one time in advance.</li></ul>					
								</div>
														<div class="data mt20px p15px">            
						<div class="mb7px"> 
						<p class="b xlarge mb10px dib">Cancellation &amp; Refund Policy</p>
						</div>
								
						<ul><li>Cancellation: If a trek is called off at the last moment due to a natural calamity/unforseen circumstances (like rains, earthquake, landslides, strike, bandh etc), ABC Trekker will issue a trek voucher for the full amount. The voucher can be redeemed for the same trek or another trek in the next one year.</li><li>
In case, you wish to cancel your trek, please login to your account and cancel. Cancellation requests will not be taken over phone or email.</li><li>
The cancellation charges are as under:</li><li>
Cancellations prior to 30 days from the start of the trek — full refund.</li><li>
Cancellation between 30 days and 20 days to the start of the trek — 50% refund.</li><li>
Cancellation less than 20 days to the start of the trek — no refund.</li><li>
Please note: In case of refund, there will be a deduction of 4% (Cancellation charges) from the total fee you have paid. Also, if you have opted for a trek insurance, the amount will not be refunded.</li><li>
Non-liability: ABC Trekker is not responsible for any loss/damage of your gears/equipment or other belongings on the trek. The trek fee includes all costs of the trek from the start and to the end of the trek</li></ul>			
						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="https://www.abctrekkers.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Hampta Pass Trek Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="186007"/>
						</form>
						</div>
						
										</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/packages-in-dehradun.htm" title="Packages in Dehradun">Dehradun</a> <b class="alpha50 bn small">(9)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/packages-in-haridwar.htm" title="Packages in Haridwar">Haridwar</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/packages-in-joshimath.htm" title="Packages in Joshimath">Joshimath</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/packages-in-ghangaria.htm" title="Packages in Ghangaria">Ghangaria</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/packages-in-kathgodam.htm" title="Packages in Kathgodam">Kathgodam</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/packages-in-govindghat.htm" title="Packages in Govindghat">Govindghat</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/packages-in-hemkunt-sahib.htm" title="Packages in Hemkund Sahib">Hemkund Sahib</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/packages-in-rishikesh.htm" title="Packages in Rishikesh">Rishikesh</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/packages-in-badrinath.htm" title="Packages in Badrinath">Badrinath</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/packages-in-yamunotri.htm" title="Packages in Yamunotri">Yamunotri</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="https://www.abctrekkers.in/packages-in-kedarnath.htm" title="Packages in Kedarnath">Kedarnath</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="https://www.abctrekkers.in/packages-in-auli.htm" title="Packages in Auli">Auli</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="https://www.abctrekkers.in/packages-in-leh-ladakh.htm" title="Packages in Leh Ladakh">Leh Ladakh</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="https://www.abctrekkers.in/packages-in-nainital.htm" title="Packages in Nainital">Nainital</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="https://www.abctrekkers.in/packages-in-sangla.htm" title="Packages in Sangla">Sangla</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="https://www.abctrekkers.in/packages-in-manali.htm" title="Packages in Manali">Manali</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="https://www.abctrekkers.in/packages-in-gangotri.htm" title="Packages in Gangotri">Gangotri</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="https://www.abctrekkers.in/packages-in-harsil.htm" title="Packages in Harsil">Harsil</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="https://www.abctrekkers.in/packages-in-rudraprayag.htm" title="Packages in Rudraprayag">Rudraprayag</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="https://www.abctrekkers.in/packages-in-chitkul.htm" title="Packages in Chitkul">Chitkul</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="https://www.abctrekkers.in/packages-in-medak.htm" title="Packages in Medak">Medak</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/religious-pilgrimage-holidays-catid.htm" title="Religious & Pilgrimage Packages">Religious & Pilgrimage</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/hill-station-holidays-catid.htm" title="Hill Station Packages">Hill Station</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/trekking-holidays-catid.htm" title="Trekking Packages">Trekking</a> <b class="alpha50 bn small">(14)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/valley-holidays-catid.htm" title="Valley Packages">Valley</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/lakes-rivers-holidays-catid.htm" title="Lakes & Rivers Packages">Lakes & Rivers</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="https://www.abctrekkers.in/camping-holidays-catid.htm" title="Camping Packages">Camping</a> <b class="alpha50 bn small">(1)</b></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
										<br />
						<div class="row1"> 
						<div class="col-1"> 
						<div class="mt30px">
						<p class="xxlarge b pb10px bdrB db"> Similar Tour Packages for Manali</p>
						</div>
						<br/>
						<div class="cf_3img">
						<ul class="lsn m0px p0px fo idv_eqheight cols_similar">
											
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='https://www.abctrekkers.in/tour-packages/manali-with-chandratal-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_19/557335/285005.jpg"  alt="Manali  with Chandratal  Tour" title="Manali  with Chandratal  Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="https://www.abctrekkers.in/tour-packages/manali-with-chandratal-tour.htm" title="Manali  with Chandratal  Tour"><h3>Manali  With Chandratal  Tour</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								4 Nights / 5 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Manali, Mandi, Manikaran, Lahaul & Spiti</p>
															<div class="mt10px small">
							<form name="pkg_184971" id="pkg_184971" method="post" action="https://www.abctrekkers.in/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="https://www.abctrekkers.in/tour-packages/manali-with-chandratal-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Manali  with Chandratal  Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="184971"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
															
						</ul>
						</div>
						</div> 		  
						<br>
						</div>  
						<br />
										
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:60:"Book Hampta Pass Trek Tour - 4 Nights / 5 Days Tour Packages";i:2;s:106:"book hampta pass trek tour - 4 nights / 5 days tour packages, trekking tour packages, manali tour packages";i:3;s:135:"Abc Trekkers offers Hampta Pass Trek Tour - 4 Nights / 5 Days tour package, budget Trekking tour packages for Manali at exciting price.";i:4;s:3401:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Manali"        
		                 },
		      "description": "Region :- Himanchal 
Duration :- 4 Night 5 Days 
Grade :- Easy To Moderate 
Max Altitude :- 14,100 Ft. 
Approx Trekking Km :- 48 Kms.
Himachal Pradesh is one of the most toured states in India. The state has beautiful pristine snow clad mountains which are a major source of tourist attraction. Tourists from all over the world come to this glorious, unpolluted and serene place to nurture their mind and soul and cherish an unfathomable nature's beauty. The word 'Hima' means snow in Sanskrit and hence the name Himachal Pradesh which means 'In the lap of Himalayas'. The mountains of the state are used for many adventure sports. One among them that is considerably being carried out here is trekking.

With more than 200 defined trekking trails some of the famous trekking spots of Himachal Mountains are; Hampta Pass trek, Dhaulandhar (Triund Glacier)trek, Parvati valley trek, Bhabha pass trek, Sari Pass trek, Beas Kund trek, trek to Chamba and Pin Parvati, Kakeri lake trek etc.

Hampta pass trek is considered the easiest and convenient of all treks in H.P. It might not be the most adrenalin rush giving or the most sought after trek, but definitely it is a trek that will leave you in awe of this beautiful place. The variation in the trails is enormous; scenic landscapes, open green pastures and meadows, glacial valleys, easy access and an exceptional, adventurous and hair raising crossing of the pass makes this trekking expedition to Hampta pass an exciting one.

Generally, it takes 4 days to complete the Hampta pass trek, but one more day is further added to the itinerary so as to visit the well-known and striking Chandrataal, a high altitude alpine lake few hours from Chatru. The best months to trek are May and June and August through October. The reason why Hampta pass is famous trekking zone is snow; the pass has lump sum snow which draws more tourists.

The nearest station is Manali. Therefore, the trip starts from Manali to Chika via Jobra. From Jobra the trek is undertaken by walk. This route comprises the first day. Balu ka Ghera is reached on the second day. You would cross amazing boulders, Gendrame and Rani Nallah on this day. The third day destination is Shea Goru from Balu ka Ghera via Hampta Pass. You will come across mind boggling and stupendous glaciers, cornice formation and snows all the way along. The maximum altitude will be reached on this day i.e. 14, 100 ft. Day four will start from Shea Goru and end up in Chatru. It is a steady descent on this day. You will witness the valleys of Lahual and Spiti and also the mountain ranges of Pir panjal and Spiti. On the same day you can also head to Chandra tal camp site and camp there for the night. The final day of the trek's route is from Chandra tal to Manali. From Chandra tal campsite you can visit the infamous chandratal lake, deepest amongst blue shades.

One must carry necessary trekking gears like ankle support shoes and trekking poles which will make snow climbing easier.",
		      "name": "Hampta Pass Trek Tour",
		      "telephone": "+91-9458118063"
		    }
		    </script>
			";i:5;N;}