PageSourceSearch

https://gamechannel.io/pyramid-solitaire/?utm_source=homepage&utm_medium=webpage&utm_content=pyramid

html gamechannel.io collected 2026-09-24 15:03:28 UTC 20,954 bytes, 434 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <title>Pyramid Solitaire Games - FREE | Voted BEST of 2024 - 2019</title>
5	<meta charset="utf-8">
6	<meta http-equiv="X-UA-Compatible" content="IE=edge">
7	<meta content="width=device-width, initial-scale=1, minimum-scale=1, user-scalable=no" name="viewport">
8	<meta content="yes"									name="full-screen">
9	<meta content="index, follow"						name="robots">
10    <meta content="GameChannel.io"							name="author">
11    <meta content="GameChannel.io. All Rights Reserved." 	name="copyright">
12
13   	<link href="https://gamechannel.io/pyramid-solitaire/index.html" 		rel="canonical">
14    <meta name="description" content="Voted Best of 2024 Free Classic Solitaire card games ⚡. Millions of classic solitaire players worldwide">
15    <meta name="keywords" content="Pyramid Solitaire, Pyramid Solitaire online, Pyramid Solitaire free, Pyramid Solitaire rules, Pyramid Solitaire strategy, Pyramid Solitaire download, Pyramid Solitaire tips, Pyramid Solitaire app, Pyramid Solitaire game, Pyramid Solitaire variations" />
16
17   	<link href="./assets/icons/apple-touch-icon.png" 	rel="apple-touch-icon" sizes="180x180">
18	<link href="./assets/icons/favicon-32x32.png"		rel="icon" type="image/png" sizes="32x32">
19	<link href="./assets/icons/favicon-16x16.png" 		rel="icon" type="image/png" sizes="16x16">
20	<link href="./assets/icons/favicon.ico"				rel="shortcut icon">
21	<link href="./assets/icons/safari-pinned-tab.svg" 	rel="mask-icon" color="#1b53c7">   
22	
23   	<link href="/common/adsTopSolitaireGames/adtop.css" 					rel="stylesheet" type="text/css">
24   	<link href="/common/applixirAds/applixirAds.css" 					rel="stylesheet" type="text/css">
25	<link href="/common/social/fb-share-button.css" 					rel="stylesheet" type="text/css">
26	<link href="/common/solitaireGames/solitaire.css" 					rel="stylesheet" type="text/css">
27
28	<link href="card.css" 												rel="stylesheet" type="text/css">
29	<link href="pyramid.css" 											rel="stylesheet" type="text/css">
30	
31   	<!-- Code: CMP for Adsense from Google to send TCF signals to GA4 --> 				
32 	
32<script> <!-- Enabled tcf support for Google tag --> window ['gtag_enable_tcf_support'] = true; </script>
32
33
34  	<!-- Adsense Ads -->
35  	
35<script data-ad-client="ca-pub-8403075472397165" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
35
36
37
38	<!-- Google Ad Block Recovery -->
39	
39<script async src="https://fundingchoicesmessages.google.com/i/pub-8403075472397165?ers=1" nonce="De881dIXGs7ppbcL5NcWOg"></script>
39<script nonce="De881dIXGs7ppbcL5NcWOg">(function() {function signalGooglefcPresent() {if (!window.frames['googlefcPresent']) {if (document.body) {const iframe = document.createElement('iframe'); iframe.style = 'width: 0; height: 0; border: none; z-index: -1000; left: -1000px; top: -1000px;'; iframe.style.display = 'none'; iframe.name = 'googlefcPresent'; document.body.appendChild(iframe);} else {setTimeout(signalGooglefcPresent, 0);}}}signalGooglefcPresent();})();</script>
39
40
41	<!-- Google Ad Block Optional Error protection message -->
42	
42<script src="/common/googleAdBlockOptionalErrorProtectionMessage/googleAdBlockOptionalErrorProtectionMessage.js"></script>
42
43
44	<!-- Google Tag Manager -->
45		
45<script>
vendor: 335 bytes, lines 45-49
45(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
46		new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
47		j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
48		'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
49		})(window,document,'script','dataLayer','
49GTM-KZDJTBH
vendor: 3 bytes, line 49
49');
49</script>
49
50	<!-- End Google Tag Manager -->		      
51                  
52	<!-- Google Analytics tag (gtag.js) required to send data to GA4 and Google Ads -->
vendor: 65 bytes, lines 52-53
52
53	<script async src="https://www.googletagmanager.com/gtag/js?id=
53G-D8ZN7RQ3CQ
vendor: 13 bytes, lines 53-54
53"></script>
54	
54<script>
55  		
vendor: 140 bytes, lines 55-58
55window.dataLayer = window.dataLayer || [];
56  			function gtag(){dataLayer.push(arguments);}
57  			gtag('js', new Date());
58			gtag('config', '
58G-D8ZN7RQ3CQ
vendor: 10 bytes, lines 58-59
58');
59   			
59gtag('config', 'AW-736771080');
60	</script>
60
61                  
62		
62<script src="v-util.js"></script>
62 <!-- This has the va_uuid attribution, so before GA -->
63                  
64 	<!-- Open Graph metadata -->
65  	<meta property="og:locale" 							content="en_US">
66  	<meta property="og:type" 							content="website">
67  	<meta property="og:title" 							content="Pyramid Solitaire - 100% FREE | Voted BEST of 2024">
68  	<meta property="og:description" 					content="⚡️NEW! Fast and Easy - No download or registration required. Join millions of solitaire players worldwide!">
69  	<meta property="og:url" 							content="https://gamechannel.io/pyramid-solitaire/index.html">
70  	<meta property="og:site_name" 						content="gamechannel.io">
71  	<meta property="og:image" 							content="https://gamechannel.io/pyramid-solitaire/assets/icons/facebook-og/fb-og-image-1200x627-pyramid.png">
72  	<meta property="og:image:secure_url" 				content="https://gamechannel.io/pyramid-solitaire/assets/icons/facebook-og/fb-og-image-1200x627-pyramid.png">
73  	<meta property="og:image:alt" 						content="gamechannel.io pyramid solitaire">
74  	<meta property="og:image:type" 						content="image/png">
75 
76  	<!-- Twitter Card -->
77  	<meta name="twitter:image" 							content="https://gamechannel.io/pyramid-solitaire/assets/icons/twitter-card/thumbnail.png">
78   	<meta name="twitter:card" 							content="summary">
79  	<meta name="twitter:site" 							content="@GameChannel.io">
80  	<meta name="twitter:title" 							content="New! Pyramid Solitaire - 100% FREE | Voted BEST of 2024">
81  	<meta name="twitter:description" 					content="⚡️NEW! Fast and Easy - No download or registration required. Join millions of solitaire players worldwide!">
82  	<meta name="twitter:url" 							content="https://gamechannel.io/pyramid-solitaire/index.html">
83  	<meta name="twitter:creator" 						content="@GameChannel.io">
84
85    <!-- Structured Data -->
86	
86<script src="/common/structuredData/structuredDataPyramid.js"></script>
86
87
88</head>
89<body>
90
91	<!-- Google Tag Manager (noscript) -->
vendor: 70 bytes, lines 91-92
91
92		<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
92GTM-KZDJTBH
vendor: 86 bytes, lines 92-94
92"
93		height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
94	
94<!-- End Google Tag Manager (noscript) -->
95
96<div class="ad-game-container">
97
98	<!-- Begin Ad Placements -->
99    	<div id="ad-top-master" align="center">
100   			<div class="ad-top-left">
101				
101<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8403075472397165"
102     				crossorigin="anonymous"></script>
102
103				<!-- fixed728x90 -->
104				<ins class="adsbygoogle"
105     				style="display:inline-block;width:728px;height:90px"
106     				data-ad-client="ca-pub-8403075472397165"
107     				data-ad-slot="6382736985"></ins>
108				
108<script>
109     				(adsbygoogle = window.adsbygoogle || []).push({});
110				</script>
110	
111			</div>
112			
113 			<div class="ad-top-center">										
114				
114<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8403075472397165"
115     				crossorigin="anonymous"></script>
115
116				<!-- 2024_Top350 -->
117				<ins class="adsbygoogle"
118     				style="display:block"
119     				data-ad-client="ca-pub-8403075472397165"
120     				data-ad-slot="5354065070"
121     				data-ad-format="auto"
122     				data-full-width-responsive="true"></ins>
123				
123<script>
124     				(adsbygoogle = window.adsbygoogle || []).push({});
125				</script>
125
126			</div>
127
128   			<div class="ad-top-right">      
129				
129<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8403075472397165"
130     				crossorigin="anonymous"></script>
130
131				<!-- 2024Top_Responsive -->
132				<ins class="adsbygoogle"
133     				style="display:block"
134     				data-ad-client="ca-pub-8403075472397165"
135     				data-ad-slot="9349150406"
136     				data-ad-format="auto"
137     				data-full-width-responsive="true"></ins>
138				
138<script>
139     				(adsbygoogle = window.adsbygoogle || []).push({});
140				</script>
140
141			</div>
142		</div>	
143	<!-- End Ad Placements -->
144	
145		<div class="hidden">
146    		<svg>
147        			<rect id="pyramid_button"  x="1" y="1" width="58" height="58" rx="8" fill="rgba(5,131,19,1)" opacity="0.5" style="stroke-width:2;stroke:white" /> 
148        			<!-- We let the code set the filter so its at the highest element  -->
149        			<symbol id="pyramid_stock_to_waste_button"  >
150            			<use x="0" y="0" xlink:href="#pyramid_button" opacity="0.8" /> 
151            			<polygon points="4,30 15,17 15,25 30,25 30,35, 15,35 15,43" style="fill:white" opacity="0.8"/>
152            			<rect x="37" y="19" width="15" height="21" rx="2" fill="none" style="stroke-width:1;stroke:white" opacity="0.8" />
153            			<!-- <text x="0" y="75" stroke-width="0.1em" id="resets_left" fill="white" opacity="0.8">Resets</text>-->
154        			</symbol>
155
156            		<symbol id="pyramid_control_bar">
157                		<rect opacity="0.5" width="100%" height="100%" fill="darkgreen" /> 
158            		</symbol>
159        		</svg>
160		</div>
161		
162		<div id="control_bar" class="btn-group"> 
163			<div>
164    			<button class="btn" id="button_new" onclick="newGameSameMode()"> 
165        				<!--%s_new_game.html%-->
166					<svg focusable="false" class="ico" aria-hidden="true" viewBox="0 0 32 32">
167						<circle cx="16" cy="16" r="13.5"/>
168						<path d="M13 9 20 16 13 23"/>
169					</svg>
170					<span class="lang" lang="en">New</span>      
171				</button>
172			</div>
173			<div class="dropup">
174				<button onclick="toggleDropUp()" class="dropbtn" id="more_games">
175					<span id="dot" class="dot">+</span>
176					<span class="lang" lang="en">🎁 ???</span>
177				</button>
178				
179			<div id="optionsDropup" class="dropup-content">
180				<a href='https://gamechannel.io/policies/privacy?utm_source=solitaire&utm_medium=in-game&utm_content=more' id='privacy_terms' rel='noopener' target='_blank'>
181					<!--privacy / terms-->
182					<span class="lang" lang="en"> (c) 2019-2024 GameChannel.io | Privacy & Terms </span>          </a> 
183						
184				<hr class="rounded">
185
186				<a href='https://gamechannel.io/2048/?utm_source=pyramid-solitaire&utm_medium=in-game&utm_content=more' id='2048' rel='noopener' target='_blank'>
187					<!--2048-->
188					<span class="lang" lang="en"><img src="https://gamechannel.io/2048/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="2048"> 2048 CIRCLES</span>         </a> 
189
190				<a href='https://gamechannel.io/backgammon/?utm_source=pyramid-solitaire&utm_medium=in-game&utm_content=more' id='backgammon' rel='noopener' target='_blank'>
191					<!--Backgammon-->
192					<span class="lang" lang="en"><img src="https://gamechannel.io/backgammon/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="Backgammon"> BACKGAMMON</span></a> 	
193
194				<a href='https://gamechannel.io/checkers/?utm_source=pyramid-solitaire&utm_medium=in-game&utm_content=more' id='checkers' rel='noopener' target='_blank'>
195					<!--Checkers-->
196					<span class="lang" lang="en"><img src="https://gamechannel.io/checkers/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="Checkers"> CHECKERS</span>         </a> 	
197					
198				<a href='https://gamechannel.io/chess/?utm_source=pyramid-solitaire&utm_medium=in-game&utm_content=more' id='chess' rel='noopener' target='_blank'>
199					<!--Chess-->
200					<span class="lang" lang="en"><img src="https://gamechannel.io/chess/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="Chess"> CHESS</span>         </a> 						
201
202				<a href='https://gamechannel.io/reversi/?utm_source=pyramid-solitaire&utm_medium=in-game&utm_content=more' id='reversi' rel='noopener' target='_blank'>
203					<!--Reversi-->
204					<span class="lang" lang="en"><img src="https://gamechannel.io/reversi/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="Reversi"> REVERSI | OTHELLO</span>         </a> 	
205
206				<a href='https://gamechannel.io/sudoku/?utm_source=pyramid-solitaire&utm_medium=in-game&utm_content=more' id='sudoku' rel='noopener' target='_blank'>
207					<!--Sudoku-->
208					<span class="lang" lang="en"><img src="https://gamechannel.io/sudoku/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="Sudoku"> SUDOKU</span>         </a> 			
209
210 				<a href='https://gamechannel.io/tank-wars/?utm_source=pyramid-solitaire&utm_medium=in-game&utm_c
210ontent=more' id='tank_wars' rel='noopener' target='_blank'>
211					<!--Tank Wars-->
212					<span class="lang" lang="en"><img src="https://gamechannel.io/tank-wars/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="Tank Wars"> TANK WARS Arcade</span>         </a> 	
213
214				<hr class="rounded">
215		
216        			<a href='https://gamechannel.io/freecell-solitaire/?utm_source=pyramid-solitaire&utm_medium=in-game&utm_content=more' id='freecell' rel='noopener' target='_blank'>
217                   	<!--freecell-->
218                		<span class="lang" lang="en"><img src="https://gamechannel.io/freecell-solitaire/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="FreeCell Solitaire"> FREECELL Solitaire</span>          </a> 
219
220				<a href='https://gamechannel.io/solitaire/?utm_source=pyramid-solitaire&utm_medium=in-game&utm_content=more' id='solitaire' rel='noopener' target='_blank'>
221					<!--klondike-->
222					<span class="lang" lang="en"><img src="https://gamechannel.io/solitaire/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="Klondike Solitaire"> KLONDIKE Solitaire</span>         </a> 
223
224				<a href='https://gamechannel.io/spider-solitaire/?utm_source=pyramid-solitaire&utm_medium=in-game&utm_content=more' id='spider' rel='noopener' target='_blank'>
225					<!--spider-->
226					<span class="lang" lang="en"><img src="https://gamechannel.io/spider-solitaire/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="Spider Solitaire"> SPIDER Solitaire</span>          </a> 
227
228				<a href='https://gamechannel.io/tripeaks-solitaire/?utm_source=pyramid-solitaire&utm_medium=in-game&utm_content=more' id='tripeaks' rel='noopener' target='_blank'>
229					<!--tripeaks-->
230					<span class="lang" lang="en"><img src="https://gamechannel.io/tripeaks-solitaire/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="Tripeaks Solitaire"> TRIPEAKS Solitaire</span>          </a> 
231    		</div>
232			</div>
233
234			<div>
235    			<button class="btn" id="button_undo" onclick="undo()">
236    				<!--%s_undo.html%-->
237					<svg focusable="false" class="ico" aria-hidden="true" viewBox="0 0 34 32">
238						<path d="M5.5 16A13.5 13.5 0 1 1 19 29.5M3 17 8 17 5.5 20z"/>
239						<text x="58%" y="65%" stroke-width="0.1em" id="undos_left">0</text>
240					</svg> 
241					<span class="lang" lang="en">Undo</span>
242				</button>
243			</div> 
244		</div> <!--control_bar-->
245
246	<div id="pyramid_div">
247    
248    </div><!-- game div-->
249    
250    <div id="game_over_div" class="solitaire_dialog">
251		<div id="trophy_win">
252	    		<span>🎉</span>
253    		<span>🎊</span>
254    		<span>🏆</span>
255    		<span>🎊</span>
256    		<span>🎉</span>      			
257		</div>
258        		<!--%s_label_great_game.html%-->
259    	<div id="congrats-1">
260    		<strong>
261        		<span class="lang" lang="en">Great Game!</span>
262    		</strong>
263    	</div>        <!--%s_label_you_win.html%-->
264    	<div id="you-win">
265    		<strong>
266        			<span class="lang" lang="en">YOU WIN!</span>
267    		</strong>
268    	</div>
269    	<br>
270        <div id="game_over_stats">
271    		<!--%s_label_your_time.html%-->
272    		<span class="lang" lang="en">Your Time:</span>
273        		<span id="game_over_time"></span>
274       	<br>
275       	<br>    
276			<!--%s_label_moves_to_win.html%-->
277    		<span class="lang" lang="en">Moves to Win:</span>
278       		<span id="game_over_moves"></span>
279       	</div>
280    	<br>
281    	<div class="continue_div">
282    		<strong>
283				<span id="continue" onclick="newGameSameMode(); C12.f8();">
284					<!--%s_button_continue_plain.html%-->
285    				<span class="lang" lang="en">CONTINUE ▷</span>
286        			</span>
287    		</strong>
288    	</div>
289		<br>
290    </div> <!--game over div-->
291    
292    <div id="no_more_moves_div" class="solitaire_dialog">
293		<div id="trophy_lose">
294			<span>🤷‍♀️</span>
295			<span>😥</span>
296			<span>😭</span>
297			<span>🤷‍♂️</span>
298		</div>
299            <!--%s_label_no_moves.html%-->
300    	<div id="you-win">
301    		<strong>
302        			<span class="lang" lang="en">No More Moves</span>
303    		</strong>
304    	</div>
305   		<br>
306
307		<div class="continue_div">
308    		<strong>
309        			<span id="continue" onclick="newGameSameMode(); C12.f8();">
310            			<!--%s_button_continue_plain.html%-->
311					<span class="lang" lang="en">CONTINUE ▷</span>
312				</span>
313    		</strong>
314    	</div>
315    <br />
316	</div> <!--no more moves div-->
317</div>
318	
319	<div id="applixir_vanishing_div" hidden ><iframe id="applixir_parent" allow="autoplay"></iframe>
320    </div>
321	
322	<div id="ad-center" align="center" class="flex-container">
323		 <header id="ad-header">
324		 	<span id="ad-close" style="cursor:pointer">Loading...</span>
325		 </header>
326	</div>    
327
328	<!-- FB Share Button -->
329	<div id="fb-share-button" class="fb-share-button" data-href="https://gamechannel.io/pyramid-solitaire/index.html" data-layout="button" data-size=""><a target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fgamechannel.io%2Fpyramid-solitaire&amp;src=sdkpreparse" class="fb-xfbml-parse-ignore">Share</a></div>
330
331	<!-- Load Facebook SDK for JavaScript -->
332	<div id="fb-root"></div>
333
334	<!-- Link to external JavaScript file -->
335	
335<script src="/common/social/social-scripts.js"></script>
335
336
337<!--		
338	
338<script>
339    // JavaScript to wrap each character with a span
340    const trophyDiv = document.getElementById('trophy');
341    const text = trophyDiv.textContent;
342    const characters = text.split('');
343
344    trophyDiv.innerHTML = characters.map(char => `<span>${char}</span>`).join('');
345	</script>
345
346-->	
347
348</body>
349
350	
350<script src="p.js"></script>
350
351	
352	<!-- APPLIXIR NEW for gen UUID4 and passed to applixir  -->	
353	
353<script src="https://cdnjs.cloudflare.com/ajax/libs/uuid/8.3.2/uuid.min.js">
354	</script>
354
355
356	
356<script defer>
357    	// Generate a random UUID using the uuid library
358    	let myuuid = uuid.v4();
359
360    	// Log the UUID to the console
361    	console.log(myuuid);
362
363    	// Assign the UUID to APPLIXIR_USERID
364    	var APPLIXIR_USERID = myuuid; 
365
366    	// Check sessionTime and reload window if greater than 2 minutes
367    	if (_sessionTime > 2 * 60) {
368        		window.location.reload(true); 
369    	}
370	</script>
370
371	
372	
372<script type="text/javascript">
373	// This function is called after the page is fully loaded.
374	// Unlike normal webpage, care MOST about game loading fully and playable 
375	// for speed to first contentful paint/playable. Also, SECOND most important thing is to get manifest.json
376	// file downloaded and processed for deferred prompt. Unforunately, while can preload file, browsers will not process manifest.json until after page fully loads. So, we put the ads/marketing to <defer> load and we also don't want to load the network with too many requests for javascript files/etc for lower end devices in various parts of the world.
377	// Now, you are probably going to ignore this and start putting in 
377<script> includes above and do things like async/defer. I am just telling you, we are not a normal web page, and the solution below is the best so far for the goals above, so don't ignore the efforts of your elders. 
378	function downloadJSAtOnLoad() {
379
380			var deferInclude = document.createElement("script");
381			deferInclude.src = "/common/defer/defer.js";
382			deferInclude.defer = true;
383			deferInclude.async = true;
384			document.body.appendChild(deferInclude);
385
386			// If we are being told to show interstitial, let's do it in a tick after all the ad tech loads.
387			if (urlParams.has("si")) {
388					setTimeout(function() {
389						 if (typeof showVideoInterstitial != "function") { return; } // Defer load check
390							showVideoInterstitial();
391							_interstitialTime = Date.now();
392					}, 500);
393			}
394	}
395
396	// Simple function to call downloadJS files post load to let everything settle. 
397	function deferLoad() {
398			setTimeout(downloadJSAtOnLoad, 1.5*1000);
399	}
400
401	// Hook into the page fully loading to call defer
402	if (window.addEventListener) { window.addEventListener("load", deferLoad, false); }
403	else if (window.attachEvent) { window.attachEvent("onload", deferLoad);  }
404	else  { window.onload = deferLoad;} 
405	</script>
405
406	
407	
407<script>
408    // Grab the game config;
409    initGameConfig("pyramid");
410
411    // Start the game as soon as possible to render to the screen.
412    startGame(vGameConfig);
413
414	var _interstitialTime  = 0;
415   
416    // Add a call back when a new game starts to show an ad for showing the install dialog
417    addNewGameCallback(function() {
418
419			// If we haven't shown an ad in 60 seconds let's show one
420			if ( Date.now() - _interstitialTime  > 60*1000) {
421				if (typeof showVideoInterstitial != "function") { 
422                console.log("Show Video Interstitial not defined yet");
423                return; 
424            }
425					showVideoInterstitial();
426
427					_interstitialTime  = Date.now();
428					//reloadForInterstitial();
429			} 		
430
431		});
432	
433	</script>
433
434</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.