https://gamechannel.io/pyramid-solitaire/?utm_source=homepage&utm_medium=webpage&utm_content=pyramid
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&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.