PageSourceSearch

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

html gamechannel.io collected 2026-09-24 15:03:29 UTC 20,892 bytes, 448 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4	<title>Klondike 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/solitaire/index.html"					rel="canonical">		
14		<meta content="Classic Solitaire ⚡ Voted Best of 2024 Free card games. Millions of classic solitaire players online"														name="description">
15	<meta content="solitaire free, world of solitaire, free solitaire, klondike solitaire, solitaire free online, online solitaire, solitario, sol, klondike, solitaire time, classic card games, card games"																name="keywords">
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="klondike.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: 5 bytes, lines 49-50
49');
50	
50</script>
50
51	<!-- End Google Tag Manager -->		      
52                  
53	<!-- Google Analytics tag (gtag.js) required to send data to GA4 and Google Ads -->
vendor: 65 bytes, lines 53-54
53
54	<script async src="https://www.googletagmanager.com/gtag/js?id=
54G-D8ZN7RQ3CQ
vendor: 13 bytes, lines 54-55
54"></script>
55	
55<script>
56  		
vendor: 140 bytes, lines 56-59
56window.dataLayer = window.dataLayer || [];
57  			function gtag(){dataLayer.push(arguments);}
58  			gtag('js', new Date());
59			gtag('config', '
59G-D8ZN7RQ3CQ
vendor: 10 bytes, lines 59-60
59');
60   			
60gtag('config', 'AW-736771080');
61	</script>
61
62                  
63	
63<script src="v-util.js"></script>
63 <!-- This has the va_uuid attribution, so before GA -->	
64                  
65	<!-- Open Graph metadata -->
66  	<meta property="og:locale" 			content="en_US">
67  	<meta property="og:type" 			content="website">
68  	<meta property="og:title" 			content="Solitaire - 100% FREE | Voted BEST of 2024 - 2019">
69  	<meta property="og:description"		content="⚡️NEW! Fast and Easy - No download or registration required. Join millions of solitaire players worldwide!">
70  	<meta property="og:url" 			content="https://gamechannel.io/solitaire/index.html">
71  	<meta property="og:site_name" 		content="gamechannel.io">
72  	<meta property="og:image" 			content="https://gamechannel.io/solitaire/assets/icons/facebook-og/fb-og-image-1200x627-solitaire.png">
73  	<meta property="og:image:secure_url" content="https://gamechannel.io/solitaire/assets/icons/facebook-og/fb-og-image-1200x627-solitaire.png">
74  	<meta property="og:image:alt" 		content="gamechannel.io solitaire">
75  	<meta property="og:image:type" 		content="image/png">
76 
77  	<!-- Twitter Card -->
78  	<meta name="twitter:image" 			content="https://gamechannel.io/solitaire/assets/icons/twitter-card/thumbnail.png">
79  	<meta name="twitter:card" 			content="summary">
80  	<meta name="twitter:site" 			content="@GameChannel.io">
81  	<meta name="twitter:title" 			content="New! Solitaire - 100% FREE | Voted BEST of 2024 - 2019">
82  	<meta name="twitter:description" 	content="⚡️NEW! Fast and Easy - No download or registration required. Join millions of solitaire players worldwide!">
83  	<meta name="twitter:url" 			content="https://gamechannel.io/solitaire/index.html">
84  	<meta name="twitter:creator" 		content="@GameChannel.io">
85
86    <!-- Structured Data -->
87	
87<script src="/common/structuredData/structuredDataSolitaire.js"></script>
87
88
89</head>
90<body>
91		
92	<!-- Google Tag Manager (noscript) -->
vendor: 74 bytes, lines 92-94
92
93		<noscript>
94			<iframe src="https://www.googletagmanager.com/ns.html?id=
94GTM-KZDJTBH
vendor: 93 bytes, lines 94-98
94"
95		height="0" width="0" style="display:none;visibility:hidden">
96			</iframe>
97		</noscript>
98	
98<!-- End Google Tag Manager (noscript) -->	 
99	   
100<div class="ad-game-container">
101
102	<!-- Begin Ad Placements -->
103    	<div id="ad-top-master">
104   			<div class="ad-top-left">
105				
105<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8403075472397165"
106     				crossorigin="anonymous"></script>
106
107				<!-- fixed728x90 -->
108				<ins class="adsbygoogle"
109     				style="display:inline-block;width:728px;height:90px"
110     				data-ad-client="ca-pub-8403075472397165"
111     				data-ad-slot="6382736985"></ins>
112				
112<script>
113     				(adsbygoogle = window.adsbygoogle || []).push({});
114				</script>
114	
115			</div>
116			
117 			<div class="ad-top-center">										
118				
118<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8403075472397165"
119     				crossorigin="anonymous"></script>
119
120				<!-- 2024_Top350 -->
121				<ins class="adsbygoogle"
122     				style="display:block"
123     				data-ad-client="ca-pub-8403075472397165"
124     				data-ad-slot="5354065070"
125     				data-ad-format="auto"
126     				data-full-width-responsive="true"></ins>
127				
127<script>
128     				(adsbygoogle = window.adsbygoogle || []).push({});
129				</script>
129
130			</div>
131
132   			<div class="ad-top-right">      
133				
133<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8403075472397165"
134     				crossorigin="anonymous"></script>
134
135				<!-- 2024Top_Responsive -->
136				<ins class="adsbygoogle"
137     				style="display:block"
138     				data-ad-client="ca-pub-8403075472397165"
139     				data-ad-slot="9349150406"
140     				data-ad-format="auto"
141     				data-full-width-responsive="true"></ins>
142				
142<script>
143     				(adsbygoogle = window.adsbygoogle || []).push({});
144				</script>
144
145			</div>
146		</div>	
147	<!-- End Ad Placements -->
148		
149	<div id="control_bar" class="btn-group"> 
150			<div>
151					<button class="btn" id="button_new" onclick="newGameSameMode()"> 
152							<!--%s_new_game.html%-->
153					<svg focusable="false" class="ico" aria-hidden="true" viewBox="0 0 32 32">
154							<circle cx="16" cy="16" r="13.5"/>
155							<path d="M13 9 20 16 13 23"/>
156					</svg>
157					<span class="lang" lang="en">New</span>
158    				</button>
159			</div>
160			
161			<div class="dropup" id="button_more">
162					<button onclick="toggleDropUp()" class="dropbtn" id="more_games">
163						<span id="dot" class="dot">+</span>
164						<span class="lang" lang="en">🎁 ???</span>
165					</button>
166					
167			<div id="optionsDropup" class="dropup-content">
168
169				<a class='menu_links' href='https://gamechannel.io/policies/privacy?utm_source=solitaire&utm_medium=in-game&utm_content=more' id='privacy_terms' rel='noopener' target='_blank'>
170					<!--privacy / terms-->
171					<span class="lang" lang="en"> (c) 2024 GameChannel.io | Privacy & Terms </span>          </a> 
172					
173				<hr class="rounded">
174
175				<a class='menu_links' href='https://gamechannel.io/2048/?utm_source=solitaire&utm_medium=in-game&utm_content=more' id='2048' rel='noopener' target='_blank'>
176					<!--2048-->
177					<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> 
178
179				<a class='menu_links' href='https://gamechannel.io/backgammon/?utm_source=solitaire&utm_medium=in-game&utm_content=more' id='backgammon' rel='noopener' target='_blank'>
180					<!--Backgammon-->
181					<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> 	
182
183				<a class='menu_links' href='https://gamechannel.io/checkers/?utm_source=solitaire&utm_medium=in-game&utm_content=more' id='checkers' rel='noopener' target='_blank'>
184					<!--Checkers-->
185					<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> 	
186					
187				<a class='menu_links' href='https://gamechannel.io/chess/?utm_source=solitaire&utm_medium=in-game&utm_content=more' id='chess' rel='noopener' target='_blank'>
188					<!--Chess-->
189					<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> 						
190
191				<a class='menu_links' href='https://gamechannel.io/reversi/?utm_source=solitaire&utm_medium=in-game&utm_content=more' id='reversi' rel='noopener' target='_blank'>
192					<!--Reversi-->
193					<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> 	
194
195				<a class='menu_links' href='https://gamechannel.io/sudoku/?utm_source=solitaire&utm_medium=in-game&utm_content=more' id='sudoku' rel='noopener' target='_blank'>
196					<!--Sudoku-->
197					<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> 			
198
199 				<a class='menu_links' href='https://gamechannel.io/tank-wars/?utm_source=solitaire&utm_medium=in-game&utm_content=more' id='tank_wars' rel='noopener' target='_blank'>
200					<!--Tank Wars-->
201					<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> 	
202
203				<hr class="rounded">
204        
205        			<a class='menu_links' href='https://gamechannel.io/freecell-solitaire/' id='freecell' rel='noopener' target='_blank'>
206                    <!--freecell-->
207                		<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> 
208
209				<a class='menu_links' href='https://gamechannel.io/pyramid-solitaire/' id='pyramid' rel='noopener' target='_blank'>
210					<!--pyramid-->
211					<span class="lang" lang="en" ><img src="https://gamechannel.io/pyramid-solitaire/assets/icons/favicon-32x32.png" height="24px" width="24px" alt="Pyramid Solitaire"> PYRAMID Solitaire</span>         </a> 
212
213				<a class='menu_links' href='https://gamechannel.io/spider-solitaire/' id='spider' rel='noopener' target='_blank'>
214					<!--spider-->
215					<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> 
216
217				<a class='menu_links' href='https://gamechannel.io/tripeaks-solitaire/' id='tripeaks' rel='noopener' target='_blank'>
218					<!--tripeaks-->
219					<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> 
220					
221				<hr class="rounded">
222			
223				<a onclick="newGameDraw1()" >
224					<!--%s_draw_1.html%-->
225					<span class="lang" lang="en">Solitaire: Draw 1</span>
226	        		</a>                     
227
228				<a onclick="newGameDraw3()">    
229					<!--%s_draw_3.html%-->
230					<span class="lang" lang="en">Solitaire: Draw 3</span>
231	   			</a>  
232
233				<a onclick="showHelpDialog()">
234					<!--%s_how_to_play.html%-->
235					<span class="lang" lang="en">Solitaire: How to Play</span>
236       			</a>      
237	
238			</div>
239			</div>
240			
241	<div>
242		<button class="btn" id="button_undo" onclick="undo()">
243			<!--%s_undo.html%-->
244			<svg focusable="false" class="ico" aria-hidden="true" viewBox="0 0 34 32">
245				<path d="M5.5 16A13.5 13.5 0 1 1 19 29.5M3 17 8 17 5.5 20z"/>
246				<text x="58%" y="65%" stroke-width="0.1em" id="undos_left">0</text>
247			</svg> 
248			<span class="lang" lang="en">Undo</span>
249		</button>
250	</div>
251	 
252</div> <!-- close div ad-game-container -->
253	
254	<!--control_bar-->
255
256	<!-- game div start -->
257	<div id="klondike_div">
258
259    	<!--%s_button_auto_move.html%-->
260		<div id="auto_move" >    
261			<span class="lang" lang="en">Auto Complete</span>
262		</div>    
263
264		<!--%s_button_help.html%-->
265		<div id="help_button" >    
266			<span class="lang" lang="en">How to Play</span>
267		</div>
268
269	</div>
270	<!-- game div end -->
271	
272	<!--%s_dialog_help.html%-->
273	<div id="help_div" scrollable="yes">
274		<div lang="en" class="lang" >
275			<div class="header"><span>Solitaire: How to Play</span>
276			</div>
277			<ul>
278				<li>Klondike solitaire is played with a 52 card deck. </li>
279				<li>The objective of the game is to move all cards to the top foundation piles.</li>  
280				<li>These piles are built upward in card suit from Ace to King.</li>
281				<li>There are 7 tableau columns that are built in decreasing rank, from King to Ace in alternating colors (black / red).</li>
282				<li>Empty columns can only be filled with a King or a stack of cards with a King at the top.</li>
283				<li>Partial and complete stacks can be moved across columns if they are built in sequence and alternating color.</li>
284				<li>Face down cards should be turned face up in the tableau.</li>
285				<li>Move a card / stack of cards by tapping or dragging it.</li>
286				<li>Tap the deck of cards (stock) to turn over 1 or 3 cards to the waste pile.</li>  
287				<li>The top card in the waste may be played.</li>
288				<li>When the stock is empty, tap the empty stock to return waste cards to the stock and deal again.</li>
289			</ul>
290		</div>
291	</div>
292
293	<!-- help div-->
294	                                    
295    <div id="game_over_div" class="solitaire_dialog">
296            <div id="trophy_win">
297	    			<span>🎉</span>
298    			<span>🎊</span>
299    			<span>🏆</span>
300    			<span>🎊</span>
301    			<span>🎉</span>      			
302            </div>
303            <!--%s_label_great_game.html%-->
304    		<div id="congrats-1">
305    			<strong>
306        			<span class="lang" lang="en">Great Game!</span>
307    			</strong>
308    		</div>
309    		<!--%s_label_you_win.html%-->
310    		<div id="you-win"><strong>
311        			<span class="lang" lang="en">YOU WIN!</span>
312    			</strong>
313    		</div>
314    		<br>
315    
316    		<div id="game_over_stats">
317    			<!--%s_label_your_time.html%-->
318    			<span class="lang" lang="en">Your Time: </span>
319       			<span id="game_over_time"></span>
320       			<br />
321       			<BR>
322                <!--%s_label_moves_to_win.html%-->
323    			<span class="lang" lang="en">Moves to Win:</span>
324       			<span id="game_over_moves"></span>
325       			<br />
326    		</div>
327    		
328    		<br />
329    		
330  			<div class="continue_div">
331    			<strong>
332					<span id="continue" onclick="newGameSameMode()">
333						<!--%s_button_continue_plain.html%-->
334    					<span class="lang" lang="en">CONTINUE ▷</span>
335        				</span>
336    			</strong>
337    		</div>
338           	<br />
339    </div>
340    <!--game over div-->
341        
342	<!-- ad game container -->
343      
344    <div id="applixir_vanishing_div" hidden >
345    	<iframe id="applixir_parent" allow="autoplay"></iframe>
346    </div>
347	
348	<div id="ad-center" align="center" class="flex-container">
349		 <header id="ad-header"><span id="ad-close" style="cursor:pointer">Loading...</span></header>
350 	</div>      
351
352	<!-- FB Share Button -->
353	<div id="fb-share-button" class="fb-share-button" data-href="https://gamechannel.io/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%2Fsolitaire&amp;
353src=sdkpreparse" class="fb-xfbml-parse-ignore">Share</a>
354	</div>
355
356	<!-- Load Facebook SDK for JavaScript -->
357	<div id="fb-root"></div>
358
359	<!-- Link to external JavaScript file -->
360	
360<script src="/common/social/social-scripts.js"></script>
360
361
362</body>
363
364	
364<script src="k.js"></script>
364
365	
366	<!-- APPLIXIR NEW for gen UUID4 and passed to applixir  -->	
367	
367<script src="https://cdnjs.cloudflare.com/ajax/libs/uuid/8.3.2/uuid.min.js">
368	</script>
368
369
370	
370<script defer>
371    	// Generate a random UUID using the uuid library
372    	let myuuid = uuid.v4();
373
374    	// Log the UUID to the console
375    	console.log(myuuid);
376
377    	// Assign the UUID to APPLIXIR_USERID
378    	var APPLIXIR_USERID = myuuid; 
379
380    	// Check sessionTime and reload window if greater than 2 minutes
381    	if (_sessionTime > 2 * 60) {
382        		window.location.reload(true); 
383    	}
384	</script>
384
385
386	
386<script type="text/javascript">
387	// This function is called after the page is fully loaded.
388	// Unlike normal webpage, care MOST about game loading fully and playable 
389	// for speed to first contentful paint/playable. Also, SECOND most important thing is to get manifest.json
390	// 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.
391	// Now, you are probably going to ignore this and start putting in 
391<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. 
392	function downloadJSAtOnLoad() {
393
394			var deferInclude = document.createElement("script");
395			deferInclude.src = "/common/defer/defer.js";
396			deferInclude.defer = true;
397			deferInclude.async = true;
398			document.body.appendChild(deferInclude);
399
400			// If we are being told to show interstitial, let's do it in a tick after all the ad tech loads.
401			if (urlParams.has("si")) {
402					setTimeout(function() {
403						 if (typeof showVideoInterstitial != "function") { return; } // Defer load check
404							showVideoInterstitial();
405							_interstitialTime = Date.now();
406					}, 500);
407			}
408	}
409
410	// Simple function to call downloadJS files post load to let everything settle. 
411	function deferLoad() {
412			setTimeout(downloadJSAtOnLoad, 1.5*1000);
413	}
414
415	// Hook into the page fully loading to call defer
416	if (window.addEventListener) { window.addEventListener("load", deferLoad, false); }
417	else if (window.attachEvent) { window.attachEvent("onload", deferLoad);  }
418	else  { window.onload = deferLoad;} 
419	</script>
419
420
421	
421<script>
422	// Grab the game config;
423	initGameConfig("klondike");
424
425	// Start the game as soon as possible to render to the screen.
426	startGame(vGameConfig);
427
428	var _interstitialTime  = 0;
429   
430    // Add a call back when a new game starts to show an ad for showing the install dialog
431    addNewGameCallback(function() {
432
433			// If we haven't shown an ad in 60 seconds let's show one
434			if ( Date.now() - _interstitialTime  > 60*1000) {
435				if (typeof showVideoInterstitial != "function") { 
436                console.log("Show Video Interstitial not defined yet");
437                return; 
438            }
439					showVideoInterstitial();
440
441					_interstitialTime  = Date.now();
442					//reloadForInterstitial();
443			} 		
444
445		});
446	
447	</script>
447
448</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.