<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wi-Fi speaker Archives - ComparisonTables</title>
	<atom:link href="https://comparisontabl.es/tag/wifi-speaker/feed/" rel="self" type="application/rss+xml" />
	<link>https://comparisontabl.es/tag/wifi-speaker/</link>
	<description>Compare. Sort. Filter. Find.</description>
	<lastBuildDate>Mon, 31 Mar 2025 06:09:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>
	<item>
		<title>Compare Google Nest smart speakers &#038; hubs</title>
		<link>https://comparisontabl.es/google-nest-speakers/</link>
					<comments>https://comparisontabl.es/google-nest-speakers/#respond</comments>
		
		<dc:creator><![CDATA[Guido Lobbrecht]]></dc:creator>
		<pubDate>Fri, 20 Dec 2024 12:31:00 +0000</pubDate>
				<category><![CDATA[Electronic devices]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Speaker]]></category>
		<category><![CDATA[Wi-Fi speaker]]></category>
		<guid isPermaLink="false">https://comparisontabl.es/?page_id=4324</guid>

					<description><![CDATA[<p>Compare all Google Nest Wi-Fi smart speakers and smart hubs ever released on specifications and features with the comparison table on this page. Footnotes</p>
<p>The post <a href="https://comparisontabl.es/google-nest-speakers/" data-wpel-link="internal">Compare Google Nest smart speakers &amp; hubs</a> appeared first on <a href="https://comparisontabl.es" data-wpel-link="internal">ComparisonTables</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Compare all <strong>Google Nest Wi-Fi smart speakers and smart hubs</strong> ever released on specifications and features with the comparison table on this page.</p>



<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile page-intro" style="grid-template-columns:auto 33%"><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">Note: two products have been renamed at a later date: </p>



<ol class="wp-block-list">
<li>The <strong>Home Mini</strong> was renamed to &#8216;Nest Mini&#8217; (gen 1)</li>



<li>The <strong>Home Hub</strong> was renamed to &#8216;Nest Hub&#8217; (gen 1)</li>
</ol>



<p class="wp-block-paragraph">The comparison table below shows these products with their original (launch) name.</p>
</div><figure class="wp-block-media-text__media"><img fetchpriority="high" decoding="async" width="600" height="200" src="https://comparisontabl.es/wp-content/uploads/google-nest-wordmark-logo.jpg" alt="" class="wp-image-4330 size-full" srcset="https://comparisontabl.es/wp-content/uploads/google-nest-wordmark-logo.jpg 600w, https://comparisontabl.es/wp-content/uploads/google-nest-wordmark-logo-300x100.jpg 300w" sizes="(max-width: 600px) 100vw, 600px" /></figure></div>


<div class="wp-block-group small-margin-bottom small-gap block-stretch bigger-strong stack-on-mobile is-horizontal is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-1 wp-block-group-is-layout-flex">
	<div class="ib-container rounded-block">
		<div class="ib-left-column">
			<div class="ib-lc-text">
				<p><strong>Scroll</strong></p>
			</div>
			<div class="ib-lc-icon">
				<svg class="svg-inline--fa fa-left-right icon" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="left-right" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z"></path></svg>
			</div>
		</div>
		<div class="ib-right-column">
			<p>Scroll sideways, or click the scroll buttons; <span class="scroll-arrow">&lt;</span> &amp; <span class="scroll-arrow">&gt;</span>, to see all data.</p>
		</div>
	</div>
	<div class="ib-container rounded-block">
		<div class="ib-left-column">
			<div class="ib-lc-text">
				<p><strong>Sort</strong></p>
			</div>
			<div class="ib-lc-icon">
				<svg class="svg-inline--fa fa-sort icon" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="sort" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" data-fa-i2svg=""><path fill="currentColor" d="M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8L32 224c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l256 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z"></path></svg>			</div>
		</div>
		<div class="ib-right-column">
			<p>Click column headers (<img decoding="async" style="vertical-align: middle; width: 60px; height: 17px; border-radius: 0px;" src="https://comparisontabl.es/wp-content/uploads/sort-img-v2.png" alt="Sorting Example">) to sort; click again: change direction.</p>
		</div>
	</div>
	<div class="ib-container rounded-block">
		<div class="ib-left-column">
			<div class="ib-lc-text">
				<p><strong>Filter</strong></p>
			</div>
			<div class="ib-lc-icon">
				<svg class="svg-inline--fa fa-filter icon" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="filter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M3.9 54.9C10.5 40.9 24.5 32 40 32l432 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9 320 448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z"></path></svg>
			</div>
		</div>
		<div class="ib-right-column">
			<p>Use checkboxes (<svg class="svg-inline--fa fa-square-check icon" aria-hidden="true" focusable="false" data-prefix="far" data-icon="square-check" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" data-fa-i2svg=""><path fill="currentColor" d="M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"></path></svg>), select from dropdowns (<svg class="svg-inline--fa fa-caret-down icon" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="caret-down" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" data-fa-i2svg=""><path fill="currentColor" d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"></path></svg>), or enter a range.</p>
		</div>
	</div>
</div>

<div class="ib-container rounded-block ib-avsb" style="background:linear-gradient(207deg,rgba(244,215,215,0.6) 0%,rgba(240,255,204,0.6) 100%)">
	<div class="ib-left-column">
		<img decoding="async" width="45" height="27" src="https://comparisontabl.es/wp-content/uploads/a-vs-b-tr-300x180.png" alt="A|B">
	</div>
	<div class="ib-right-column">
		<p>Want to <strong>compare two Google Nest smart speakers side-by-side</strong> to quickly spot the differences? For instance: Nest Hub vs Nest Hub Max? Click the link below to use the side-by-side comparison tool. <svg class="svg-inline--fa fa-angle-double-down icon" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-double-down" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" data-fa-i2svg=""><path fill="currentColor" d="M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z"></path></svg></p>
	</div>
</div>


<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed" data-anchor="sbs" data-scroll-offset="0" data-anchor-in-url="yes"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>Show side-by-side comparison tool</div><div class="su-spoiler-content su-u-clearfix su-u-trim">

<form action="" method="GET" class="side-by-side-forms" id="comparisonForm">
	<select name="product1" style="width: 225px;" class="url-param"></select>
	versus:
	<select name="product2" style="width: 225px;" class="url-param"></select>
	
	<input type="hidden" id="differencesOnlyInput" class="url-param">
	<input type="hidden" id="compareSizeInput" class="url-param">

	<input type="hidden" name="table_id" value="4329">
	<input type="submit" value="Compare!" style="margin-left: 10px;" id="compareButton">
</form>

<div id="comparisonResults"></div>

<style>
	table.side-by-side-comparison img.relative-size { width: auto !important; height: auto !important; max-width: none !important; max-height: none !important; }
	#compareButton { transition: background-color 0.4s ease-in-out; }
	#comparisonButton.loading { background-color: #555 !important; color: #fff !important; cursor: wait; }
	#comparisonResults { transition: opacity 0.4s ease-in-out, filter 0.4s ease-in-out; }
	#comparisonResults.loading { opacity: 0; filter: grayscale(80%); }
</style>

<script>
	var sbs_app_data = {
		ajax_url: "https://comparisontabl.es/sbs-data.php",
		product_names: ["Nest Hub (gen 2)","Nest Audio","Nest Mini (gen 2)","Nest Hub Max","Home Hub","Home Max","Home Mini","Google Home"],
		subheadings: ["Audio specifications","Display specifications","Sensors","Connectivity","Ports","Control options","Physical specifications","More information"],
		placements: [7,11,14,19,24,27,33,40],
		api_key: "sbs_key_5a7b3c9d1e8f2g4h",
		config: {
			size_comparison: "No".trim().toLowerCase(),
			exclude_partial: "".trim(),
			exclude_exact: "".trim()
		}
	};
</script>


<script>
function _0x98aa(){var _0x3e2957=['Yes','.url-param[name]','yes','writeText','#differencesOnlyInput','amazon','<p>Sorry,\x20there\x20was\x20a\x20network\x20error.\x20Please\x20try\x20again.</p>','toLowerCase','_blank','preventDefault','remove','exclude_exact','sbs','current_price','<tbody>','<thead>','#comparisonResults','sbs-subheading','differencesOnly','subheadings','share','append','Network\x20Error:','function','<div\x20class=\x22share-container\x22\x20style=\x22margin-top:10px;\x22><button\x20id=\x22share-comparison\x22><i\x20class=\x22icon\x20fa\x20fa-share-alt\x22\x20aria-hidden=\x22true\x22></i>\x20Save\x20or\x20share\x20this\x20comparison!</button></div>','serialize','max','undefined','product_names','#compareButton','option','<a\x20','add','change','check_price','val','Link\x20copied\x20to\x20clipboard.','image','Sharing\x20failed:','14jqpXQj','name','href','N/A','currentprice',':checked','api_key','classList','removeClass','<div></div>','hash','</th></tr>','each','true','#showDifferences','#compareSizeInput','select2','#comparisonResults\x20#showDifferences','16168536iLFoot','<tr><td\x20colspan=\x223\x22\x20class=\x22sbs-subheading\x22>Check\x20price\x20&amp;\x20reviews</td></tr>','loading','.wpel-icon','select[name=\x22product1\x22]','</tbody>','click','#comparisonResults\x20table.side-by-side-comparison\x20img.relative-size','split','#comparisonResults\x20#differences-only','Could\x20not\x20copy\x20text:\x20','><td>','removeProperty','410601xFhvNJ','size_comparison','get','some','XMLHttpRequest','<p>Sorry,\x20there\x20was\x20an\x20error\x20loading\x20the\x20comparison.</p>','addClass','searchParams','clipboard','Name','submit','column_titles','nofollow\x20noopener','9SFHfWP','hostname','indexOf','filter','compareSize','#comparisonResults\x20#compareSize','ajax','width','convertToGeoRiotLinks','img','userAgent','toString','important','#comparisonForm','placements','size','<img\x20decoding=\x22async\x22\x20src=\x22','<tr><td\x20colspan=\x223\x22\x20class=\x22sbs-subheading\x22>','history','</td><td>','td:first,\x20th:first','#comparisonResults\x20table.side-by-side-comparison\x20tr','text','#share-comparison','change.select2','ready','\x22\x20alt=\x22Image\x22\x20loading=\x22lazy\x22>','setProperty','1936676dhQrld','string','object','</th><th>','disabled','style','delete','location','length','2141245IqpViZ','951660EVGMiV','td,\x20th','search','<table\x20class=\x22side-by-side-comparison\x22>','checked','</td></tr>','td[colspan]','\x20and\x20','exclude_partial','includes','3271YgBROF','image_thumb','4335606MOltuQ','error','select[name=\x22product2\x22]','<label\x20style=\x22margin-left:\x2010px;\x22><input\x20type=\x22checkbox\x22\x20id=\x22compareSize\x22>\x20Compare\x20size</label>','trigger','product2','pushState','replace','find','option[value=\x22','prop','Paid\x20only','data','wpel-icon-left','<tr','map','\x20-\x20ComparisonTables','forEach','\x20on\x20ComparisonTabl.es','removeAttr','</thead>','<tr\x20class=\x22sbs-header\x22><th>','set','title','show','product1','relative-size','match','Georiot.amazon.convertToGeoRiotLinks\x20failed,\x20continuing\x20without\x20it:','html','prepend','hide','attr','trim'];_0x98aa=function(){return _0x3e2957;};return _0x98aa();}var _0x372f88=_0x4c3a;function _0x4c3a(_0x11e4da,_0x5b568e){_0x11e4da=_0x11e4da-0x82;var _0x98aad5=_0x98aa();var _0x4c3a2c=_0x98aad5[_0x11e4da];return _0x4c3a2c;}(function(_0x592eb5,_0x207baf){var _0x358700=_0x4c3a,_0x15540a=_0x592eb5();while(!![]){try{var _0x1dede0=parseInt(_0x358700(0x82))/0x1*(-parseInt(_0x358700(0xcd))/0x2)+parseInt(_0x358700(0xec))/0x3+-parseInt(_0x358700(0x11f))/0x4+-parseInt(_0x358700(0x11e))/0x5+-parseInt(_0x358700(0x84))/0x6+-parseInt(_0x358700(0x115))/0x7+-parseInt(_0x358700(0xdf))/0x8*(-parseInt(_0x358700(0xf9))/0x9);if(_0x1dede0===_0x207baf)break;else _0x15540a['push'](_0x15540a['shift']());}catch(_0x1059bf){_0x15540a['push'](_0x15540a['shift']());}}}(_0x98aa,0x72a64),jQuery(document)[_0x372f88(0x112)](function(_0x396a1d){var _0x24aa66=_0x372f88,_0x3cbfad=sbs_app_data[_0x24aa66(0xc2)],_0x1ebf65=sbs_app_data['config'],_0x3e0a31=sbs_app_data[_0x24aa66(0xb9)],_0x40b264=sbs_app_data[_0x24aa66(0x107)],_0x869580=_0x396a1d(_0x24aa66(0xe3)),_0x50db88=_0x396a1d('select[name=\x22product2\x22]'),_0x26d4ec=_0x1ebf65[_0x24aa66(0x127)]?_0x1ebf65['exclude_partial'][_0x24aa66(0xe7)](',')[_0x24aa66(0x93)](_0xe9b14c=>_0xe9b14c[_0x24aa66(0xa5)]()[_0x24aa66(0xad)]()):[],_0x203c25=_0x1ebf65[_0x24aa66(0xb1)]?_0x1ebf65[_0x24aa66(0xb1)][_0x24aa66(0xe7)](',')['map'](_0x5797ec=>_0x5797ec[_0x24aa66(0xa5)]()['toLowerCase']()):[];function _0x55b837(_0xef2656){var _0x4b8c98=_0x24aa66;return new URLSearchParams(window['location'][_0x4b8c98(0x121)])[_0x4b8c98(0xee)](_0xef2656);}var _0x2ad732=_0x55b837(_0x24aa66(0x9d))||_0x3cbfad[0x0],_0x34007d=_0x55b837(_0x24aa66(0x89))||(_0x3cbfad[0x1]||_0x3cbfad[0x0]);_0x3cbfad[_0x24aa66(0x95)](function(_0x582a75){var _0x4d2136=_0x24aa66;_0x869580[_0x4d2136(0xbb)](new Option(_0x582a75,_0x582a75)),_0x50db88[_0x4d2136(0xbb)](new Option(_0x582a75,_0x582a75));}),_0x869580[_0x24aa66(0xdd)]()[_0x24aa66(0xc9)](_0x2ad732)['trigger'](_0x24aa66(0xc7)),_0x50db88['select2']()[_0x24aa66(0xc9)](_0x34007d)[_0x24aa66(0x88)](_0x24aa66(0xc7));function _0x96b701(_0x1ed2b8){var _0x2d813e=_0x24aa66,_0x2e782f='';_0x2e782f+='<div\x20id=\x22differences-only\x22><label><input\x20type=\x22checkbox\x22\x20id=\x22showDifferences\x22>\x20Differences\x20only</label></div>',_0x2e782f+=_0x2d813e(0x122);var _0x230e86=0x1,_0x4228fd=!![],_0x1f20cf=_0x1ed2b8[_0x2d813e(0xf7)],_0x1df380='name',_0x3dec59=_0x1f20cf[_0x1df380]||_0x2d813e(0xf5);delete _0x1f20cf[_0x1df380],_0x1f20cf={[_0x1df380]:_0x3dec59,..._0x1f20cf};var _0x312526='',_0x32aed8='',_0xbc0ae2='',_0x3837ec='';for(const _0x4f4d2f in _0x1f20cf){if(_0x40b264[_0x2d813e(0x128)](_0x230e86)){let _0x1c3449=_0x40b264[_0x2d813e(0xfb)](_0x230e86);_0x3e0a31[_0x1c3449]&&(_0x32aed8+=_0x2d813e(0x10a)+_0x3e0a31[_0x1c3449]+_0x2d813e(0x124));}let _0x6dd8b3=_0x1f20cf[_0x4f4d2f][_0x2d813e(0x8b)](/<br\s*\/?>/ig,'')[_0x2d813e(0x8b)](/\s?ⓘ/,''),_0x483057=_0x1ed2b8['product1'][_0x4f4d2f]||'',_0x226983=_0x1ed2b8[_0x2d813e(0x89)][_0x4f4d2f]||'';typeof _0x483057==='string'&&(_0x483057=_0x483057['replace'](/<span style="background-color: [^"]+;">(.*?)<\/span>/,'$1')[_0x2d813e(0x8b)](/<div class="info-icon"[^>]*>.*?<div class="info-text"[^>]*>(.*?)<\/div><\/div>/,'$1')[_0x2d813e(0x8b)](/<br\s*\/?>/ig,''));typeof _0x226983===_0x2d813e(0x116)&&(_0x226983=_0x226983[_0x2d813e(0x8b)](/<span style="background-color: [^"]+;">(.*?)<\/span>/,'$1')[_0x2d813e(0x8b)](/<div class="info-icon"[^>]*>.*?<div class="info-text"[^>]*>(.*?)<\/div><\/div>/,'$1')['replace'](/<br\s*\/?>/ig,''));if(_0x4f4d2f==='name')_0x483057=(_0x483057+'')['replace'](/<a href="[^"]*">(.*?)<\/a>/,'$1'),_0x226983=(_0x226983+'')[_0x2d813e(0x8b)](/<a href="[^"]*">(.*?)<\/a>/,'$1');else{if(_0x4f4d2f===_0x2d813e(0xcb)){if(typeof _0x483057===_0x2d813e(0x117)&&_0x483057!==null&&_0x483057[_0x2d813e(0x83)]){let _0x5c1bbb=_0x483057['image_thumb'][_0x2d813e(0x8b)](/-\d+x\d+(?=\.\w+$)/,'');_0x483057=_0x2d813e(0x109)+_0x5c1bbb+_0x2d813e(0x113);}else _0x483057=_0x2d813e(0xd0);if(typeof _0x226983===_0x2d813e(0x117)&&_0x226983!==null&&_0x226983[_0x2d813e(0x83)]){let _0x173c36=_0x226983[_0x2d813e(0x83)][_0x2d813e(0x8b)](/-\d+x\d+(?=\.\w+$)/,'');_0x226983='<img\x20decoding=\x22async\x22\x20src=\x22'+_0x173c36+_0x2d813e(0x113);}else _0x226983=_0x2d813e(0xd0);}}(_0x4f4d2f[_0x2d813e(0xfb)](_0x2d813e(0xb3))!==-0x1||_0x4f4d2f[_0x2d813e(0xfb)](_0x2d813e(0xd1))!==-0x1||_0x4f4d2f[_0x2d813e(0xfb)](_0x2d813e(0xc8))!==-0x1||_0x4f4d2f[_0x2d813e(0xfb)]('checkprice')!==-0x1)&&(_0xbc0ae2=_0x483057,_0x3837ec=_0x226983);var _0x99133a=_0x483057===''&&_0x226983===''?'\x20class=\x22hide-row\x22':'';_0x4228fd?(_0x312526+=_0x2d813e(0x99)+_0x6dd8b3+_0x2d813e(0x118)+_0x483057+_0x2d813e(0x118)+_0x226983+_0x2d813e(0xd8),_0x4228fd=![]):_0x32aed8+=_0x2d813e(0x92)+_0x99133a+_0x2d813e(0xea)+_0x6dd8b3+_0x2d813e(0x10c)+_0x483057+_0x2d813e(0x10c)+_0x226983+_0x2d813e(0x124),_0x230e86++;}if(_0xbc0ae2||_0x3837ec){var _0x6726d4=_0x396a1d(_0x2d813e(0xd6))[_0x2d813e(0xa1)](_0xbc0ae2)['text']()['trim'](),_0x540488=_0x396a1d(_0x2d813e(0xd6))[_0x2d813e(0xa1)](_0x3837ec)[_0x2d813e(0x10f)]()[_0x2d813e(0xa5)](),_0x374f67=_0x6726d4!=='',_0x493bd8=_0x540488!=='',_0x133627=(_0xbc0ae2||'')[_0x2d813e(0xfb)](_0x2d813e(0xc5))!==-0x1,_0x54bc92=(_0x3837ec||'')[_0x2d813e(0xfb)](_0x2d813e(0xc5))!==-0x1;(_0x374f67||_0x493bd8||_0x133627||_0x54bc92)&&(_0x32aed8+=_0x2d813e(0xe0),_0x32aed8+='<tr><td>See\x20price\x20and\x20reviews:</td><td>'+_0xbc0ae2+_0x2d813e(0x10c)+_0x3837ec+_0x2d813e(0x124));}_0x2e782f+=_0x2d813e(0xb5)+_0x312526+_0x2d813e(0x98),_0x2e782f+=_0x2d813e(0xb4)+_0x32aed8+_0x2d813e(0xe4),_0x2e782f+='</table>',_0x2e782f+=_0x2d813e(0xbe),_0x396a1d(_0x2d813e(0xb6))[_0x2d813e(0xa1)](_0x2e782f);}function _0x849395(){var _0x18d674=_0x24aa66;const _0x3c0116=window[_0x18d674(0x11c)][_0x18d674(0xfa)];_0x396a1d('#comparisonResults\x20.side-by-side-comparison\x20td,\x20#comparisonResults\x20.side-by-side-comparison\x20th:not(:first-child)')['each'](function(){const _0xa052b1=_0x396a1d(this);_0xa052b1['find']('a')['each'](function(){var _0x1b5094=_0x4c3a;const _0x31f48b=_0x396a1d(this);if(_0x31f48b['hasClass'](_0x1b5094(0x91)))return;let _0x5c7d8e;try{_0x5c7d8e=new URL(_0x31f48b[_0x1b5094(0x8e)](_0x1b5094(0xcf)))[_0x1b5094(0xfa)];}catch(_0x2f192a){return;}_0x5c7d8e!==_0x3c0116&&(_0x31f48b[_0x1b5094(0xa4)]({'target':_0x1b5094(0xae),'rel':_0x1b5094(0xf8)})[_0x1b5094(0xf2)]('wpel-icon-left'),_0x31f48b[_0x1b5094(0x8c)](_0x1b5094(0xe2))[_0x1b5094(0x11d)]===0x0&&_0x31f48b[_0x1b5094(0xa2)]('<i\x20class=\x22wpel-icon\x20dashicons-before\x20dashicons-admin-links\x22\x20aria-hidden=\x22true\x22></i>\x20'));});});}_0x396a1d('#comparisonForm')['on'](_0x24aa66(0xf6),function(_0x4ed80c){var _0x447d28=_0x24aa66;_0x4ed80c[_0x447d28(0xaf)]();var _0x302a4b=_0x396a1d(_0x447d28(0xc3)),_0x2dfae4=_0x396a1d(_0x447d28(0xb6)),_0x32425d={'product1':_0x396a1d(_0x447d28(0xe3))['val'](),'product2':_0x396a1d(_0x447d28(0x86))[_0x447d28(0xc9)](),'table_id':_0x396a1d('input[name=\x22table_id\x22]')['val'](),'api_key':sbs_app_data[_0x447d28(0xd3)]};_0x396a1d[_0x447d28(0xff)]({'url':sbs_app_data['ajax_url'],'type':'POST','headers':{'X-Requested-With':_0x447d28(0xf0)},'data':_0x32425d,'beforeSend':function(){var _0x25fc5a=_0x447d28;_0x302a4b[_0x25fc5a(0x8e)](_0x25fc5a(0x119),!![])[_0x25fc5a(0xf2)](_0x25fc5a(0xe1)),_0x2dfae4['addClass']('loading');},'success':function(_0x27d180){var _0x38b2b7=_0x447d28;_0x27d180['success']?setTimeout(function(){var _0x549937=_0x4c3a;_0x96b701(_0x27d180[_0x549937(0x90)]);_0x32425d[_0x549937(0x9d)]&&_0x32425d['product2']&&(document[_0x549937(0x9b)]=_0x32425d[_0x549937(0x9d)]+'\x20vs\x20'+_0x32425d[_0x549937(0x89)]+_0x549937(0x94));_0x233071();try{typeof Georiot!==_0x549937(0xc1)&&Georiot[_0x549937(0xab)]&&typeof Georiot[_0x549937(0xab)][_0x549937(0x101)]===_0x549937(0xbd)&&Georiot[_0x549937(0xab)][_0x549937(0x101)](0x58f8c,!![]);}catch(_0x5c1bac){console[_0x549937(0x85)](_0x549937(0xa0),_0x5c1bac);}typeof applyConditionalFormatting===_0x549937(0xbd)&&applyConditionalFormatting();_0x849395();var _0xf65462=window['location']['pathname'],_0x90ee9f=_0xf65462+'?'+_0x396a1d('#comparisonForm')['find'](_0x549937(0xa7))[_0x549937(0xbf)]()+'#sbs';_0x90ee9f=_0x90ee9f[_0x549937(0x8b)](/%20/g,'+'),window[_0x549937(0x10b)][_0x549937(0x8a)]({},'',_0x90ee9f),_0x2dfae4['removeClass']('loading');},0x190):(_0x2dfae4[_0x38b2b7(0xa1)](_0x38b2b7(0xf1)),console[_0x38b2b7(0x85)]('AJAX\x20Error:',_0x27d180[_0x38b2b7(0x90)]),_0x2dfae4['removeClass']('loading'));},'error':function(_0x3c72dc,_0x1b8255,_0x40747a){var _0xb80380=_0x447d28;_0x2dfae4[_0xb80380(0xa1)](_0xb80380(0xac)),console[_0xb80380(0x85)](_0xb80380(0xbc),_0x1b8255,_0x40747a,_0x3c72dc['responseText']),_0x2dfae4['removeClass'](_0xb80380(0xe1));},'complete':function(){var _0x38e890=_0x447d28;_0x302a4b[_0x38e890(0x8e)](_0x38e890(0x119),![])[_0x38e890(0xd5)](_0x38e890(0xe1)),window['location'][_0x38e890(0xd7)]=_0x38e890(0xb2);}});});function _0x233071(){var _0x15a97b=_0x24aa66;_0x1ebf65[_0x15a97b(0xed)]===_0x15a97b(0xa8)&&_0x396a1d(_0x15a97b(0xe8))['length']&&_0x396a1d('#comparisonResults\x20#compareSize')[_0x15a97b(0x11d)]===0x0&&_0x396a1d('#comparisonResults\x20#differences-only')['append'](_0x15a97b(0x87)),_0x55b837(_0x15a97b(0xb8))===_0x15a97b(0xda)?_0x396a1d(_0x15a97b(0xde))['prop'](_0x15a97b(0x123),!![]):_0x396a1d(_0x15a97b(0xde))[_0x15a97b(0x8e)](_0x15a97b(0x123),![]),_0x55b837(_0x15a97b(0xfd))===_0x15a97b(0xda)?_0x396a1d(_0x15a97b(0xfe))[_0x15a97b(0x8e)]('checked',!![]):_0x396a1d(_0x15a97b(0xfe))[_0x15a97b(0x8e)](_0x15a97b(0x123),![]),_0x559a8b(),_0x396a1d('#comparisonResults\x20#showDifferences')['is'](':checked')&&_0x396a1d('#comparisonResults\x20#showDifferences')[_0x15a97b(0x88)]('change'),_0x396a1d(_0x15a97b(0xfe))['is'](_0x15a97b(0xd2))&&!_0x396a1d(_0x15a97b(0xfe))['is'](':disabled')&&_0x396a1d(_0x15a97b(0xfe))['trigger'](_0x15a97b(0xc7));}_0x55b837('product1')&&_0x55b837(_0x24aa66(0x89))&&_0x396a1d(_0x24aa66(0x106))[_0x24aa66(0x88)](_0x24aa66(0xf6));function _0x41cf2d(){var _0x21bcb9=_0x24aa66,_0x1f0100=_0x869580['val'](),_0x33ff7e=_0x50db88['val']();_0x869580['find'](_0x21bcb9(0xc4))[_0x21bcb9(0x8e)](_0x21bcb9(0x119),![]),_0x50db88[_0x21bcb9(0x8c)](_0x21bcb9(0xc4))[_0x21bcb9(0x8e)](_0x21bcb9(0x119),![]),_0x1f0100&&_0x50db88[_0x21bcb9(0x8c)]('option[value=\x22'+_0x1f0100['replace'](/"/g,'\x5c\x22')+'\x22]')[_0x21bcb9(0x8e)](_0x21bcb9(0x119),!![]),_0x33ff7e&&_0x869580[_0x21bcb9(0x8c)](_0x21bcb9(0x8d)+_0x33ff7e[_0x21bcb9(0x8b)](/"/g,'\x5c\x22')+'\x22]')[_0x21bcb9(0x8e)](_0x21bcb9(0x119),!![]),_0x869580[_0x21bcb9(0x88)](_0x21bcb9(0x111)),_0x50db88[_0x21bcb9(0x88)]('change.select2');}_0x41cf2d(),_0x869580['on'](_0x24aa66(0xc7),_0x41cf2d),_0x50db88['on']('change',_0x41cf2d);function _0x5a9b60(_0x4df5b7,_0x2ea8c2){var _0x3cad0f=_0x24aa66,_0x40819a=_0x396a1d(_0x4df5b7)['find']('a'),_0x54282f=_0x396a1d(_0x2ea8c2)[_0x3cad0f(0x8c)]('a'),_0x1d37e1=[_0x3cad0f(0xa6),'No',_0x3cad0f(0x8f)];if(_0x40819a['length']&&_0x54282f['length']){var _0x374980=_0x40819a[_0x3cad0f(0x10f)]()['trim'](),_0x59ee1f=_0x54282f[_0x3cad0f(0x10f)]()[_0x3cad0f(0xa5)](),_0x3012d7=_0x40819a['attr'](_0x3cad0f(0xcf)),_0x322710=_0x54282f['attr'](_0x3cad0f(0xcf));return _0x374980===_0x59ee1f&&_0x3012d7!==_0x322710&&_0x1d37e1['includes'](_0x374980);}return![];}function _0xa11515(){var _0x43f547=_0x24aa66,_0x2b3a77=_0x396a1d(_0x43f547(0x10e))[_0x43f547(0xfc)](function(){var _0x13cf7f=_0x43f547;if(_0x396a1d(this)['find'](_0x13cf7f(0x125))[_0x13cf7f(0x11d)]>0x0||_0x396a1d(this)['hasClass'](_0x13cf7f(0xb7)))return![];var _0x5b759e=_0x396a1d(this)['find'](_0x13cf7f(0x10d))['text']()[_0x13cf7f(0xa5)]()['toLowerCase']();return _0x5b759e[_0x13cf7f(0xfb)](_0x13cf7f(0x108))===0x0;})['first']();if(_0x2b3a77['length']){var _0x17cbd9=_0x2b3a77['find']('td,\x20th')['eq'](0x1)[_0x43f547(0x10f)]()[_0x43f547(0xa5)](),_0x29d979=_0x2b3a77['find']('td,\x20th')['eq'](0x2)[_0x43f547(0x10f)]()[_0x43f547(0xa5)](),_0x58e5ec=_0x17cbd9[_0x43f547(0x9f)](/[\d.]+/g)||[],_0xb54d65=_0x29d979[_0x43f547(0x9f)](/[\d.]+/g)||[];if(_0x58e5ec['length']>=0x2&&_0xb54d65[_0x43f547(0x11d)]>=0x2){var _0xb0fdbf=parseFloat(_0x58e5ec[0x0]),_0x30d0f1=parseFloat(_0x58e5ec[0x1]),_0x249296=parseFloat(_0xb54d65[0x0]),_0x343ed8=parseFloat(_0xb54d65[0x1]),_0x4aa7df=_0xb0fdbf>=_0x30d0f1?_0xb0fdbf:_0x30d0f1,_0x458960=_0x249296>=_0x343ed8?_0x249296:_0x343ed8,_0x1f9d28=Math[_0x43f547(0xc0)](_0x4aa7df,_0x458960),_0x218c0a=_0x1f9d28>0x0?_0x4aa7df/_0x1f9d28:0x1,_0x19031f=_0x1f9d28>0x0?_0x458960/_0x1f9d28:0x1,_0x45d047=_0x218c0a*0x64,_0x3b45e4=_0x19031f*0x64,_0xea8716=_0x396a1d(_0x43f547(0x10e))[_0x43f547(0xfc)](function(){var _0x3eea29=_0x43f547;return _0x396a1d(this)[_0x3eea29(0x8c)](_0x3eea29(0x10d))[_0x3eea29(0x10f)]()[_0x3eea29(0xa5)]()['toLowerCase']()==='image';});_0xea8716[_0x43f547(0x8c)](_0x43f547(0x120))['eq'](0x1)[_0x43f547(0x8c)](_0x43f547(0x102))['each'](function(){var _0x4d9735=_0x43f547;this['classList'][_0x4d9735(0xc6)](_0x4d9735(0x9e)),this[_0x4d9735(0x11a)][_0x4d9735(0x114)](_0x4d9735(0x100),_0x45d047+'%',_0x4d9735(0x105));}),_0xea8716[_0x43f547(0x8c)](_0x43f547(0x120))['eq'](0x2)[_0x43f547(0x8c)](_0x43f547(0x102))['each'](function(){var _0x4e6f3b=_0x43f547;this[_0x4e6f3b(0xd4)][_0x4e6f3b(0xc6)]('relative-size'),this[_0x4e6f3b(0x11a)]['setProperty'](_0x4e6f3b(0x100),_0x3b45e4+'%',_0x4e6f3b(0x105));});}}}function _0x559a8b(){var _0x206983=_0x24aa66,_0x49b0f0=(_0x869580[_0x206983(0xc9)]()||'')[_0x206983(0xad)](),_0x14615c=(_0x50db88['val']()||'')[_0x206983(0xad)](),_0x1f6ea6=![];_0x26d4ec['some'](_0x4a7b53=>_0x49b0f0[_0x206983(0x128)](_0x4a7b53)||_0x14615c[_0x206983(0x128)](_0x4a7b53))&&(_0x1f6ea6=!![]);_0x203c25[_0x206983(0xef)](_0x890c8=>_0x49b0f0===_0x890c8||_0x14615c===_0x890c8)&&(_0x1f6ea6=!![]);var _0x27f8b8=_0x396a1d(_0x206983(0xfe));if(_0x1f6ea6){_0x27f8b8[_0x206983(0x11d)]&&(_0x27f8b8[_0x206983(0x8e)](_0x206983(0x123),![]),_0x27f8b8[_0x206983(0x8e)](_0x206983(0x119),!![]));_0x396a1d('#compareSizeInput')[_0x206983(0x97)](_0x206983(0xce));var _0x4656a3=new URL(window[_0x206983(0x11c)]);_0x4656a3[_0x206983(0xf3)][_0x206983(0x11b)](_0x206983(0xfd)),window['history']['replaceState']({},'',_0x4656a3);}else _0x27f8b8['length']&&_0x27f8b8[_0x206983(0x8e)](_0x206983(0x119),![]);}_0x396a1d('#comparisonResults')['on'](_0x24aa66(0xc7),_0x24aa66(0xdb),function(){var _0x3738eb=_0x24aa66,_0x4929b0=_0x396a1d(this)['is'](_0x3738eb(0xd2));_0x4929b0?_0x396a1d(_0x3738eb(0xaa))[_0x3738eb(0xa4)](_0x3738eb(0xce),_0x3738eb(0xb8))['val'](_0x3738eb(0xda)):_0x396a1d('#differencesOnlyInput')[_0x3738eb(0x97)](_0x3738eb(0xce))['val']('');var _0x5cdfb3=new URL(window[_0x3738eb(0x11c)]);_0x4929b0?_0x5cdfb3['searchParams'][_0x3738eb(0x9a)](_0x3738eb(0xb8),'true'):_0x5cdfb3[_0x3738eb(0xf3)][_0x3738eb(0x11b)](_0x3738eb(0xb8)),window[_0x3738eb(0x10b)]['pushState']({},'',_0x5cdfb3),_0x396a1d(_0x3738eb(0x10e))[_0x3738eb(0xd9)](function(){var _0x42fc74=_0x3738eb;if(!_0x396a1d(this)[_0x42fc74(0x8c)]('th')[_0x42fc74(0x11d)]&&!_0x396a1d(this)[_0x42fc74(0x8c)](_0x42fc74(0x125))[_0x42fc74(0x11d)]){var _0x37944a=_0x396a1d(this)[_0x42fc74(0x8c)]('td');(_0x37944a['eq'](0x1)[_0x42fc74(0xa1)]()===_0x37944a['eq'](0x2)[_0x42fc74(0xa1)]()||_0x5a9b60(_0x37944a['eq'](0x1),_0x37944a['eq'](0x2)))&&(_0x4929b0?_0x396a1d(this)[_0x42fc74(0xa3)]():_0x396a1d(this)[_0x42fc74(0x9c)]());}});}),_0x396a1d('#comparisonResults')['on'](_0x24aa66(0xc7),'#compareSize',function(){var _0x3a4d56=_0x24aa66,_0x5dd31a=_0x396a1d(this)['is'](':checked');_0x5dd31a?_0x396a1d(_0x3a4d56(0xdc))[_0x3a4d56(0xa4)](_0x3a4d56(0xce),_0x3a4d56(0xfd))['val'](_0x3a4d56(0xda)):_0x396a1d('#compareSizeInput')[_0x3a4d56(0x97)](_0x3a4d56(0xce))[_0x3a4d56(0xc9)]('');var _0x2dfe21=new URL(window[_0x3a4d56(0x11c)]);_0x5dd31a?(_0x2dfe21['searchParams'][_0x3a4d56(0x9a)](_0x3a4d56(0xfd),_0x3a4d56(0xda)),_0xa11515()):(_0x2dfe21[_0x3a4d56(0xf3)][_0x3a4d56(0x11b)](_0x3a4d56(0xfd)),_0x396a1d(_0x3a4d56(0xe6))['each'](function(){var _0x16227f=_0x3a4d56;this[_0x16227f(0xd4)][_0x16227f(0xb0)](_0x16227f(0x9e)),this['style'][_0x16227f(0xeb)](_0x16227f(0x100));})),window[_0x3a4d56(0x10b)][_0x3a4d56(0x8a)]({},'',_0x2dfe21);}),_0x396a1d(_0x24aa66(0xb6))['on'](_0x24aa66(0xe5),_0x24aa66(0x110),function(){var _0xc5fc61=_0x24aa66,_0x4baba9=new URL(window['location']);_0x4baba9[_0xc5fc61(0xd7)]=_0xc5fc61(0xb2);var _0x541f39=_0x4baba9[_0xc5fc61(0x104)](),_0x3bffef=/Mobi|Android/i['test'](navigator[_0xc5fc61(0x103)]);navigator['share']&&_0x3bffef?navigator[_0xc5fc61(0xba)]({'title':'Compare\x20'+_0x2ad732+_0xc5fc61(0x126)+_0x34007d+_0xc5fc61(0x96),'url':_0x541f39})['catch'](function(_0x507ee7){var _0x14930e=_0xc5fc61;console['log'](_0x14930e(0xcc),_0x507ee7);}):navigator[_0xc5fc61(0xf4)][_0xc5fc61(0xa9)](_0x541f39)['then'](function(){var _0x209fe7=_0xc5fc61;alert(_0x209fe7(0xca));},function(_0x621c97){var _0x47c9ad=_0xc5fc61;console['error'](_0x47c9ad(0xe9),_0x621c97);});});}));
</script>
</div></div>


<div id="settings" class="table-options">
<div style="display: flex; align-items: center; justify-content: flex-start; margin-bottom: 5px;">
<svg class="svg-inline--fa fa-gear" aria-hidden="true" style="margin-right: 5px;" focusable="false" data-prefix="fas" data-icon="gear" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z"></path></svg>
<strong style="white-space: nowrap; margin-right: 10px;">Settings</strong>
<div class="su-divider su-divider-style-default" style="flex-grow: 1; margin: 15px 0; border-width: 1px; border-color: #E9E9E9;"></div>
</div>
<div class="settings-row" style="display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-start;">
<div id="font-size-controls" style="display: flex; align-items: center; gap: 1px; border-bottom: 1px solid #e1e1e1;">
<span style="white-space: nowrap; margin: 0 3px 1px 0;">Size:</span>
<button id="normal" onclick="changeFontSize('normal')" class="font-button active" title="Click to set font size to normal (14px)" style="font-size: 12px; border-radius: 5px;">Normal</button>
<button id="small" onclick="changeFontSize('small')" class="font-button" title="Click to set font size to small (12px)" style="font-size: 12px; border-radius: 5px;">Small</button>
<button id="extra-small" onclick="changeFontSize('extra-small')" class="font-button" title="Click to set font size to extra small (10px)" style="font-size: 12px; border-radius: 5px;">XS</button>
</div>
<div id="hide-controls" style="display: flex; align-items: center; gap: 1px; border-bottom: 1px solid #e1e1e1;">
<span style="white-space: nowrap; margin: 0 3px 1px 0;">Hide:</span>
<button id="hide-rows" onclick="toggleRows()" class="hide-button" title="Click to select and hide any rows you don't want to see" style="font-size: 12px; border-radius: 5px;">Rows</button>
<button id="hide-columns" onclick="toggleColumns()" class="hide-button" title="Click to select and hide any columns you don't want to see" style="font-size: 12px; border-radius: 5px;">Columns</button>
<button id="hide-filters" onclick="toggleFilters()" class="hide-button" title="Click to hide/unhide filters" style="font-size: 12px; border-radius: 5px;">Filters</button>
</div>
<div id="pivot-controls" style="display: flex; align-items: center; gap: 1px;">
<button id="pivot-table" onclick="togglePivot()" class="hide-button" title="Click to pivot the table (products as columns)" style="font-size: 16px;border-radius: 5px;"><svg class="svg-inline--fa fa-table-pivot" aria-hidden="true" focusable="false" data-prefix="fa-regular" data-icon="table-pivot" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M464 416c0 8.8-7.2 16-16 16l-320 0 0-240L0 192 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L160 32l0 128 304 0 0 256zM64 32C28.7 32 0 60.7 0 96l0 64 128 0 0-128L64 32zM414.8 246.1c2.5-6 1.1-12.9-3.5-17.4l-32-32c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9l16 0 0 48c0 8.8-7.2 16-16 16l-48 0 0-16c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-32 32c-6.2 6.2-6.2 16.4 0 22.6l32 32c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8l0-16 48 0c26.5 0 48-21.5 48-48l0-48 16 0c6.5 0 12.3-3.9 14.8-9.9z"></path></svg></button>
</div>
<div class="switch-container" style="display: flex; align-items: center; gap: 10px; border-bottom: 1px solid white;">
<label for="toggleFormatting" class="formatting-label" style="white-space: nowrap;">Color coding:</label>
<label class="switch">
<input type="checkbox" id="toggleFormatting" checked>
<span class="slider round"></span>
</label>
<div class="legend" style="display: flex;">
<div class="legend-item" style="background-color: rgba(240, 255, 204, 0.6);">Great/yes</div>
<div class="legend-item" style="background-color: rgba(255, 248, 187, 0.6);">Good</div>
<div class="legend-item" style="background-color: rgba(255, 232, 195, 0.6);">Not good</div>
<div class="legend-item" style="background-color: rgba(244, 215, 215, 0.6);">Bad/no</div>
</div>
</div>
</div>
</div>
<style>
.pivot-label { background-color: rgba(0, 0, 0, 0.03); } .pivot-category-label { position: sticky; left: 0; display: inline-block; padding-left: 8px; } tr.pivot-category-row th { text-decoration: underline; font-size: 20px !important; color: var(--contrast) !important; padding: 8px 8px 8px 0px !important; }  tr.footable-header.pivot-header-row th { background-color: #e9e9e9 !important; text-align: center !important; color: var(--contrast) !important; font-size: 20px !important; white-space: normal !important; overflow-wrap: break-word !important; word-break: break-word !important; vertical-align: top !important; } tr.footable-header.pivot-header-row th.pivot-corner { text-align: left !important; }  .pivot-header-row th,
.pivot-spec-row td { text-align: center !important; vertical-align: middle !important; } tr.pivot-header-row:not(.is-sticky) th,
.pivot-spec-row td { width: 200px !important; min-width: 200px !important; max-width: 200px !important; } tr.pivot-header-row.is-sticky th { width: 200px; min-width: 200px; max-width: 200px; } .pivot-spec-row td { font-size: 16px !important; } .foo-table.pivoted-view colgroup col { width: auto !important; } .foo-table.pivoted-view td,
.foo-table.pivoted-view th { border-right: none !important; } .pivot-header-row img,
.pivot-spec-row img { width: 150px !important; height: 150px !important; max-width: 150px !important; max-height: 150px !important; object-fit: contain; } .foo-table.pivoted-view tr.pivot-spec-row img.relative-size { width: auto !important; height: auto !important; max-width: none !important; max-height: none !important; } .pivot-corner-controls { display: flex; flex-direction: column; gap: 4px; font-size: 13px; font-weight: normal; text-decoration: none; } .pivot-corner-controls label { display: flex; align-items: center; gap: 4px; cursor: pointer; white-space: nowrap; } .pivot-corner-controls label:has(input:disabled) { cursor: default; color: #999; opacity: 0.6; }  .foo-table.pivoted-view tr.footable-filtering,
.foo-table.pivoted-view tr.footable-paging { opacity: 0.4; pointer-events: none; filter: grayscale(1); } html.dark-mode .foo-table.pivoted-view tr.footable-filtering,
html.dark-mode .foo-table.pivoted-view tr.footable-paging { opacity: 0.8; filter: grayscale(1) brightness(0.25); }  .foo-table.pivoted-view tr.selected-row th { background-color: rgba(255, 134, 134, 87%) !important; } .foo-table.pivoted-view tr.selected-row td.pivot-label { background-color: rgba(255, 134, 134, 87%) !important; } html.dark-mode .foo-table.pivoted-view tr.pivot-category-row.selected-row th { background-color: rgba(255, 134, 134, 87%) !important; } html.dark-mode .foo-table.pivoted-view tr.selected-row .pivot-label { background-color: rgba(255, 134, 134, 87%) !important; } </style>
<script>
function changeFontSize(size) { var table = document.querySelector('.foo-table'); var searchButtons = document.querySelectorAll('.foo-table .form-group.footable-filtering-search .input-group-btn > button'); var sumoSelects = document.querySelectorAll('.footable-filtering .SumoSelect>.CaptionCont>span.placeholder'); var sumoSelectCaptions = document.querySelectorAll('.CaptionCont.SelectBox'); table.classList.remove('small-font', 'extra-small-font'); sumoSelects.forEach(select => { select.classList.remove('sumo-small', 'sumo-extra-small', 'sumo-normal'); }); sumoSelectCaptions.forEach(caption => { caption.classList.remove('sumo-select-normal', 'sumo-select-small', 'sumo-select-extra-small'); }); var controls = document.querySelectorAll('.footable .form-control'); controls.forEach(control => { control.classList.remove('normal-control', 'small-control', 'extra-small-control'); }); if (size === 'small') { table.classList.add('small-font'); controls.forEach(control => control.classList.add('small-control')); sumoSelects.forEach(select => select.classList.add('sumo-small')); sumoSelectCaptions.forEach(caption => caption.classList.add('sumo-select-small')); } else if (size === 'extra-small') { table.classList.add('extra-small-font'); controls.forEach(control => control.classList.add('extra-small-control')); sumoSelects.forEach(select => select.classList.add('sumo-extra-small')); sumoSelectCaptions.forEach(caption => caption.classList.add('sumo-select-extra-small')); } else { controls.forEach(control => control.classList.add('normal-control')); sumoSelects.forEach(select => select.classList.add('sumo-normal')); sumoSelectCaptions.forEach(caption => caption.classList.add('sumo-select-normal')); } searchButtons.forEach(button => { button.classList.remove('height-normal', 'height-small', 'height-extra-small'); if (size === 'small') { button.classList.add('height-small'); } else if (size === 'extra-small') { button.classList.add('height-extra-small'); } else { button.classList.add('height-normal'); } }); var buttons = document.querySelectorAll('#font-size-controls button'); buttons.forEach(button => { button.classList.remove('active'); }); document.getElementById(size).classList.add('active'); if (typeof window.refreshStickyHeaderFor === 'function') { window.refreshStickyHeaderFor(table); } } document.addEventListener('DOMContentLoaded', function() { changeFontSize('normal'); const toggle = document.getElementById('toggleFormatting'); toggle.addEventListener('change', function() { const legend = document.querySelector('.legend'); legend.style.display = this.checked ? 'flex' : 'none'; }); }); function toggleFilters() { var tableWrapper = document.querySelector('.ninja_table_wrapper'); var filterRow = document.querySelector('tr.footable-filtering'); var filtersButton = document.getElementById('hide-filters'); var isVisible = filterRow && (filterRow.style.display !== 'none'); if (isVisible) { if (filterRow) { filterRow.style.display = 'none'; } if (tableWrapper) { tableWrapper.classList.add('filters-off'); } filtersButton.classList.add('active'); } else { if (filterRow) { filterRow.style.display = ''; } if (tableWrapper) { tableWrapper.classList.remove('filters-off'); } filtersButton.classList.remove('active'); } } </script>
<script>
let rowToggleState = 'inactive'; let colToggleState = 'inactive'; let rowObserver = null; let selectedCols = new Set();  function toggleRows() { const rowsButton = document.getElementById('hide-rows'); const tableBodyRows = document.querySelectorAll('.foo-table tbody tr'); if (colToggleState === 'selecting') { cancelColumnSelection(); } if (rowToggleState === 'inactive') { rowToggleState = 'selecting'; rowsButton.classList.add('glowing'); rowsButton.textContent = 'Select'; rowsButton.title = "Click to cancel selection"; showPopupMessage('Select all rows you want to hide'); tableBodyRows.forEach(row => { row.addEventListener('click', rowClickHandler); }); } else if (rowToggleState === 'selecting') { const selectedRows = document.querySelectorAll('.foo-table tbody tr.selected-row'); if (selectedRows.length > 0) { selectedRows.forEach(row => { row.style.display = 'none'; row.classList.remove('selected-row'); }); tableBodyRows.forEach(row => { row.removeEventListener('click', rowClickHandler); }); rowsButton.classList.remove('glowing'); rowsButton.classList.add('active'); if (selectedRows.length === 1) { showPopupMessage('One row hidden!'); rowsButton.title = "One row hidden. Click to unhide."; } else { showPopupMessage(selectedRows.length + ' rows hidden!'); rowsButton.title = selectedRows.length + ' rows hidden. Click to unhide.'; } rowsButton.textContent = 'Rows'; rowToggleState = 'hidden'; } else { tableBodyRows.forEach(row => { row.removeEventListener('click', rowClickHandler); }); rowsButton.classList.remove('glowing'); rowsButton.textContent = 'Rows'; rowsButton.title = "Click to select and hide any rows you don't want to see"; rowToggleState = 'inactive'; } } else if (rowToggleState === 'hidden') { let hiddenCount = 0; tableBodyRows.forEach(row => { if (row.style.display === 'none') { hiddenCount++; row.style.display = ''; } }); rowsButton.classList.remove('active'); rowToggleState = 'inactive'; if (hiddenCount === 1) { showPopupMessage('One row unhidden!'); } else { showPopupMessage(hiddenCount + ' rows unhidden!'); } rowsButton.title = "Click to select and hide any rows you don't want to see"; } } function getPivotCategoryMembers(categoryRow) { const members = []; let sibling = categoryRow.nextElementSibling; while (sibling && !sibling.classList.contains('pivot-category-row')) { if (sibling.classList.contains('pivot-spec-row')) { members.push(sibling); } sibling = sibling.nextElementSibling; } return members; } function getPivotCategoryRowFor(specRow) { let sibling = specRow.previousElementSibling; while (sibling) { if (sibling.classList.contains('pivot-category-row')) { return sibling; } sibling = sibling.previousElementSibling; } return null; } function rowClickHandler(event) { const row = event.currentTarget; if (row.classList.contains('pivot-category-row')) { const members = getPivotCategoryMembers(row); const allSelected = row.classList.contains('selected-row') && members.every(r => r.classList.contains('selected-row')); if (allSelected) { row.classList.remove('selected-row'); members.forEach(r => r.classList.remove('selected-row')); } else { row.classList.add('selected-row'); members.forEach(r => r.classList.add('selected-row')); } } else { row.classList.toggle('selected-row'); if (row.classList.contains('pivot-spec-row')) { const categoryRow = getPivotCategoryRowFor(row); if (categoryRow) { const members = getPivotCategoryMembers(categoryRow); const allSelected = members.length > 0 && members.every(r => r.classList.contains('selected-row')); if (allSelected) { categoryRow.classList.add('selected-row'); } else { categoryRow.classList.remove('selected-row'); } } } } const rowsButton = document.getElementById('hide-rows'); const selectedRows = document.querySelectorAll('.foo-table tbody tr.selected-row'); if (selectedRows.length > 0) { rowsButton.textContent = 'Hide!'; rowsButton.title = "Click to hide selected rows"; } else { rowsButton.textContent = 'Select'; rowsButton.title = "Click to cancel selection"; } }  function toggleColumns() { const colsButton = document.getElementById('hide-columns'); const table = document.querySelector('.foo-table'); const tbody = table.querySelector('tbody'); if (rowToggleState === 'selecting') { cancelRowSelection(); } if (colToggleState === 'inactive') { colToggleState = 'selecting'; selectedCols.clear(); colsButton.classList.add('glowing'); colsButton.textContent = 'Select'; colsButton.title = "Click to cancel selection"; showPopupMessage('Select all columns you want to hide'); tbody.addEventListener('click', colClickHandler); } else if (colToggleState === 'selecting') { if (selectedCols.size > 0) { hideSelectedColumns(); colsButton.classList.remove('glowing'); colsButton.classList.add('active'); if (selectedCols.size === 1) { showPopupMessage('One column hidden!'); colsButton.title = "One column hidden. Click to unhide."; } else { showPopupMessage(selectedCols.size + ' columns hidden!'); colsButton.title = selectedCols.size + ' columns hidden. Click to unhide.'; } colsButton.textContent = 'Columns'; colToggleState = 'hidden'; tbody.removeEventListener('click', colClickHandler); updateHeaderColspans(); document.querySelectorAll('.footable-extra-header a.learn-more').forEach(link => { link.style.display = 'none'; }); updateExtraHeaderHighlights(); if (typeof window.refreshStickyHeaderFor === 'function') { window.refreshStickyHeaderFor(table); } const compareSizeCheckboxAfterHide = document.querySelector('.foo-table.pivoted-view #pivotCompareSize'); if (compareSizeCheckboxAfterHide && compareSizeCheckboxAfterHide.checked && typeof pivotUpdateImageScaling === 'function') { pivotUpdateImageScaling(); } } else { tbody.removeEventListener('click', colClickHandler); colsButton.classList.remove('glowing'); colsButton.textContent = 'Columns'; colsButton.title = "Click to select and hide any columns you don't want to see"; colToggleState = 'inactive'; } } else if (colToggleState === 'hidden') { const count = selectedCols.size; unhideColumns(); colsButton.classList.remove('active'); colToggleState = 'inactive'; if (count === 1) { showPopupMessage('One column unhidden!'); } else { showPopupMessage(count + ' columns unhidden!'); } colsButton.title = "Click to select and hide any columns you don't want to see"; updateHeaderColspans(); document.querySelectorAll('.footable-extra-header a.learn-more').forEach(link => { link.style.display = ''; }); updateExtraHeaderHighlights(); if (typeof window.refreshStickyHeaderFor === 'function') { window.refreshStickyHeaderFor(table); } const compareSizeCheckboxAfterUnhide = document.querySelector('.foo-table.pivoted-view #pivotCompareSize'); if (compareSizeCheckboxAfterUnhide && compareSizeCheckboxAfterUnhide.checked && typeof pivotUpdateImageScaling === 'function') { pivotUpdateImageScaling(); } } } function colClickHandler(event) { let cell = event.target; if (cell.classList.contains('footable-first-visible')) return; if (cell.classList.contains('pivot-label')) return; if (cell.closest && cell.closest('tr.pivot-category-row')) return; if (cell.tagName !== 'TD' && cell.tagName !== 'TH') return; let colIndex = cell.cellIndex; if (selectedCols.has(colIndex)) { selectedCols.delete(colIndex); toggleColumnHighlight(colIndex, false); } else { selectedCols.add(colIndex); toggleColumnHighlight(colIndex, true); } const colsButton = document.getElementById('hide-columns'); if (selectedCols.size > 0) { colsButton.textContent = 'Hide!'; colsButton.title = "Click to hide selected columns"; } else { colsButton.textContent = 'Select'; colsButton.title = "Click to cancel selection"; } } function toggleColumnHighlight(colIndex, highlight) { const table = document.querySelector('.foo-table'); const darkMode = document.documentElement.classList.contains('dark-mode'); table.querySelectorAll('tr').forEach(row => { if (row.classList.contains('footable-extra-header')) { return; } let cells = row.children; if (cells.length > colIndex) { const cell = cells[colIndex]; if (highlight) { cell.classList.add('selected-col'); } else { cell.classList.remove('selected-col'); } if (row.classList.contains('pivot-header-row')) { if (highlight) { cell.style.setProperty('background-color', 'rgba(255, 134, 134, 87%)', 'important'); cell.style.setProperty('border-color', 'rgb(232,139,139)', 'important'); } else { cell.style.setProperty('background-color', darkMode ? 'var(--dm-surface-1)' : '#e9e9e9', 'important'); cell.style.removeProperty('border-color'); } } } }); updateExtraHeaderHighlights(); } function updateExtraHeaderHighlights() { const extraHeaderRow = document.querySelector('.foo-table tr.footable-extra-header'); if (!extraHeaderRow) return; const headerRow = document.querySelector('.foo-table tr.footable-header'); if (!headerRow) return; let startIndex = 0; let nthSelectors = []; const extraHeaderCells = extraHeaderRow.querySelectorAll('th'); extraHeaderCells.forEach((th, index) => { if (index === 0) { th.classList.remove('selected-col'); } else { let colspan = parseInt(th.getAttribute('data-original-colspan')) || parseInt(th.getAttribute('colspan')) || 0; if (colToggleState === 'hidden') { th.classList.remove('selected-col'); } else { let allSelected = true; for (let i = startIndex; i < startIndex + colspan; i++) { if (!selectedCols.has(i)) { allSelected = false; break; } } if (allSelected) { th.classList.add('selected-col'); } else { th.classList.remove('selected-col'); } } } let colspan = parseInt(th.getAttribute('data-original-colspan')) || parseInt(th.getAttribute('colspan')) || 0; let lastVisible = -1; const headerCells = headerRow.children; for (let i = startIndex; i < startIndex + colspan; i++) { if (i < headerCells.length) { if (window.getComputedStyle(headerCells[i]).display !== 'none' && !headerCells[i].classList.contains('hidden-col')) { lastVisible = i; } } } if (lastVisible !== -1) { nthSelectors.push(`.foo-table tr.footable-header th:nth-child(${lastVisible + 1})`); nthSelectors.push(`.foo-table tr td:nth-child(${lastVisible + 1})`); } startIndex += colspan; }); let dynamicStyle = document.getElementById('subheadingBorders'); if (dynamicStyle) { dynamicStyle.remove(); } if (nthSelectors.length > 0) { dynamicStyle = document.createElement('style'); dynamicStyle.id = 'subheadingBorders'; dynamicStyle.textContent = nthSelectors.join(', ') + ` {
				border-right: 2px solid rgba(220, 220, 220, 1);
			}`; document.head.appendChild(dynamicStyle); } } function hideSelectedColumns() { const table = document.querySelector('.foo-table'); table.querySelectorAll('tr').forEach(row => { if (row.classList.contains('footable-extra-header')) return; selectedCols.forEach(colIndex => { let cells = row.children; if (cells.length > colIndex) { cells[colIndex].classList.add('hidden-col'); } }); }); selectedCols.forEach(colIndex => toggleColumnHighlight(colIndex, false)); } function unhideColumns() { const table = document.querySelector('.foo-table'); selectedCols.forEach(colIndex => { table.querySelectorAll('tr').forEach(row => { let cells = row.children; if (cells.length > colIndex) { cells[colIndex].classList.remove('hidden-col'); } }); toggleColumnHighlight(colIndex, false); }); selectedCols.clear(); } function cancelRowSelection() { const tableBodyRows = document.querySelectorAll('.foo-table tbody tr'); tableBodyRows.forEach(row => { row.removeEventListener('click', rowClickHandler); row.classList.remove('selected-row'); }); const rowsButton = document.getElementById('hide-rows'); rowsButton.classList.remove('glowing'); rowsButton.textContent = 'Rows'; rowsButton.title = "Click to select and hide any rows you don't want to see"; rowToggleState = 'inactive'; } function cancelColumnSelection() { const table = document.querySelector('.foo-table'); const tbody = table.querySelector('tbody'); tbody.removeEventListener('click', colClickHandler); table.querySelectorAll('tr').forEach(row => { row.querySelectorAll('.selected-col').forEach(cell => { cell.classList.remove('selected-col'); }); }); const colsButton = document.getElementById('hide-columns'); colsButton.classList.remove('glowing'); colsButton.textContent = 'Columns'; colsButton.title = "Click to select and hide any columns you don't want to see"; colToggleState = 'inactive'; selectedCols.clear(); } function showPopupMessage(message) { const existing = document.querySelector('.popup-message'); if (existing) { existing.remove(); } const popup = document.createElement('div'); popup.className = 'popup-message'; popup.textContent = message; popup.style.opacity = '0'; document.body.appendChild(popup); void popup.offsetWidth; popup.style.opacity = '1'; setTimeout(() => { popup.style.opacity = '0'; setTimeout(() => { popup.remove(); }, 300); }, 3500); } function updateHeaderColspans() { const headerCells = document.querySelectorAll('.foo-table tr.footable-header th'); let totalVisible = 0; headerCells.forEach(cell => { if (cell.style.display !== 'none' && !cell.classList.contains('hidden-col')) totalVisible++; }); const filteringRow = document.querySelector('.foo-table tr.footable-filtering'); if (filteringRow) { const filteringTh = filteringRow.querySelector('th'); if (filteringTh) { filteringTh.colSpan = totalVisible; } } const extraHeaderRow = document.querySelector('.foo-table tr.footable-extra-header'); if (extraHeaderRow) { const extraHeaderCells = extraHeaderRow.querySelectorAll('th'); let startIndex = 0; extraHeaderCells.forEach(th => { let originalColspan = parseInt(th.getAttribute('data-original-colspan')); if (!originalColspan) { originalColspan = parseInt(th.getAttribute('colspan')) || 0; th.setAttribute('data-original-colspan', originalColspan); } let visibleCount = 0; for (let i = startIndex; i < startIndex + originalColspan; i++) { if (headerCells[i] && headerCells[i].style.display !== 'none' && !headerCells[i].classList.contains('hidden-col')) { visibleCount++; } } if (visibleCount > 0) { th.style.display = ''; th.colSpan = visibleCount; } else { th.style.display = 'none'; } startIndex += originalColspan; }); } updateExtraHeaderHighlights(); if (typeof pivotUpdateCheckboxEligibility === 'function') { pivotUpdateCheckboxEligibility(); } } window.addEventListener('resize', updateHeaderColspans);  document.addEventListener('DOMContentLoaded', function() { const table = document.querySelector('.foo-table'); const observer = new MutationObserver((mutations) => { if (colToggleState === 'hidden') { requestAnimationFrame(() => { hideSelectedColumns(); updateHeaderColspans(); }); } }); observer.observe(table, { childList: true, subtree: true }); const tbody = table.querySelector('tbody'); rowObserver = new MutationObserver((mutationsList) => { mutationsList.forEach(mutation => { mutation.addedNodes.forEach(node => { if (node.nodeType === Node.ELEMENT_NODE && node.tagName === 'TR') { if (pivotState === 'pivoted' && !node.classList.contains('pivot-spec-row') && !node.classList.contains('pivot-category-row')) { node.remove(); return; } if (rowToggleState === 'inactive') { node.style.display = ''; } if (colToggleState === 'hidden') { node.querySelectorAll('td').forEach((cell, index) => { if (selectedCols.has(index)) { cell.classList.add('hidden-col'); } }); } else { node.querySelectorAll('td').forEach(cell => { cell.classList.remove('hidden-col'); cell.style.borderRight = ''; }); } } }); }); updateHeaderColspans(); }); rowObserver.observe(tbody, { childList: true }); updateHeaderColspans(); }); </script>
<script>
document.addEventListener('DOMContentLoaded', function() { const table = document.querySelector('.foo-table'); const observer = new MutationObserver((mutations) => { const extraHeaderRow = table.querySelector('tr.footable-extra-header'); if (extraHeaderRow) { const extraHeaderCells = extraHeaderRow.querySelectorAll('th'); extraHeaderCells.forEach((th, index) => { if (index === 0) return; if (!th.dataset.listenerAttached) { th.dataset.listenerAttached = "true"; th.addEventListener('click', function(event) { if (colToggleState !== 'selecting') return; event.stopPropagation(); let startIndex = 0; let sibling = th.previousElementSibling; while (sibling) { let sp = parseInt(sibling.getAttribute('data-original-colspan')) || parseInt(sibling.getAttribute('colspan')) || 0; startIndex += sp; sibling = sibling.previousElementSibling; } let originalColspan = parseInt(th.getAttribute('data-original-colspan')) || parseInt(th.getAttribute('colspan')) || 0; let allSelected = true; for (let i = startIndex; i < startIndex + originalColspan; i++) { if (!selectedCols.has(i)) { allSelected = false; break; } } for (let i = startIndex; i < startIndex + originalColspan; i++) { if (allSelected) { selectedCols.delete(i); toggleColumnHighlight(i, false); } else { selectedCols.add(i); toggleColumnHighlight(i, true); } } const colsButton = document.getElementById('hide-columns'); if (selectedCols.size > 0) { colsButton.textContent = 'Hide!'; colsButton.title = "Click to hide selected columns"; } else { colsButton.textContent = 'Select'; colsButton.title = "Click to cancel selection"; } updateExtraHeaderHighlights(); }); } }); } }); observer.observe(table, { childList: true, subtree: true }); }); </script>
<script>
function applyConditionalFormatting() { const csvToArray = (csv) => { if (!csv) return []; return csv.split(',').map(item => item.trim().replace(/\*/g, ',')).filter(item => item !== ''); }; const conditions = { 'rgba(240, 255, 204, 0.6)': csvToArray('✔,Yes,Available,2020||2024,$1||$69.99,10 inch,1280×800,stereo,Bluetooth 5.0,Wi-Fi 5,Google Home app,Touchscreen,2× 4.5″,2× 0.7″,ic on/off,R touch area'),
'rgba(255, 248, 187, 0.6)': csvToArray('$70||$99.99,7 inch,1024×600,2019,mono,Bluetooth 4.2,Wi-Fi 4,3 touch areas,1× 3″,1× 0.75″,2× 2″,service only,4 (center),1 swipe area'),
'rgba(255, 232, 195, 0.6)': csvToArray('$100||$299.99,2018,Bluetooth 4.1,1× 40 mm,1× 43.5 mm full range,2 touch areas'),
'rgba(244, 215, 215, 0.6)': csvToArray('❌,No,NA,Discontinued,2015||2017,$300||$400'),
'rgba(245, 248, 255, 0.6)': csvToArray(''),
'rgba(245, 245, 255, 0.6)': csvToArray(''),
'em_rgba(240, 255, 204, 0.6)': csvToArray('6×,USB-C,12 (top)'),
'em_rgba(255, 248, 187, 0.6)': csvToArray('3×'),
'em_rgba(255, 232, 195, 0.6)': csvToArray('2×'),
'em_rgba(244, 215, 215, 0.6)': csvToArray('0'),
'em_rgba(245, 248, 255, 0.6)': csvToArray(''),
'em_rgba(245, 245, 245, 0.6)': csvToArray('?')
}; function matchesCondition(value, condition) { const rangePattern = /^(.+?)\|\|(.+?)$/; const complexRangePattern = /^(.+?)\|\|\|(.+?)$/; const complexMatch = condition.match(complexRangePattern); if (complexMatch) { const minUnitType = getFirstWordAfterNumber(complexMatch[1]); const maxUnitType = getFirstWordAfterNumber(complexMatch[2]); const valueUnitType = getFirstWordAfterNumber(value); if (minUnitType !== maxUnitType || minUnitType !== valueUnitType) return false; const min = parseFloat(complexMatch[1].replace(/[^0-9.-]/g, '')); const max = parseFloat(complexMatch[2].replace(/[^0-9.-]/g, '')); if (isNaN(min) || isNaN(max)) return false; const valueNumber = parseFloat(value.replace(/[^0-9.-]/g, '')); if (isNaN(valueNumber)) return false; return valueNumber >= min && valueNumber <= max; } else if (condition.match(rangePattern)) { const match = condition.match(rangePattern); const minUnitType = getUnitType(match[1]); const maxUnitType = getUnitType(match[2]); const valueUnitType = getUnitType(value); if (minUnitType !== maxUnitType || (minUnitType && minUnitType !== valueUnitType)) return false; const min = parseFloat(match[1].replace(/[^0-9.-]/g, '')); const max = parseFloat(match[2].replace(/[^0-9.-]/g, '')); if (isNaN(min) || isNaN(max)) return false; const valueNumber = parseFloat(value.replace(/[^0-9.-]/g, '')); if (isNaN(valueNumber)) return false; return valueNumber >= min && valueNumber <= max; } return false; } function getUnitType(value) { const unitPattern = /[^0-9.-]+$/; const match = value.match(unitPattern); if (match) return match[0].trim(); const unitPrefixPattern = /^[^0-9.-]+/; const prefixMatch = value.match(unitPrefixPattern); return prefixMatch ? prefixMatch[0].trim() : ''; } function getFirstWordAfterNumber(value) { const parts = value.split(/[^0-9.-]+/); if (parts.length > 1) { const match = value.match(/[^\s]+/g); return match && match.length > 1 ? match[1] : ''; } return ''; } function colorizeTableCells(enable) { const rows = document.querySelectorAll('table tr'); rows.forEach((row) => { if (row.querySelector('th')) return; const cells = row.querySelectorAll('td'); cells.forEach((cell, cellIndex) => { if (cellIndex === 0) return; if (cell.querySelector('img')) return; if (!enable) { cell.style.backgroundColor = ''; return; } const cellText = cell.textContent.trim(); const unitType = getUnitType(cellText); let matchFound = false; Object.entries(conditions).forEach(([color, values]) => { if (color.startsWith('em_')) { values.forEach(condition => { if (cellText === condition) { cell.style.backgroundColor = color.replace('em_', ''); matchFound = true; } }); } }); if (!matchFound) { Object.entries(conditions).forEach(([color, values]) => { if (!color.startsWith('em_')) { values.forEach(condition => { if (condition.includes('||') || condition.includes('|||')) { if (matchesCondition(cellText, condition)) { cell.style.backgroundColor = color; matchFound = true; } } else if (cellText.includes(condition)) { cell.style.backgroundColor = color; matchFound = true; } }); } }); } if (!matchFound) { cell.style.backgroundColor = 'rgba(245, 248, 255, 0.6)'; } }); }); } document.getElementById('toggleFormatting').addEventListener('change', function() { colorizeTableCells(this.checked); const legend = document.querySelector('.legend'); legend.style.display = this.checked ? 'flex' : 'none'; }); colorizeTableCells(document.getElementById('toggleFormatting').checked); } document.addEventListener('DOMContentLoaded', applyConditionalFormatting); </script>
<script>
document.addEventListener('DOMContentLoaded', function() { const table = document.querySelector('.foo-table'); if (table && table.id) { const styleEl = document.createElement('style'); styleEl.textContent = `
				#${table.id} tr.footable-header th.selected-col,
				tr.footable-extra-header th.selected-col,
				tr td.selected-col {
					background-color: rgba(255, 134, 134, 87%) !important;
					border-color: rgb(232,139,139) !important;
				}
			`; document.head.appendChild(styleEl); } }); </script>
<script>
var pivotSizeCompareConfig = { enabled: "No".trim().toLowerCase() === 'yes',
excludePartial: "".trim()
? "".trim().split(',').map(s => s.trim().toLowerCase()).filter(s => s !== '')
: [],
excludeExact: "".trim()
? "".trim().split(',').map(s => s.trim().toLowerCase()).filter(s => s !== '')
: []
}; var pivotFeatureEnabled = true;  let pivotState = 'normal'; let originalHeaderRow = null; let originalExtraHeaderRow = null; let originalProductRows = null;  function togglePivot() { if (!pivotFeatureEnabled) return; const pivotButton = document.getElementById('pivot-table'); resetHideAndShowState(); if (pivotState === 'normal') { pivotTable(); pivotButton.classList.add('active'); pivotState = 'pivoted'; } else { unpivotTable(); pivotButton.classList.remove('active'); pivotState = 'normal'; } }  function resetHideAndShowState() { if (rowToggleState === 'selecting') { cancelRowSelection(); } else if (rowToggleState === 'hidden') { const rowsButton = document.getElementById('hide-rows'); document.querySelectorAll('.foo-table tbody tr').forEach(row => { row.style.display = ''; }); rowsButton.classList.remove('active'); rowsButton.title = "Click to select and hide any rows you don't want to see"; rowToggleState = 'inactive'; } if (colToggleState === 'selecting') { cancelColumnSelection(); } else if (colToggleState === 'hidden') { const colsButton = document.getElementById('hide-columns'); unhideColumns(); colsButton.classList.remove('active'); colsButton.title = "Click to select and hide any columns you don't want to see"; colToggleState = 'inactive'; updateHeaderColspans(); document.querySelectorAll('.footable-extra-header a.learn-more').forEach(link => { link.style.display = ''; }); updateExtraHeaderHighlights(); } }  function refreshConditionalFormatting() { const toggle = document.getElementById('toggleFormatting'); if (toggle) { toggle.dispatchEvent(new Event('change')); } }  function pivotTable() { const table = document.querySelector('.foo-table'); const thead = table.querySelector('thead'); const tbody = table.querySelector('tbody'); const darkMode = document.documentElement.classList.contains('dark-mode');  document.querySelectorAll('#custom-table-styles').forEach(el => { el.disabled = true; });  const filteringRow = thead.querySelector('tr.footable-filtering'); const headerRow = thead.querySelector('tr.footable-header'); const extraHeaderRow = thead.querySelector('tr.footable-extra-header');  if (rowObserver) { rowObserver.disconnect(); }  originalHeaderRow = headerRow; if (headerRow && headerRow.parentNode) { headerRow.parentNode.removeChild(headerRow); } originalExtraHeaderRow = extraHeaderRow; if (extraHeaderRow && extraHeaderRow.parentNode) { extraHeaderRow.parentNode.removeChild(extraHeaderRow); }  const productRows = Array.from(tbody.children); const visibleProductRows = productRows.filter(row => window.getComputedStyle(row).display !== 'none'); originalProductRows = productRows; productRows.forEach(row => { if (row.parentNode) { row.parentNode.removeChild(row); } });  const headerCells = Array.from(originalHeaderRow.children);  const categoryStarts = {}; let firstCategoryStart = 0; if (originalExtraHeaderRow) { let idx = 0; Array.from(originalExtraHeaderRow.children).forEach((th, i) => { const span = parseInt(th.getAttribute('data-original-colspan')) || parseInt(th.getAttribute('colspan')) || 0; if (i === 0) { firstCategoryStart = idx; } else { const labelClone = th.cloneNode(true); labelClone.querySelectorAll('i').forEach(icon => { if (!labelClone.contains(icon)) return; const prev = icon.previousSibling; if (prev && prev.nodeType === Node.TEXT_NODE) { prev.textContent = prev.textContent.replace(/ $/, ''); } icon.remove(); }); categoryStarts[idx] = labelClone.innerHTML; } idx += span; }); }  const productCount = visibleProductRows.length;  const newHeaderRow = document.createElement('tr'); newHeaderRow.className = 'footable-header pivot-header-row'; const cornerTh = document.createElement('th'); cornerTh.className = 'pivot-corner'; cornerTh.innerHTML = '<div class="pivot-corner-controls">' +
'<label><input type="checkbox" id="pivotShowDifferences"> Differences only</label>' +
(pivotSizeCompareConfig.enabled ? '<label><input type="checkbox" id="pivotCompareSize"> Compare size</label>' : '') +
'</div>'; const showDifferencesCheckbox = cornerTh.querySelector('#pivotShowDifferences'); if (showDifferencesCheckbox) { showDifferencesCheckbox.addEventListener('change', function() { pivotApplyDifferencesOnly(this.checked); }); } const compareSizeCheckbox = cornerTh.querySelector('#pivotCompareSize'); if (compareSizeCheckbox) { compareSizeCheckbox.addEventListener('change', function() { if (this.checked) { pivotUpdateImageScaling(); } else { pivotClearImageScaling(); } }); } newHeaderRow.appendChild(cornerTh); visibleProductRows.forEach(row => { const th = document.createElement('th'); th.innerHTML = row.children[0] ? row.children[0].innerHTML : ''; th.querySelectorAll('a').forEach(a => { a.style.setProperty('text-decoration', 'none', 'important'); a.style.setProperty('color', darkMode ? 'var(--dm-text-strong)' : 'var(--contrast)', 'important'); a.addEventListener('mouseenter', () => { a.style.setProperty('text-decoration', 'underline', 'important'); }); a.addEventListener('mouseleave', () => { a.style.setProperty('text-decoration', 'none', 'important'); }); }); newHeaderRow.appendChild(th); }); newHeaderRow.querySelectorAll('th').forEach(th => { th.style.setProperty('background-color', darkMode ? 'var(--dm-surface-1)' : '#e9e9e9', 'important'); th.style.setProperty('color', darkMode ? 'var(--dm-text-strong)' : 'var(--contrast)', 'important'); });  const newRows = []; for (let colIndex = 1; colIndex < headerCells.length; colIndex++) { const originalHeaderCell = headerCells[colIndex]; if (!originalHeaderCell || originalHeaderCell.style.display === 'none' || originalHeaderCell.classList.contains('hidden')) { continue; } if (categoryStarts.hasOwnProperty(colIndex) && colIndex !== firstCategoryStart) { const sepRow = document.createElement('tr'); sepRow.className = 'pivot-category-row'; const sepTh = document.createElement('th'); sepTh.colSpan = productCount + 1; sepTh.innerHTML = '<span class="pivot-category-label">' + categoryStarts[colIndex] + '</span>'; sepTh.style.setProperty('text-decoration', 'underline', 'important'); const labelSpan = sepTh.querySelector('.pivot-category-label'); if (labelSpan) { labelSpan.style.setProperty('text-decoration', 'underline', 'important'); } if (darkMode) { sepTh.style.setProperty('border', '1px solid var(--dm-border-strong)', 'important'); } sepRow.appendChild(sepTh); newRows.push(sepRow); }  const specRow = document.createElement('tr'); specRow.className = 'pivot-spec-row';  const labelTd = document.createElement('td'); labelTd.className = 'pivot-label'; const labelClone = headerCells[colIndex].cloneNode(true); labelClone.querySelectorAll('.fooicon-sort').forEach(el => el.remove()); labelClone.querySelectorAll('br').forEach(br => br.remove()); labelTd.innerHTML = labelClone.innerHTML; labelTd.style.setProperty('color', darkMode ? 'var(--dm-text)' : 'var(--contrast)', 'important'); labelTd.style.setProperty('font-weight', 'normal', 'important'); labelTd.style.setProperty('filter', 'none', 'important'); specRow.appendChild(labelTd);  visibleProductRows.forEach(row => { const sourceCell = row.children[colIndex]; const td = document.createElement('td'); if (sourceCell) { td.innerHTML = sourceCell.innerHTML; } td.style.setProperty('text-align', 'center', 'important'); td.style.setProperty('color', 'var(--contrast)', 'important'); if (sourceCell && sourceCell.style.backgroundColor) { td.style.backgroundColor = sourceCell.style.backgroundColor; } specRow.appendChild(td); }); newRows.push(specRow); }  thead.appendChild(newHeaderRow); const bodyFragment = document.createDocumentFragment(); newRows.forEach(row => bodyFragment.appendChild(row)); tbody.appendChild(bodyFragment);  if (rowObserver) { rowObserver.observe(tbody, { childList: true }); }  table.classList.add('pivoted-view'); if (typeof pivotFindSpecRowByLabel === 'function') { const imageRowAtPivot = pivotFindSpecRowByLabel('image'); if (imageRowAtPivot && darkMode) { Array.from(imageRowAtPivot.children).forEach(td => { if (td.classList.contains('pivot-label')) { return; } td.style.setProperty('background-color', 'rgba(255, 255, 255, 0.6)', 'important'); }); } } if (typeof window.refreshStickyHeaderFor === 'function') { window.refreshStickyHeaderFor(table); } updateHeaderColspans(); }  function unpivotTable() { const table = document.querySelector('.foo-table'); const thead = table.querySelector('thead'); const tbody = table.querySelector('tbody'); const filteringRow = thead.querySelector('tr.footable-filtering');  document.querySelectorAll('#custom-table-styles').forEach(el => { el.disabled = false; });  if (rowObserver) { rowObserver.disconnect(); }  if (filteringRow && filteringRow.parentNode === thead) { thead.removeChild(filteringRow); } thead.innerHTML = ''; if (filteringRow) { thead.appendChild(filteringRow); } tbody.innerHTML = '';  if (originalExtraHeaderRow) { thead.appendChild(originalExtraHeaderRow); } if (originalHeaderRow) { thead.appendChild(originalHeaderRow); } if (originalProductRows) { const restoreFragment = document.createDocumentFragment(); originalProductRows.forEach(row => restoreFragment.appendChild(row)); tbody.appendChild(restoreFragment); }  if (rowObserver) { rowObserver.observe(tbody, { childList: true }); }  originalHeaderRow = null; originalExtraHeaderRow = null; originalProductRows = null;  table.classList.remove('pivoted-view'); if (typeof window.refreshStickyHeaderFor === 'function') { window.refreshStickyHeaderFor(table); } updateHeaderColspans(); refreshConditionalFormatting(); }  function refreshPivotDarkMode() { if (pivotState !== 'pivoted') return; const table = document.querySelector('.foo-table'); if (!table) return; const darkModeNow = document.documentElement.classList.contains('dark-mode');  table.querySelectorAll('tr.pivot-header-row th').forEach(th => { th.style.setProperty('background-color', darkModeNow ? 'var(--dm-surface-1)' : '#e9e9e9', 'important'); th.style.setProperty('color', darkModeNow ? 'var(--dm-text-strong)' : 'var(--contrast)', 'important'); th.querySelectorAll('a').forEach(a => { a.style.setProperty('color', darkModeNow ? 'var(--dm-text-strong)' : 'var(--contrast)', 'important'); }); }); table.querySelectorAll('.pivot-label').forEach(labelTd => { labelTd.style.setProperty('color', darkModeNow ? 'var(--dm-text)' : 'var(--contrast)', 'important'); }); table.querySelectorAll('tr.pivot-category-row th').forEach(sepTh => { if (darkModeNow) { sepTh.style.setProperty('border', '1px solid var(--dm-border-strong)', 'important'); } else { sepTh.style.removeProperty('border'); } }); if (typeof pivotFindSpecRowByLabel === 'function') { const imageRow = pivotFindSpecRowByLabel('image'); if (imageRow) { Array.from(imageRow.children).forEach(td => { if (td.classList.contains('pivot-label')) { return; } if (darkModeNow) { td.style.setProperty('background-color', 'rgba(255, 255, 255, 0.6)', 'important'); } else { td.style.removeProperty('background-color'); } }); } } }  document.addEventListener('DOMContentLoaded', function() { const darkModeObserver = new MutationObserver(() => { refreshPivotDarkMode(); }); darkModeObserver.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] }); }); </script>
<script>
function pivotCellsEquivalent(cells) { if (cells.length < 2) return true; const linkTexts = ['Yes', 'No', 'Paid only']; const first = cells[0]; const firstHtml = first.innerHTML.trim(); const firstLink = first.querySelector('a'); for (let i = 1; i < cells.length; i++) { const cell = cells[i]; if (cell.innerHTML.trim() === firstHtml) { continue; } const link = cell.querySelector('a'); if (firstLink && link) { const t1 = firstLink.textContent.trim(); const t2 = link.textContent.trim(); if (t1 === t2 && linkTexts.includes(t1)) { continue; } } return false; } return true; } function pivotApplyDifferencesOnly(checked) { document.querySelectorAll('.foo-table.pivoted-view tr.pivot-spec-row').forEach(row => { const valueCells = Array.from(row.children).filter(td => !td.classList.contains('pivot-label')); if (pivotCellsEquivalent(valueCells)) { row.style.display = checked ? 'none' : ''; } }); }  function pivotFindSpecRowByLabel(labelSubstring) { const rows = document.querySelectorAll('.foo-table.pivoted-view tr.pivot-spec-row'); for (const row of rows) { const labelCell = row.querySelector('.pivot-label'); if (labelCell && labelCell.textContent.trim().toLowerCase().indexOf(labelSubstring) === 0) { return row; } } return null; } function pivotUpdateImageScaling() { const sizeRow = pivotFindSpecRowByLabel('size'); const imageRow = pivotFindSpecRowByLabel('image'); if (!sizeRow || !imageRow) { return; }  const sizeCells = Array.from(sizeRow.children).filter(td => !td.classList.contains('pivot-label')); const imageCells = Array.from(imageRow.children).filter(td => !td.classList.contains('pivot-label'));  const useValues = sizeCells.map(cell => { const nums = (cell.textContent.trim().match(/[\d.]+/g)) || []; if (nums.length < 2) { return null; } const h = parseFloat(nums[0]); const w = parseFloat(nums[1]); return (h >= w) ? h : w; });  const validValues = useValues.filter(v => v !== null && !isNaN(v)); if (validValues.length < 2) { return; } const maxSize = Math.max(...validValues); if (!(maxSize > 0)) { return; }  imageCells.forEach((cell, index) => { const useValue = useValues[index]; if (useValue === null || isNaN(useValue)) { return; } const scalePercent = (useValue / maxSize) * 100; cell.querySelectorAll('img').forEach(img => { img.classList.add('relative-size'); img.style.setProperty('width', scalePercent + '%', 'important'); const renderedWidth = img.getBoundingClientRect().width; if (renderedWidth > 300) { if (!img.dataset.pivotOriginalSrc) { img.dataset.pivotOriginalSrc = img.src; } const fullSizeSrc = img.src.replace(/-\d+x\d+(?=\.\w+$)/, ''); if (img.src !== fullSizeSrc) { img.src = fullSizeSrc; } } else if (img.dataset.pivotOriginalSrc) { img.src = img.dataset.pivotOriginalSrc; delete img.dataset.pivotOriginalSrc; } }); }); } function pivotClearImageScaling() { document.querySelectorAll('.foo-table.pivoted-view .pivot-spec-row img.relative-size').forEach(img => { img.classList.remove('relative-size'); img.style.removeProperty('width'); if (img.dataset.pivotOriginalSrc) { img.src = img.dataset.pivotOriginalSrc; delete img.dataset.pivotOriginalSrc; } }); }  function pivotGetVisibleProductHeaderCells() { const headerRow = document.querySelector('.foo-table.pivoted-view tr.pivot-header-row'); if (!headerRow) { return []; } return Array.from(headerRow.children).filter(th =>
!th.classList.contains('pivot-corner') &&
!th.classList.contains('hidden-col') &&
window.getComputedStyle(th).display !== 'none'
); } function pivotUpdateCheckboxEligibility() { const table = document.querySelector('.foo-table.pivoted-view'); if (!table) { return; } const visibleCells = pivotGetVisibleProductHeaderCells(); const tooFewProducts = visibleCells.length <= 1;  const diffCheckbox = table.querySelector('#pivotShowDifferences'); if (diffCheckbox) { diffCheckbox.disabled = tooFewProducts; if (tooFewProducts && diffCheckbox.checked) { diffCheckbox.checked = false; pivotApplyDifferencesOnly(false); } }  const sizeCheckbox = table.querySelector('#pivotCompareSize'); if (sizeCheckbox) { const productNames = visibleCells.map(th => th.textContent.trim().toLowerCase()); const excludedMatch = productNames.some(name =>
pivotSizeCompareConfig.excludePartial.some(term => name.includes(term)) ||
pivotSizeCompareConfig.excludeExact.includes(name)
); const disable = tooFewProducts || excludedMatch; sizeCheckbox.disabled = disable; if (disable && sizeCheckbox.checked) { sizeCheckbox.checked = false; pivotClearImageScaling(); } } } </script>



<div class="wp-block-group alignfull" id="comparison-table"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained"><div id="footable_parent_4329"
         class=" footable_parent ninja_table_wrapper loading_ninja_table wp_table_data_press_parent semantic_ui colored_table">
                <table data-ninja_table_instance="ninja_table_instance_0" data-footable_id="4329" data-filter-delay="1000" aria-label="Google Nest Speakers &amp; hubs"            id="footable_4329"
           data-unique_identifier="ninja_table_unique_id_1664272812_4329"
           class=" foo-table ninja_footable foo_table_4329 ninja_table_unique_id_1664272812_4329 ui table  nt_has_lightbox ninja_search_left nt_type_legacy_table single line selectable celled vertical_centered ninja_custom_color inverted footable-paging-right ninja_table_pro ninja_table_afd_inline ninja_table_has_custom_filter">
                <colgroup>
                            <col class="ninja_column_0 ">
                            <col class="ninja_column_1 ">
                            <col class="ninja_column_2 ">
                            <col class="ninja_column_3 ">
                            <col class="ninja_column_4 ">
                            <col class="ninja_column_5 ">
                            <col class="ninja_column_6 ">
                            <col class="ninja_column_7 ">
                            <col class="ninja_column_8 ">
                            <col class="ninja_column_9 ">
                            <col class="ninja_column_10 ">
                            <col class="ninja_column_11 ">
                            <col class="ninja_column_12 ">
                            <col class="ninja_column_13 ">
                            <col class="ninja_column_14 ">
                            <col class="ninja_column_15 ">
                            <col class="ninja_column_16 ">
                            <col class="ninja_column_17 ">
                            <col class="ninja_column_18 ">
                            <col class="ninja_column_19 ">
                            <col class="ninja_column_20 ">
                            <col class="ninja_column_21 ">
                            <col class="ninja_column_22 ">
                            <col class="ninja_column_23 ">
                            <col class="ninja_column_24 ">
                            <col class="ninja_column_25 ">
                            <col class="ninja_column_26 ">
                            <col class="ninja_column_27 ">
                            <col class="ninja_column_28 ">
                            <col class="ninja_column_29 ">
                            <col class="ninja_column_30 ">
                            <col class="ninja_column_31 ">
                            <col class="ninja_column_32 ">
                            <col class="ninja_column_33 ">
                            <col class="ninja_column_34 ">
                            <col class="ninja_column_35 ">
                            <col class="ninja_column_36 ">
                            <col class="ninja_column_37 ">
                            <col class="ninja_column_38 ">
                            <col class="ninja_column_39 ">
                            <col class="ninja_column_40 ">
                            <col class="ninja_column_41 ">
                    </colgroup>
        <thead>
<tr class="footable-header">
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <th scope="col"  class="ninja_column_0 ninja_clmn_nm_name ">Name</th><th scope="col"  class="ninja_column_1 ninja_clmn_nm_image ">Image</th><th scope="col"  class="ninja_column_2 ninja_clmn_nm_msrp ">MSRP</th><th scope="col"  class="ninja_column_3 ninja_clmn_nm_currentprice ">Check price:</th><th scope="col"  class="ninja_column_4 ninja_clmn_nm_released ">Released</th><th scope="col"  class="ninja_column_5 ninja_clmn_nm_availability ">Availability <span title="Available: still sold as new by Sonos. Discontinued: not sold as new by Sonos.">ⓘ</span></th><th scope="col"  class="ninja_column_6 ninja_clmn_nm_audiochannels ">Audio channels</th><th scope="col"  class="ninja_column_7 ninja_clmn_nm_woofers ">Woofers</th><th scope="col"  class="ninja_column_8 ninja_clmn_nm_tweeters ">Tweeters</th><th scope="col"  class="ninja_column_9 ninja_clmn_nm_subwoofers ">Subwoofers</th><th scope="col"  class="ninja_column_10 ninja_clmn_nm_display ">Display?</th><th scope="col"  class="ninja_column_11 ninja_clmn_nm_display_size ">Display size?</th><th scope="col"  class="ninja_column_12 ninja_clmn_nm_resolution ">Resolution</th><th scope="col"  class="ninja_column_13 ninja_clmn_nm_microphones ">Microphones <br>(built in)</th><th scope="col"  class="ninja_column_14 ninja_clmn_nm_camera ">Camera?</th><th scope="col"  class="ninja_column_15 ninja_clmn_nm_movement_sensor ">Motion sensing?</th><th scope="col"  class="ninja_column_16 ninja_clmn_nm_ultrasound_sensor ">Ultrasound sensor?</th><th scope="col"  class="ninja_column_17 ninja_clmn_nm_ambient_light_sensor ">Ambient light <br>sensor</th><th scope="col"  class="ninja_column_18 ninja_clmn_nm_wifi ">Wi-Fi</th><th scope="col"  class="ninja_column_19 ninja_clmn_nm_bluetooth ">Bluetooth</th><th scope="col"  class="ninja_column_20 ninja_clmn_nm_appcompatibility ">App compatibility</th><th scope="col"  class="ninja_column_21 ninja_clmn_nm_multiroom ">Multiroom?</th><th scope="col"  class="ninja_column_22 ninja_clmn_nm_pairingoptions ">Stereo pair?</th><th scope="col"  class="ninja_column_23 ninja_clmn_nm_charging_port ">Charging port <br>type?</th><th scope="col"  class="ninja_column_24 ninja_clmn_nm_35mmaux ">3.5 mm AUX <br>port?</th><th scope="col"  class="ninja_column_25 ninja_clmn_nm_other_ports ">Other ports?</th><th scope="col"  class="ninja_column_26 ninja_clmn_nm_voiceassistantbuiltin ">Voice control?</th><th scope="col"  class="ninja_column_27 ninja_clmn_nm_voice_match ">Voice match?</th><th scope="col"  class="ninja_column_28 ninja_clmn_nm_quick_gestures ">Quick Gestures?</th><th scope="col"  class="ninja_column_29 ninja_clmn_nm_touch_control ">Touch control?</th><th scope="col"  class="ninja_column_30 ninja_clmn_nm_other_buttons ">Other buttons</th><th scope="col"  class="ninja_column_31 ninja_clmn_nm_indicator_lights ">Indicator lights</th><th scope="col"  class="ninja_column_32 ninja_clmn_nm_sizecmhwd ">Size (cm H×W×D)</th><th scope="col"  class="ninja_column_33 ninja_clmn_nm_weightkg ">Weight (kg)</th><th scope="col"  class="ninja_column_34 ninja_clmn_nm_sizeinchhwd ">Size (inch H×W×D)</th><th scope="col"  class="ninja_column_35 ninja_clmn_nm_weightlbs ">Weight (lbs)</th><th scope="col"  class="ninja_column_36 ninja_clmn_nm_mountinghole ">Mounting<br> hole(s)?</th><th scope="col"  class="ninja_column_37 ninja_clmn_nm_coloroptions ">Color options:</th><th scope="col"  class="ninja_column_38 ninja_clmn_nm_in_the_box ">Included the box:</th><th scope="col"  class="ninja_column_39 ninja_clmn_nm_modelnumber ">Model number</th><th scope="col"  class="ninja_column_40 ninja_clmn_nm_manual ">Manual</th><th scope="col"  class="ninja_column_41 ninja_clmn_nm_officialsite ">Official site:</th></tr>
</thead>
<tbody>

        <tr data-row_id="2911" class="ninja_table_row_0 nt_row_id_2911">
            <td>Nest Hub <br>(gen 2)</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-nest-hub-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-nest-hub.webp","alt_text":"google-nest-hub"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/google-nest-hub.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="google-nest-hub" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/google-nest-hub-300x300.webp"/></a></td><td>$99</td><td><a href="https://www.amazon.com/dp/B0CLBN88HN/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2021</td><td>Available</td><td><strong>1.0</strong><br> (mono)</td><td>1× 43.5 mm full range</td><td>0</td><td>0</td><td>✔</td><td>7 inch</td><td>1024×600</td><td>3×</td><td>❌</td><td>✔ (motion sensing<br> & sleep sensing)</td><td>✔</td><td>✔ (for screen brightness)</td><td>Wi-Fi 5</td><td>Bluetooth 5.0</td><td>Google Home app</td><td>✔</td><td>❌</td><td>DC</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>✔</td><td>Touchscreen</td><td>Mic on/off switch, <br>2 volume buttons</td><td>❌</td><td>12.04×17.74×6.95</td><td>0.558</td><td>4.74×6.98×2.74</td><td>1.23</td><td>❌</td><td>Black (Charcoal), <br>White (Chalk), Blue (Mist), Pink (Sand)</td><td>Power adapter <br>(1.5 m cable)</td><td>GA00515</td><td><a href="https://support.google.com/googlenest/answer/7029485" data-wpel-link="external" target="_blank" rel="noopener">Online manual</a></td><td><a href="https://store.google.com/product/nest_hub_2nd_gen" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Google.com</a></td>        </tr>
            <tr data-row_id="2909" class="ninja_table_row_1 nt_row_id_2909">
            <td>Nest Audio</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-nest-audio-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-nest-audio.webp","alt_text":"google-nest-audio"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/google-nest-audio.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="google-nest-audio" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/google-nest-audio-300x300.webp"/></a></td><td>$99</td><td><a href="https://www.amazon.com/dp/B0DGY5R3YZ/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2020</td><td>Available</td><td><strong>1.0</strong><br> (mono)</td><td>1× 3″</td><td>1× 0.75″</td><td>0</td><td>❌</td><td>NA</td><td>NA</td><td>3×</td><td>❌</td><td>❌</td><td>❌</td><td>❌</td><td>Wi-Fi 5</td><td>Bluetooth 5.0</td><td>Google Home app</td><td>✔</td><td>✔</td><td>DC</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>❌</td><td>3 touch areas</td><td>Mic on/off switch</td><td>4 (center)</td><td>17.50×12.40×7.80</td><td>1.200</td><td>6.89×4.88×3.07</td><td>2.65</td><td>❌</td><td>Black (Charcoal), <br>White (Chalk), Green (Sage), Pink (Sand), Blue (Sky)</td><td>Power adapter <br>(1.5 m cable)</td><td>GA01588</td><td><a href="https://support.google.com/googlenest/answer/7029485" data-wpel-link="external" target="_blank" rel="noopener">Online manual</a></td><td><a href="https://store.google.com/product/nest_audio" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Google.com</a></td>        </tr>
            <tr data-row_id="2908" class="ninja_table_row_2 nt_row_id_2908">
            <td>Nest Mini <br>(gen 2)</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-nest-mini-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-nest-mini.webp","alt_text":"google-nest-mini"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/google-nest-mini.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="google-nest-mini" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/google-nest-mini-300x300.webp"/></a></td><td>$49</td><td><a href="https://www.amazon.com/dp/B0CGZ5L9YH/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2019</td><td>Available</td><td><strong>1.0</strong><br> (mono)</td><td>1× 40 mm <br>'40% deeper bass than gen 1'</td><td>0</td><td>0</td><td>❌</td><td>NA</td><td>NA</td><td>3×</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>Wi-Fi 5</td><td>Bluetooth 5.0</td><td>Google Home app</td><td>✔</td><td>✔</td><td>DC</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>❌</td><td>3 touch areas</td><td>Mic on/off switch</td><td>4 (center) +<br>2 (L&R touch area)</td><td>4.20×9.80×9.80</td><td>0.181</td><td>1.65×3.85×3.85</td><td>0.40</td><td>✔</td><td>Black (Charcoal), <br>White (Chalk)</td><td>Power adapter <br>(1.5 m cable)</td><td>GA00638</td><td><a href="https://support.google.com/googlenest/answer/7029485" data-wpel-link="external" target="_blank" rel="noopener">Online manual</a></td><td><a href="https://store.google.com/product/google_nest_mini" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Google.com</a></td>        </tr>
            <tr data-row_id="2912" class="ninja_table_row_3 nt_row_id_2912">
            <td>Nest Hub Max</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-nest-hub-max-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-nest-hub-max.webp","alt_text":"google-nest-hub-max"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/google-nest-hub-max.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="google-nest-hub-max" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/google-nest-hub-max-300x300.webp"/></a></td><td>$229</td><td><a href="https://www.amazon.com/dp/B07L6KVGXV/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2019</td><td>Available</td><td><strong>2.0</strong><br> (stereo)</td><td>1× 3″ (30 W)</td><td>2× 0.7″ (10 W each)</td><td>0</td><td>✔</td><td>10 inch</td><td>1280×800</td><td>2×</td><td>✔ (6.5 MP)<br>(video calling)</td><td>❌ (uses camera)</td><td>✔</td><td>✔ (for screen brightness)</td><td>Wi-Fi 5</td><td>Bluetooth 5.0</td><td>Google Home app</td><td>✔</td><td>❌</td><td>DC</td><td>❌</td><td>❌</td><td>✔</td><td>✔ + Face match</td><td>✔</td><td>Touchscreen</td><td>Cam & mic on/off switch, <br>2 volume buttons</td><td>❌</td><td>18.3×25.0×10.1</td><td>1.320</td><td>7.19×9.85×3.99</td><td>2.91</td><td>❌</td><td>Black (Charcoal), <br>White (Chalk)</td><td>Power adapter <br>(1.5 m cable)</td><td>GA00426</td><td><a href="https://support.google.com/googlenest/answer/7029485" data-wpel-link="external" target="_blank" rel="noopener">Online manual</a></td><td><a href="https://store.google.com/product/google_nest_hub_max" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Google.com</a></td>        </tr>
            <tr data-row_id="2910" class="ninja_table_row_4 nt_row_id_2910">
            <td>Home Hub</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-home-hub-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-home-hub.webp","alt_text":"google-home-hub"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/google-home-hub.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="google-home-hub" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/google-home-hub-300x300.webp"/></a></td><td>$149</td><td><a href="https://www.amazon.com/Google-Display-Generation-Renewed-GA00516X-GA00515X/dp/B0CLQ5BVDJ/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2018</td><td>Discontinued</td><td><strong>1.0</strong><br> (mono)</td><td>1× 43.5 mm full range</td><td>0</td><td>0</td><td>✔</td><td>7 inch</td><td>1024×600</td><td>2×</td><td>❌</td><td>❌</td><td>✔</td><td>✔ (for screen brightness)</td><td>Wi-Fi 5</td><td>Bluetooth 5.0</td><td>Google Home app</td><td>✔</td><td>❌</td><td>DC</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>❌</td><td>Touchscreen</td><td>Mic on/off switch, <br>2 volume buttons</td><td>❌</td><td>11.80×17.85×6.73</td><td>0.480</td><td>4.65×7.02×2.65</td><td>1.06</td><td>❌</td><td>Black (Charcoal), <br>White (Chalk), Pink (Sand), Blue (Aqua)</td><td>Power adapter <br>(1.5 m cable)</td><td>GA00516X-GA00515X</td><td><a href="https://support.google.com/googlenest/answer/7029485" data-wpel-link="external" target="_blank" rel="noopener">Online manual</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="2915" class="ninja_table_row_5 nt_row_id_2915">
            <td>Home Max</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-home-max-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-home-max.webp","alt_text":"google-home-max"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/google-home-max.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="google-home-max" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/google-home-max-300x300.webp"/></a></td><td>$399</td><td><a href="https://www.amazon.com/Google-GA00222US-Home-Max-GA00222-US/dp/B0786MLG43/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2017</td><td>Discontinued</td><td><strong>2.0</strong><br> (stereo)</td><td>2× 4.5″</td><td>2× 0.7″</td><td>0</td><td>❌</td><td>NA</td><td>NA</td><td>6×</td><td>❌</td><td>❌</td><td>❌</td><td>✔ (for LED brightness)</td><td>Wi-Fi 5</td><td>Bluetooth 4.2</td><td>Google Home app</td><td>✔</td><td>✔</td><td>AC</td><td>✔</td><td>USB-C</td><td>✔</td><td>✔</td><td>❌</td><td>1 touch area, <br>1 swipe area (volume)</td><td>Mic on/off switch</td><td>4 (center)</td><td>19.0×33.66×15.44</td><td>5.300</td><td>7.4×13.2×6.0</td><td>11.68</td><td>❌</td><td>Black (Charcoal), <br>White (Chalk)</td><td>Power cable <br>(2.0 m)</td><td>GA00222</td><td><a href="https://support.google.com/googlenest/answer/7029485" data-wpel-link="external" target="_blank" rel="noopener">Online manual</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="2914" class="ninja_table_row_6 nt_row_id_2914">
            <td>Home Mini</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-home-mini-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-home-mini.webp","alt_text":"google-home-mini"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/google-home-mini.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="google-home-mini" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/google-home-mini-300x300.webp"/></a></td><td>$49</td><td><a href="https://www.amazon.com/dp/B0CWMLB3ST/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2017</td><td>Discontinued</td><td><strong>1.0</strong><br> (mono)</td><td>1× 40 mm</td><td>0</td><td>0</td><td>❌</td><td>NA</td><td>NA</td><td>2×</td><td>❌</td><td>❌</td><td>❌</td><td>❌</td><td>Wi-Fi 5</td><td>Bluetooth 4.1</td><td>Google Home app</td><td>✔</td><td>✔</td><td>Micro-USB</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>❌</td><td>2 touch areas</td><td>Mic on/off switch</td><td>4 (center)</td><td>4.20×9.80×9.80</td><td>0.173</td><td>1.65×3.86×3.86</td><td>0.38</td><td>❌</td><td>Black (Charcoal), <br>White (Chalk), Orange (Coral)</td><td>Power adapter <br>(1.5 m cable)</td><td>GG1STAPG1</td><td><a href="https://support.google.com/googlenest/answer/7029485" data-wpel-link="external" target="_blank" rel="noopener">Online manual</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="2913" class="ninja_table_row_7 nt_row_id_2913">
            <td>Google Home</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-home-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/google-home.webp","alt_text":"google-home"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/google-home.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="google-home" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/google-home-300x300.webp"/></a></td><td>$129</td><td><a href="https://www.amazon.com/dp/B09WF86FRV/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2016</td><td>Discontinued</td><td><strong>1.0</strong><br> (mono)</td><td>2× 2″</td><td>0</td><td>0</td><td>❌</td><td>NA</td><td>NA</td><td>2×</td><td>❌</td><td>❌</td><td>❌</td><td>✔ (for LED brightness)</td><td>Wi-Fi 5</td><td>Bluetooth 4.1</td><td>Google Home app</td><td>✔</td><td>✔</td><td>DC</td><td>❌</td><td>Micro-USB <br>(service only)</td><td>✔</td><td>✔</td><td>❌</td><td>1 touch area, <br>1 swipe area (volume)</td><td>Mic on/off button</td><td>12 (top)</td><td>14.28×9.64×9.64</td><td>0.477</td><td>5.62×3.79×3.79</td><td>1.05</td><td>❌</td><td>White</td><td>Power adapter <br>(1.8 m cable)</td><td>GA3A00417A14</td><td><a href="https://support.google.com/googlenest/answer/7029485" data-wpel-link="external" target="_blank" rel="noopener">Online manual</a></td><td>Page discontinued</td>        </tr>
    </tbody><!--ninja_tobody_rendering_done-->
    </table>
    
    
    
</div>

</div></div>



<h3 class="wp-block-heading has-medium-font-size" id="footnotes"><strong>Footnotes</strong></h3>



<ol class="wp-block-list">
<li class="has-small-font-size"><em>Stereo pairing is only possible with two speakers of the exact same model. Meaning you can&#8217;t stereo pair a Google Nest Audio with a Nest Mini (either generation), and you can&#8217;t pair a Nest Mini (gen 2) with a Home Mini / Nest Mini (gen 1).</em></li>



<li class="has-small-font-size"><em>Some products have been renamed from &#8216;Home&#8217; to &#8216;Nest&#8217;. The Google Home Hub has been later renamed to &#8216;Google Nest Hub (Gen 1)&#8217;, and the Google Home Mini has been renamed to &#8216;Google Nest Mini (Gen 1)&#8217;.</em></li>



<li class="has-small-font-size"><em>Google Nest speakers &amp; hubs also come with paperwork such as manuals, quick start guides, privacy and safety information, but this is omitted in the column &#8216;Included in the box&#8217; in the table.</em></li>
</ol>



<hr>


<style>
	#mc_embed_signup {
		background: linear-gradient(207deg, rgb(198 225 247 / 60%) 0%, rgb(242 255 200 / 60%) 100%);
		margin-top: 20px;
		padding: 20px;
		border-radius: 15px;
		border: 1px solid #ccc;
		clear: left;
		font: 16px Helvetica, Arial, sans-serif;
	}

	#mc_embed_signup .mc-field-group {
		display: flex !important;
		align-items: center !important;
		justify-content: space-between !important;
		flex-wrap: nowrap !important;
		margin-bottom: 0 !important;
		width: 60%;
	}

	#mc_embed_signup .mc-field-group input[type=email] {
		flex-grow: 1 !important;
		margin-right: -4px !important;
		border-radius: 4px 0 0 4px !important;
		background-color: #fff;
		border: 1px solid #ccc;
	}

	#mc_embed_signup .mc-field-group .button, #mc_embed_signup .button {
		width: auto !important;
		border-radius: 4px !important;
		margin-top: 0 !important;
		display: block;
		padding-left: 25px;
		padding-right: 25px;
	}

	#mc_embed_signup h2 {
		font-size: 26px;
		padding-top: 10px !important;
	}

	#mc_embed_signup h3 {
		padding-top: 0px;
	}

	@media only screen and (max-width: 768px) {
		#mc_embed_signup h3 {
			font-size: 25px;
		}
	}

	.label-container {
		display: block !important;
		margin-top: 20px !important;
		margin-bottom: 10px !important;
	}

	.social-media-links {
		margin-top: 20px;
		font-size: 16px;
	}
</style>
<div id="mc_embed_group">
	<div id="mc_embed_signup">
		<form action="https://comparisontabl.us18.list-manage.com/subscribe/post?u=29b86cce08b5d3d69d0cf167a&amp;id=7a5e5543b4&amp;f_id=00d139e1f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank">
			<div id="mc_embed_signup_block">
				<h3>Stay up-to-date with newly added products & tables!</h3>
				<div class="label-container">
					<label for="mce-EMAIL"><strong>Get email updates: </strong></label>
				</div>
				<div class="mc-field-group">
					<input type="email" name="EMAIL" class="required email" id="mce-EMAIL" required="" placeholder="you@example.com">
					<input type="submit" value="Subscribe!" name="subscribe" id="mc-embedded-subscribe" class="button">
				</div>
				<div class="social-media-links">
					Or follow us:
					<a href="https://bsky.app/profile/comparisontabl.es" target="_blank" class="social-icon-link" aria-label="Visit us on Bluesky" title="Visit us on Bluesky" data-wpel-link="external" rel="noopener"><i class="fa-brands fa-square-bluesky" aria-hidden="true"></i></a>
					<a href="https://www.facebook.com/comparisontables/" target="_blank" class="social-icon-link" aria-label="Visit us on Facebook" title="Visit us on Facebook" data-wpel-link="external" rel="noopener"><i class="icon fa fa-facebook-square" aria-hidden="true"></i></a>
					<a href="https://www.instagram.com/comparisontables/" target="_blank" class="social-icon-link" aria-label="Visit us on Instagram" title="Visit us on Instagram" data-wpel-link="external" rel="noopener"><i class="icon fa fa-instagram" aria-hidden="true"></i></a>
					<a href="https://www.reddit.com/r/comparisontables/" target="_blank" class="social-icon-link" aria-label="Visit us on Reddit" title="Visit us on Reddit" data-wpel-link="external" rel="noopener"><i class="fa-brands fa-square-reddit" aria-hidden="true"></i></a>
					<a href="https://www.pinterest.com/comparisontables/" target="_blank" class="social-icon-link" aria-label="Visit us on Pinterest" title="Visit us on Pinterest" data-wpel-link="external" rel="noopener"><i class="fa-brands fa-square-pinterest" aria-hidden="true"></i></a>
				</div>
				<!-- Response Containers -->
			</div>
		</form>
	</div>
</div>



<hr>


<h2>Questions or feedback? Leave a comment!</h2>
<p>Have any questions about our Google Nest speaker comparison table? Want to see a (new) product added, spotted an error, or have any other feedback? Or do you want to show your appreciation, or just say 'hi'?</p>
<p>Then leave a comment below! We make sure to read and respond to all of them!</p>
<p>The post <a href="https://comparisontabl.es/google-nest-speakers/" data-wpel-link="internal">Compare Google Nest smart speakers &amp; hubs</a> appeared first on <a href="https://comparisontabl.es" data-wpel-link="internal">ComparisonTables</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://comparisontabl.es/google-nest-speakers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Compare All Sonos speakers</title>
		<link>https://comparisontabl.es/sonos-speakers/</link>
					<comments>https://comparisontabl.es/sonos-speakers/#comments</comments>
		
		<dc:creator><![CDATA[Guido Lobbrecht]]></dc:creator>
		<pubDate>Fri, 20 Dec 2024 09:24:00 +0000</pubDate>
				<category><![CDATA[Electronic devices]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Sonos]]></category>
		<category><![CDATA[Speaker]]></category>
		<category><![CDATA[Wi-Fi speaker]]></category>
		<guid isPermaLink="false">https://comparisontabl.es/?page_id=1208</guid>

					<description><![CDATA[<p>Compare all&#160;Sonos speakers ever released on their specifications and features with the comparison table below. It contains all Sonos soundbars and subwoofers, room speakers, portable (bluetooth) speakers, as well as all Sonos IKEA Symfonisk speakers. Footnotes Size comparison of current ... <a title="Compare All Sonos speakers" class="read-more" href="https://comparisontabl.es/sonos-speakers/" aria-label="Read more about Compare All Sonos speakers" data-wpel-link="internal">Read more</a></p>
<p>The post <a href="https://comparisontabl.es/sonos-speakers/" data-wpel-link="internal">Compare All Sonos speakers</a> appeared first on <a href="https://comparisontabl.es" data-wpel-link="internal">ComparisonTables</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-media-text has-media-on-the-right is-stacked-on-mobile page-intro" style="grid-template-columns:auto 33%"><div class="wp-block-media-text__content">
<p class="page-intro wp-block-paragraph">Compare all&nbsp;<strong>Sonos speakers</strong> ever released on their specifications and features with the comparison table below. It contains all Sonos soundbars and subwoofers, room speakers, portable (bluetooth) speakers, as well as all Sonos IKEA Symfonisk speakers.</p>
</div><figure class="wp-block-media-text__media"><img decoding="async" width="600" height="150" src="https://comparisontabl.es/wp-content/uploads/sonos-logo-600x150-1.jpg" alt="" class="wp-image-2168 size-full" srcset="https://comparisontabl.es/wp-content/uploads/sonos-logo-600x150-1.jpg 600w, https://comparisontabl.es/wp-content/uploads/sonos-logo-600x150-1-300x75.jpg 300w" sizes="(max-width: 600px) 100vw, 600px" /></figure></div>


<div class="wp-block-group small-margin-bottom small-gap block-stretch bigger-strong stack-on-mobile is-horizontal is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-1 wp-block-group-is-layout-flex">
	<div class="ib-container rounded-block">
		<div class="ib-left-column">
			<div class="ib-lc-text">
				<p><strong>Scroll</strong></p>
			</div>
			<div class="ib-lc-icon">
				<svg class="svg-inline--fa fa-left-right icon" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="left-right" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z"></path></svg>
			</div>
		</div>
		<div class="ib-right-column">
			<p>Scroll sideways, or click the scroll buttons; <span class="scroll-arrow">&lt;</span> &amp; <span class="scroll-arrow">&gt;</span>, to see all data.</p>
		</div>
	</div>
	<div class="ib-container rounded-block">
		<div class="ib-left-column">
			<div class="ib-lc-text">
				<p><strong>Sort</strong></p>
			</div>
			<div class="ib-lc-icon">
				<svg class="svg-inline--fa fa-sort icon" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="sort" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" data-fa-i2svg=""><path fill="currentColor" d="M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8L32 224c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l256 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z"></path></svg>			</div>
		</div>
		<div class="ib-right-column">
			<p>Click column headers (<img decoding="async" style="vertical-align: middle; width: 60px; height: 17px; border-radius: 0px;" src="https://comparisontabl.es/wp-content/uploads/sort-img-v2.png" alt="Sorting Example">) to sort; click again: change direction.</p>
		</div>
	</div>
	<div class="ib-container rounded-block">
		<div class="ib-left-column">
			<div class="ib-lc-text">
				<p><strong>Filter</strong></p>
			</div>
			<div class="ib-lc-icon">
				<svg class="svg-inline--fa fa-filter icon" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="filter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M3.9 54.9C10.5 40.9 24.5 32 40 32l432 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9 320 448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z"></path></svg>
			</div>
		</div>
		<div class="ib-right-column">
			<p>Use checkboxes (<svg class="svg-inline--fa fa-square-check icon" aria-hidden="true" focusable="false" data-prefix="far" data-icon="square-check" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" data-fa-i2svg=""><path fill="currentColor" d="M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z"></path></svg>), select from dropdowns (<svg class="svg-inline--fa fa-caret-down icon" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="caret-down" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" data-fa-i2svg=""><path fill="currentColor" d="M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z"></path></svg>), or enter a range.</p>
		</div>
	</div>
</div>

<div class="ib-container rounded-block ib-avsb" style="background:linear-gradient(207deg,rgba(244,215,215,0.6) 0%,rgba(240,255,204,0.6) 100%)">
	<div class="ib-left-column">
		<img loading="lazy" decoding="async" width="45" height="27" src="https://comparisontabl.es/wp-content/uploads/a-vs-b-tr-300x180.png" alt="A|B">
	</div>
	<div class="ib-right-column">
		<p>Want to <strong>compare two Sonos speakers side-by-side</strong> to quickly spot the differences? Click the link below to use the side-by-side comparison tool. <svg class="svg-inline--fa fa-angle-double-down icon" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-double-down" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" data-fa-i2svg=""><path fill="currentColor" d="M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z"></path></svg></p>
	</div>
</div>


<div class="su-spoiler su-spoiler-style-default su-spoiler-icon-plus su-spoiler-closed" data-anchor="sbs" data-scroll-offset="0" data-anchor-in-url="yes"><div class="su-spoiler-title" tabindex="0" role="button"><span class="su-spoiler-icon"></span>Show side-by-side comparison tool</div><div class="su-spoiler-content su-u-clearfix su-u-trim">

<form action="" method="GET" class="side-by-side-forms" id="comparisonForm">
	<select name="product1" style="width: 225px;" class="url-param"></select>
	versus:
	<select name="product2" style="width: 225px;" class="url-param"></select>
	
	<input type="hidden" id="differencesOnlyInput" class="url-param">
	<input type="hidden" id="compareSizeInput" class="url-param">

	<input type="hidden" name="table_id" value="1275">
	<input type="submit" value="Compare!" style="margin-left: 10px;" id="compareButton">
</form>

<div id="comparisonResults"></div>

<style>
	table.side-by-side-comparison img.relative-size { width: auto !important; height: auto !important; max-width: none !important; max-height: none !important; }
	#compareButton { transition: background-color 0.4s ease-in-out; }
	#comparisonButton.loading { background-color: #555 !important; color: #fff !important; cursor: wait; }
	#comparisonResults { transition: opacity 0.4s ease-in-out, filter 0.4s ease-in-out; }
	#comparisonResults.loading { opacity: 0; filter: grayscale(80%); }
</style>

<script>
	var sbs_app_data = {
		ajax_url: "https://comparisontabl.es/sbs-data.php",
		product_names: ["Arc Ultra","Arc","Arc SL","Beam gen 2","Beam gen 1","Ray","Playbase","Playbar","Sub gen 4","Sub gen 3","Sub gen 2","Sub gen 1","Sub mini","Era 300","Era 100","Five","One SL","One gen 2","One gen 1","Play:5 gen 2","Play:5 gen 1","Play:3","Play:1","Move 2","Move","Roam 2","Roam","Roam SL","Floor lamp","Picture frame","Table lamp gen 2","Table lamp gen 1","Bookshelf gen 2","Bookshelf gen 1"],
		subheadings: ["Audio specifications","Connectivity and ports","Wireless setup & control","Battery and charging","Physical specifications","More info"],
		placements: [8,14,21,26,29,36],
		api_key: "sbs_key_5a7b3c9d1e8f2g4h",
		config: {
			size_comparison: "No".trim().toLowerCase(),
			exclude_partial: "".trim(),
			exclude_exact: "".trim()
		}
	};
</script>


<script>
function _0x98aa(){var _0x3e2957=['Yes','.url-param[name]','yes','writeText','#differencesOnlyInput','amazon','<p>Sorry,\x20there\x20was\x20a\x20network\x20error.\x20Please\x20try\x20again.</p>','toLowerCase','_blank','preventDefault','remove','exclude_exact','sbs','current_price','<tbody>','<thead>','#comparisonResults','sbs-subheading','differencesOnly','subheadings','share','append','Network\x20Error:','function','<div\x20class=\x22share-container\x22\x20style=\x22margin-top:10px;\x22><button\x20id=\x22share-comparison\x22><i\x20class=\x22icon\x20fa\x20fa-share-alt\x22\x20aria-hidden=\x22true\x22></i>\x20Save\x20or\x20share\x20this\x20comparison!</button></div>','serialize','max','undefined','product_names','#compareButton','option','<a\x20','add','change','check_price','val','Link\x20copied\x20to\x20clipboard.','image','Sharing\x20failed:','14jqpXQj','name','href','N/A','currentprice',':checked','api_key','classList','removeClass','<div></div>','hash','</th></tr>','each','true','#showDifferences','#compareSizeInput','select2','#comparisonResults\x20#showDifferences','16168536iLFoot','<tr><td\x20colspan=\x223\x22\x20class=\x22sbs-subheading\x22>Check\x20price\x20&amp;\x20reviews</td></tr>','loading','.wpel-icon','select[name=\x22product1\x22]','</tbody>','click','#comparisonResults\x20table.side-by-side-comparison\x20img.relative-size','split','#comparisonResults\x20#differences-only','Could\x20not\x20copy\x20text:\x20','><td>','removeProperty','410601xFhvNJ','size_comparison','get','some','XMLHttpRequest','<p>Sorry,\x20there\x20was\x20an\x20error\x20loading\x20the\x20comparison.</p>','addClass','searchParams','clipboard','Name','submit','column_titles','nofollow\x20noopener','9SFHfWP','hostname','indexOf','filter','compareSize','#comparisonResults\x20#compareSize','ajax','width','convertToGeoRiotLinks','img','userAgent','toString','important','#comparisonForm','placements','size','<img\x20decoding=\x22async\x22\x20src=\x22','<tr><td\x20colspan=\x223\x22\x20class=\x22sbs-subheading\x22>','history','</td><td>','td:first,\x20th:first','#comparisonResults\x20table.side-by-side-comparison\x20tr','text','#share-comparison','change.select2','ready','\x22\x20alt=\x22Image\x22\x20loading=\x22lazy\x22>','setProperty','1936676dhQrld','string','object','</th><th>','disabled','style','delete','location','length','2141245IqpViZ','951660EVGMiV','td,\x20th','search','<table\x20class=\x22side-by-side-comparison\x22>','checked','</td></tr>','td[colspan]','\x20and\x20','exclude_partial','includes','3271YgBROF','image_thumb','4335606MOltuQ','error','select[name=\x22product2\x22]','<label\x20style=\x22margin-left:\x2010px;\x22><input\x20type=\x22checkbox\x22\x20id=\x22compareSize\x22>\x20Compare\x20size</label>','trigger','product2','pushState','replace','find','option[value=\x22','prop','Paid\x20only','data','wpel-icon-left','<tr','map','\x20-\x20ComparisonTables','forEach','\x20on\x20ComparisonTabl.es','removeAttr','</thead>','<tr\x20class=\x22sbs-header\x22><th>','set','title','show','product1','relative-size','match','Georiot.amazon.convertToGeoRiotLinks\x20failed,\x20continuing\x20without\x20it:','html','prepend','hide','attr','trim'];_0x98aa=function(){return _0x3e2957;};return _0x98aa();}var _0x372f88=_0x4c3a;function _0x4c3a(_0x11e4da,_0x5b568e){_0x11e4da=_0x11e4da-0x82;var _0x98aad5=_0x98aa();var _0x4c3a2c=_0x98aad5[_0x11e4da];return _0x4c3a2c;}(function(_0x592eb5,_0x207baf){var _0x358700=_0x4c3a,_0x15540a=_0x592eb5();while(!![]){try{var _0x1dede0=parseInt(_0x358700(0x82))/0x1*(-parseInt(_0x358700(0xcd))/0x2)+parseInt(_0x358700(0xec))/0x3+-parseInt(_0x358700(0x11f))/0x4+-parseInt(_0x358700(0x11e))/0x5+-parseInt(_0x358700(0x84))/0x6+-parseInt(_0x358700(0x115))/0x7+-parseInt(_0x358700(0xdf))/0x8*(-parseInt(_0x358700(0xf9))/0x9);if(_0x1dede0===_0x207baf)break;else _0x15540a['push'](_0x15540a['shift']());}catch(_0x1059bf){_0x15540a['push'](_0x15540a['shift']());}}}(_0x98aa,0x72a64),jQuery(document)[_0x372f88(0x112)](function(_0x396a1d){var _0x24aa66=_0x372f88,_0x3cbfad=sbs_app_data[_0x24aa66(0xc2)],_0x1ebf65=sbs_app_data['config'],_0x3e0a31=sbs_app_data[_0x24aa66(0xb9)],_0x40b264=sbs_app_data[_0x24aa66(0x107)],_0x869580=_0x396a1d(_0x24aa66(0xe3)),_0x50db88=_0x396a1d('select[name=\x22product2\x22]'),_0x26d4ec=_0x1ebf65[_0x24aa66(0x127)]?_0x1ebf65['exclude_partial'][_0x24aa66(0xe7)](',')[_0x24aa66(0x93)](_0xe9b14c=>_0xe9b14c[_0x24aa66(0xa5)]()[_0x24aa66(0xad)]()):[],_0x203c25=_0x1ebf65[_0x24aa66(0xb1)]?_0x1ebf65[_0x24aa66(0xb1)][_0x24aa66(0xe7)](',')['map'](_0x5797ec=>_0x5797ec[_0x24aa66(0xa5)]()['toLowerCase']()):[];function _0x55b837(_0xef2656){var _0x4b8c98=_0x24aa66;return new URLSearchParams(window['location'][_0x4b8c98(0x121)])[_0x4b8c98(0xee)](_0xef2656);}var _0x2ad732=_0x55b837(_0x24aa66(0x9d))||_0x3cbfad[0x0],_0x34007d=_0x55b837(_0x24aa66(0x89))||(_0x3cbfad[0x1]||_0x3cbfad[0x0]);_0x3cbfad[_0x24aa66(0x95)](function(_0x582a75){var _0x4d2136=_0x24aa66;_0x869580[_0x4d2136(0xbb)](new Option(_0x582a75,_0x582a75)),_0x50db88[_0x4d2136(0xbb)](new Option(_0x582a75,_0x582a75));}),_0x869580[_0x24aa66(0xdd)]()[_0x24aa66(0xc9)](_0x2ad732)['trigger'](_0x24aa66(0xc7)),_0x50db88['select2']()[_0x24aa66(0xc9)](_0x34007d)[_0x24aa66(0x88)](_0x24aa66(0xc7));function _0x96b701(_0x1ed2b8){var _0x2d813e=_0x24aa66,_0x2e782f='';_0x2e782f+='<div\x20id=\x22differences-only\x22><label><input\x20type=\x22checkbox\x22\x20id=\x22showDifferences\x22>\x20Differences\x20only</label></div>',_0x2e782f+=_0x2d813e(0x122);var _0x230e86=0x1,_0x4228fd=!![],_0x1f20cf=_0x1ed2b8[_0x2d813e(0xf7)],_0x1df380='name',_0x3dec59=_0x1f20cf[_0x1df380]||_0x2d813e(0xf5);delete _0x1f20cf[_0x1df380],_0x1f20cf={[_0x1df380]:_0x3dec59,..._0x1f20cf};var _0x312526='',_0x32aed8='',_0xbc0ae2='',_0x3837ec='';for(const _0x4f4d2f in _0x1f20cf){if(_0x40b264[_0x2d813e(0x128)](_0x230e86)){let _0x1c3449=_0x40b264[_0x2d813e(0xfb)](_0x230e86);_0x3e0a31[_0x1c3449]&&(_0x32aed8+=_0x2d813e(0x10a)+_0x3e0a31[_0x1c3449]+_0x2d813e(0x124));}let _0x6dd8b3=_0x1f20cf[_0x4f4d2f][_0x2d813e(0x8b)](/<br\s*\/?>/ig,'')[_0x2d813e(0x8b)](/\s?ⓘ/,''),_0x483057=_0x1ed2b8['product1'][_0x4f4d2f]||'',_0x226983=_0x1ed2b8[_0x2d813e(0x89)][_0x4f4d2f]||'';typeof _0x483057==='string'&&(_0x483057=_0x483057['replace'](/<span style="background-color: [^"]+;">(.*?)<\/span>/,'$1')[_0x2d813e(0x8b)](/<div class="info-icon"[^>]*>.*?<div class="info-text"[^>]*>(.*?)<\/div><\/div>/,'$1')[_0x2d813e(0x8b)](/<br\s*\/?>/ig,''));typeof _0x226983===_0x2d813e(0x116)&&(_0x226983=_0x226983[_0x2d813e(0x8b)](/<span style="background-color: [^"]+;">(.*?)<\/span>/,'$1')[_0x2d813e(0x8b)](/<div class="info-icon"[^>]*>.*?<div class="info-text"[^>]*>(.*?)<\/div><\/div>/,'$1')['replace'](/<br\s*\/?>/ig,''));if(_0x4f4d2f==='name')_0x483057=(_0x483057+'')['replace'](/<a href="[^"]*">(.*?)<\/a>/,'$1'),_0x226983=(_0x226983+'')[_0x2d813e(0x8b)](/<a href="[^"]*">(.*?)<\/a>/,'$1');else{if(_0x4f4d2f===_0x2d813e(0xcb)){if(typeof _0x483057===_0x2d813e(0x117)&&_0x483057!==null&&_0x483057[_0x2d813e(0x83)]){let _0x5c1bbb=_0x483057['image_thumb'][_0x2d813e(0x8b)](/-\d+x\d+(?=\.\w+$)/,'');_0x483057=_0x2d813e(0x109)+_0x5c1bbb+_0x2d813e(0x113);}else _0x483057=_0x2d813e(0xd0);if(typeof _0x226983===_0x2d813e(0x117)&&_0x226983!==null&&_0x226983[_0x2d813e(0x83)]){let _0x173c36=_0x226983[_0x2d813e(0x83)][_0x2d813e(0x8b)](/-\d+x\d+(?=\.\w+$)/,'');_0x226983='<img\x20decoding=\x22async\x22\x20src=\x22'+_0x173c36+_0x2d813e(0x113);}else _0x226983=_0x2d813e(0xd0);}}(_0x4f4d2f[_0x2d813e(0xfb)](_0x2d813e(0xb3))!==-0x1||_0x4f4d2f[_0x2d813e(0xfb)](_0x2d813e(0xd1))!==-0x1||_0x4f4d2f[_0x2d813e(0xfb)](_0x2d813e(0xc8))!==-0x1||_0x4f4d2f[_0x2d813e(0xfb)]('checkprice')!==-0x1)&&(_0xbc0ae2=_0x483057,_0x3837ec=_0x226983);var _0x99133a=_0x483057===''&&_0x226983===''?'\x20class=\x22hide-row\x22':'';_0x4228fd?(_0x312526+=_0x2d813e(0x99)+_0x6dd8b3+_0x2d813e(0x118)+_0x483057+_0x2d813e(0x118)+_0x226983+_0x2d813e(0xd8),_0x4228fd=![]):_0x32aed8+=_0x2d813e(0x92)+_0x99133a+_0x2d813e(0xea)+_0x6dd8b3+_0x2d813e(0x10c)+_0x483057+_0x2d813e(0x10c)+_0x226983+_0x2d813e(0x124),_0x230e86++;}if(_0xbc0ae2||_0x3837ec){var _0x6726d4=_0x396a1d(_0x2d813e(0xd6))[_0x2d813e(0xa1)](_0xbc0ae2)['text']()['trim'](),_0x540488=_0x396a1d(_0x2d813e(0xd6))[_0x2d813e(0xa1)](_0x3837ec)[_0x2d813e(0x10f)]()[_0x2d813e(0xa5)](),_0x374f67=_0x6726d4!=='',_0x493bd8=_0x540488!=='',_0x133627=(_0xbc0ae2||'')[_0x2d813e(0xfb)](_0x2d813e(0xc5))!==-0x1,_0x54bc92=(_0x3837ec||'')[_0x2d813e(0xfb)](_0x2d813e(0xc5))!==-0x1;(_0x374f67||_0x493bd8||_0x133627||_0x54bc92)&&(_0x32aed8+=_0x2d813e(0xe0),_0x32aed8+='<tr><td>See\x20price\x20and\x20reviews:</td><td>'+_0xbc0ae2+_0x2d813e(0x10c)+_0x3837ec+_0x2d813e(0x124));}_0x2e782f+=_0x2d813e(0xb5)+_0x312526+_0x2d813e(0x98),_0x2e782f+=_0x2d813e(0xb4)+_0x32aed8+_0x2d813e(0xe4),_0x2e782f+='</table>',_0x2e782f+=_0x2d813e(0xbe),_0x396a1d(_0x2d813e(0xb6))[_0x2d813e(0xa1)](_0x2e782f);}function _0x849395(){var _0x18d674=_0x24aa66;const _0x3c0116=window[_0x18d674(0x11c)][_0x18d674(0xfa)];_0x396a1d('#comparisonResults\x20.side-by-side-comparison\x20td,\x20#comparisonResults\x20.side-by-side-comparison\x20th:not(:first-child)')['each'](function(){const _0xa052b1=_0x396a1d(this);_0xa052b1['find']('a')['each'](function(){var _0x1b5094=_0x4c3a;const _0x31f48b=_0x396a1d(this);if(_0x31f48b['hasClass'](_0x1b5094(0x91)))return;let _0x5c7d8e;try{_0x5c7d8e=new URL(_0x31f48b[_0x1b5094(0x8e)](_0x1b5094(0xcf)))[_0x1b5094(0xfa)];}catch(_0x2f192a){return;}_0x5c7d8e!==_0x3c0116&&(_0x31f48b[_0x1b5094(0xa4)]({'target':_0x1b5094(0xae),'rel':_0x1b5094(0xf8)})[_0x1b5094(0xf2)]('wpel-icon-left'),_0x31f48b[_0x1b5094(0x8c)](_0x1b5094(0xe2))[_0x1b5094(0x11d)]===0x0&&_0x31f48b[_0x1b5094(0xa2)]('<i\x20class=\x22wpel-icon\x20dashicons-before\x20dashicons-admin-links\x22\x20aria-hidden=\x22true\x22></i>\x20'));});});}_0x396a1d('#comparisonForm')['on'](_0x24aa66(0xf6),function(_0x4ed80c){var _0x447d28=_0x24aa66;_0x4ed80c[_0x447d28(0xaf)]();var _0x302a4b=_0x396a1d(_0x447d28(0xc3)),_0x2dfae4=_0x396a1d(_0x447d28(0xb6)),_0x32425d={'product1':_0x396a1d(_0x447d28(0xe3))['val'](),'product2':_0x396a1d(_0x447d28(0x86))[_0x447d28(0xc9)](),'table_id':_0x396a1d('input[name=\x22table_id\x22]')['val'](),'api_key':sbs_app_data[_0x447d28(0xd3)]};_0x396a1d[_0x447d28(0xff)]({'url':sbs_app_data['ajax_url'],'type':'POST','headers':{'X-Requested-With':_0x447d28(0xf0)},'data':_0x32425d,'beforeSend':function(){var _0x25fc5a=_0x447d28;_0x302a4b[_0x25fc5a(0x8e)](_0x25fc5a(0x119),!![])[_0x25fc5a(0xf2)](_0x25fc5a(0xe1)),_0x2dfae4['addClass']('loading');},'success':function(_0x27d180){var _0x38b2b7=_0x447d28;_0x27d180['success']?setTimeout(function(){var _0x549937=_0x4c3a;_0x96b701(_0x27d180[_0x549937(0x90)]);_0x32425d[_0x549937(0x9d)]&&_0x32425d['product2']&&(document[_0x549937(0x9b)]=_0x32425d[_0x549937(0x9d)]+'\x20vs\x20'+_0x32425d[_0x549937(0x89)]+_0x549937(0x94));_0x233071();try{typeof Georiot!==_0x549937(0xc1)&&Georiot[_0x549937(0xab)]&&typeof Georiot[_0x549937(0xab)][_0x549937(0x101)]===_0x549937(0xbd)&&Georiot[_0x549937(0xab)][_0x549937(0x101)](0x58f8c,!![]);}catch(_0x5c1bac){console[_0x549937(0x85)](_0x549937(0xa0),_0x5c1bac);}typeof applyConditionalFormatting===_0x549937(0xbd)&&applyConditionalFormatting();_0x849395();var _0xf65462=window['location']['pathname'],_0x90ee9f=_0xf65462+'?'+_0x396a1d('#comparisonForm')['find'](_0x549937(0xa7))[_0x549937(0xbf)]()+'#sbs';_0x90ee9f=_0x90ee9f[_0x549937(0x8b)](/%20/g,'+'),window[_0x549937(0x10b)][_0x549937(0x8a)]({},'',_0x90ee9f),_0x2dfae4['removeClass']('loading');},0x190):(_0x2dfae4[_0x38b2b7(0xa1)](_0x38b2b7(0xf1)),console[_0x38b2b7(0x85)]('AJAX\x20Error:',_0x27d180[_0x38b2b7(0x90)]),_0x2dfae4['removeClass']('loading'));},'error':function(_0x3c72dc,_0x1b8255,_0x40747a){var _0xb80380=_0x447d28;_0x2dfae4[_0xb80380(0xa1)](_0xb80380(0xac)),console[_0xb80380(0x85)](_0xb80380(0xbc),_0x1b8255,_0x40747a,_0x3c72dc['responseText']),_0x2dfae4['removeClass'](_0xb80380(0xe1));},'complete':function(){var _0x38e890=_0x447d28;_0x302a4b[_0x38e890(0x8e)](_0x38e890(0x119),![])[_0x38e890(0xd5)](_0x38e890(0xe1)),window['location'][_0x38e890(0xd7)]=_0x38e890(0xb2);}});});function _0x233071(){var _0x15a97b=_0x24aa66;_0x1ebf65[_0x15a97b(0xed)]===_0x15a97b(0xa8)&&_0x396a1d(_0x15a97b(0xe8))['length']&&_0x396a1d('#comparisonResults\x20#compareSize')[_0x15a97b(0x11d)]===0x0&&_0x396a1d('#comparisonResults\x20#differences-only')['append'](_0x15a97b(0x87)),_0x55b837(_0x15a97b(0xb8))===_0x15a97b(0xda)?_0x396a1d(_0x15a97b(0xde))['prop'](_0x15a97b(0x123),!![]):_0x396a1d(_0x15a97b(0xde))[_0x15a97b(0x8e)](_0x15a97b(0x123),![]),_0x55b837(_0x15a97b(0xfd))===_0x15a97b(0xda)?_0x396a1d(_0x15a97b(0xfe))[_0x15a97b(0x8e)]('checked',!![]):_0x396a1d(_0x15a97b(0xfe))[_0x15a97b(0x8e)](_0x15a97b(0x123),![]),_0x559a8b(),_0x396a1d('#comparisonResults\x20#showDifferences')['is'](':checked')&&_0x396a1d('#comparisonResults\x20#showDifferences')[_0x15a97b(0x88)]('change'),_0x396a1d(_0x15a97b(0xfe))['is'](_0x15a97b(0xd2))&&!_0x396a1d(_0x15a97b(0xfe))['is'](':disabled')&&_0x396a1d(_0x15a97b(0xfe))['trigger'](_0x15a97b(0xc7));}_0x55b837('product1')&&_0x55b837(_0x24aa66(0x89))&&_0x396a1d(_0x24aa66(0x106))[_0x24aa66(0x88)](_0x24aa66(0xf6));function _0x41cf2d(){var _0x21bcb9=_0x24aa66,_0x1f0100=_0x869580['val'](),_0x33ff7e=_0x50db88['val']();_0x869580['find'](_0x21bcb9(0xc4))[_0x21bcb9(0x8e)](_0x21bcb9(0x119),![]),_0x50db88[_0x21bcb9(0x8c)](_0x21bcb9(0xc4))[_0x21bcb9(0x8e)](_0x21bcb9(0x119),![]),_0x1f0100&&_0x50db88[_0x21bcb9(0x8c)]('option[value=\x22'+_0x1f0100['replace'](/"/g,'\x5c\x22')+'\x22]')[_0x21bcb9(0x8e)](_0x21bcb9(0x119),!![]),_0x33ff7e&&_0x869580[_0x21bcb9(0x8c)](_0x21bcb9(0x8d)+_0x33ff7e[_0x21bcb9(0x8b)](/"/g,'\x5c\x22')+'\x22]')[_0x21bcb9(0x8e)](_0x21bcb9(0x119),!![]),_0x869580[_0x21bcb9(0x88)](_0x21bcb9(0x111)),_0x50db88[_0x21bcb9(0x88)]('change.select2');}_0x41cf2d(),_0x869580['on'](_0x24aa66(0xc7),_0x41cf2d),_0x50db88['on']('change',_0x41cf2d);function _0x5a9b60(_0x4df5b7,_0x2ea8c2){var _0x3cad0f=_0x24aa66,_0x40819a=_0x396a1d(_0x4df5b7)['find']('a'),_0x54282f=_0x396a1d(_0x2ea8c2)[_0x3cad0f(0x8c)]('a'),_0x1d37e1=[_0x3cad0f(0xa6),'No',_0x3cad0f(0x8f)];if(_0x40819a['length']&&_0x54282f['length']){var _0x374980=_0x40819a[_0x3cad0f(0x10f)]()['trim'](),_0x59ee1f=_0x54282f[_0x3cad0f(0x10f)]()[_0x3cad0f(0xa5)](),_0x3012d7=_0x40819a['attr'](_0x3cad0f(0xcf)),_0x322710=_0x54282f['attr'](_0x3cad0f(0xcf));return _0x374980===_0x59ee1f&&_0x3012d7!==_0x322710&&_0x1d37e1['includes'](_0x374980);}return![];}function _0xa11515(){var _0x43f547=_0x24aa66,_0x2b3a77=_0x396a1d(_0x43f547(0x10e))[_0x43f547(0xfc)](function(){var _0x13cf7f=_0x43f547;if(_0x396a1d(this)['find'](_0x13cf7f(0x125))[_0x13cf7f(0x11d)]>0x0||_0x396a1d(this)['hasClass'](_0x13cf7f(0xb7)))return![];var _0x5b759e=_0x396a1d(this)['find'](_0x13cf7f(0x10d))['text']()[_0x13cf7f(0xa5)]()['toLowerCase']();return _0x5b759e[_0x13cf7f(0xfb)](_0x13cf7f(0x108))===0x0;})['first']();if(_0x2b3a77['length']){var _0x17cbd9=_0x2b3a77['find']('td,\x20th')['eq'](0x1)[_0x43f547(0x10f)]()[_0x43f547(0xa5)](),_0x29d979=_0x2b3a77['find']('td,\x20th')['eq'](0x2)[_0x43f547(0x10f)]()[_0x43f547(0xa5)](),_0x58e5ec=_0x17cbd9[_0x43f547(0x9f)](/[\d.]+/g)||[],_0xb54d65=_0x29d979[_0x43f547(0x9f)](/[\d.]+/g)||[];if(_0x58e5ec['length']>=0x2&&_0xb54d65[_0x43f547(0x11d)]>=0x2){var _0xb0fdbf=parseFloat(_0x58e5ec[0x0]),_0x30d0f1=parseFloat(_0x58e5ec[0x1]),_0x249296=parseFloat(_0xb54d65[0x0]),_0x343ed8=parseFloat(_0xb54d65[0x1]),_0x4aa7df=_0xb0fdbf>=_0x30d0f1?_0xb0fdbf:_0x30d0f1,_0x458960=_0x249296>=_0x343ed8?_0x249296:_0x343ed8,_0x1f9d28=Math[_0x43f547(0xc0)](_0x4aa7df,_0x458960),_0x218c0a=_0x1f9d28>0x0?_0x4aa7df/_0x1f9d28:0x1,_0x19031f=_0x1f9d28>0x0?_0x458960/_0x1f9d28:0x1,_0x45d047=_0x218c0a*0x64,_0x3b45e4=_0x19031f*0x64,_0xea8716=_0x396a1d(_0x43f547(0x10e))[_0x43f547(0xfc)](function(){var _0x3eea29=_0x43f547;return _0x396a1d(this)[_0x3eea29(0x8c)](_0x3eea29(0x10d))[_0x3eea29(0x10f)]()[_0x3eea29(0xa5)]()['toLowerCase']()==='image';});_0xea8716[_0x43f547(0x8c)](_0x43f547(0x120))['eq'](0x1)[_0x43f547(0x8c)](_0x43f547(0x102))['each'](function(){var _0x4d9735=_0x43f547;this['classList'][_0x4d9735(0xc6)](_0x4d9735(0x9e)),this[_0x4d9735(0x11a)][_0x4d9735(0x114)](_0x4d9735(0x100),_0x45d047+'%',_0x4d9735(0x105));}),_0xea8716[_0x43f547(0x8c)](_0x43f547(0x120))['eq'](0x2)[_0x43f547(0x8c)](_0x43f547(0x102))['each'](function(){var _0x4e6f3b=_0x43f547;this[_0x4e6f3b(0xd4)][_0x4e6f3b(0xc6)]('relative-size'),this[_0x4e6f3b(0x11a)]['setProperty'](_0x4e6f3b(0x100),_0x3b45e4+'%',_0x4e6f3b(0x105));});}}}function _0x559a8b(){var _0x206983=_0x24aa66,_0x49b0f0=(_0x869580[_0x206983(0xc9)]()||'')[_0x206983(0xad)](),_0x14615c=(_0x50db88['val']()||'')[_0x206983(0xad)](),_0x1f6ea6=![];_0x26d4ec['some'](_0x4a7b53=>_0x49b0f0[_0x206983(0x128)](_0x4a7b53)||_0x14615c[_0x206983(0x128)](_0x4a7b53))&&(_0x1f6ea6=!![]);_0x203c25[_0x206983(0xef)](_0x890c8=>_0x49b0f0===_0x890c8||_0x14615c===_0x890c8)&&(_0x1f6ea6=!![]);var _0x27f8b8=_0x396a1d(_0x206983(0xfe));if(_0x1f6ea6){_0x27f8b8[_0x206983(0x11d)]&&(_0x27f8b8[_0x206983(0x8e)](_0x206983(0x123),![]),_0x27f8b8[_0x206983(0x8e)](_0x206983(0x119),!![]));_0x396a1d('#compareSizeInput')[_0x206983(0x97)](_0x206983(0xce));var _0x4656a3=new URL(window[_0x206983(0x11c)]);_0x4656a3[_0x206983(0xf3)][_0x206983(0x11b)](_0x206983(0xfd)),window['history']['replaceState']({},'',_0x4656a3);}else _0x27f8b8['length']&&_0x27f8b8[_0x206983(0x8e)](_0x206983(0x119),![]);}_0x396a1d('#comparisonResults')['on'](_0x24aa66(0xc7),_0x24aa66(0xdb),function(){var _0x3738eb=_0x24aa66,_0x4929b0=_0x396a1d(this)['is'](_0x3738eb(0xd2));_0x4929b0?_0x396a1d(_0x3738eb(0xaa))[_0x3738eb(0xa4)](_0x3738eb(0xce),_0x3738eb(0xb8))['val'](_0x3738eb(0xda)):_0x396a1d('#differencesOnlyInput')[_0x3738eb(0x97)](_0x3738eb(0xce))['val']('');var _0x5cdfb3=new URL(window[_0x3738eb(0x11c)]);_0x4929b0?_0x5cdfb3['searchParams'][_0x3738eb(0x9a)](_0x3738eb(0xb8),'true'):_0x5cdfb3[_0x3738eb(0xf3)][_0x3738eb(0x11b)](_0x3738eb(0xb8)),window[_0x3738eb(0x10b)]['pushState']({},'',_0x5cdfb3),_0x396a1d(_0x3738eb(0x10e))[_0x3738eb(0xd9)](function(){var _0x42fc74=_0x3738eb;if(!_0x396a1d(this)[_0x42fc74(0x8c)]('th')[_0x42fc74(0x11d)]&&!_0x396a1d(this)[_0x42fc74(0x8c)](_0x42fc74(0x125))[_0x42fc74(0x11d)]){var _0x37944a=_0x396a1d(this)[_0x42fc74(0x8c)]('td');(_0x37944a['eq'](0x1)[_0x42fc74(0xa1)]()===_0x37944a['eq'](0x2)[_0x42fc74(0xa1)]()||_0x5a9b60(_0x37944a['eq'](0x1),_0x37944a['eq'](0x2)))&&(_0x4929b0?_0x396a1d(this)[_0x42fc74(0xa3)]():_0x396a1d(this)[_0x42fc74(0x9c)]());}});}),_0x396a1d('#comparisonResults')['on'](_0x24aa66(0xc7),'#compareSize',function(){var _0x3a4d56=_0x24aa66,_0x5dd31a=_0x396a1d(this)['is'](':checked');_0x5dd31a?_0x396a1d(_0x3a4d56(0xdc))[_0x3a4d56(0xa4)](_0x3a4d56(0xce),_0x3a4d56(0xfd))['val'](_0x3a4d56(0xda)):_0x396a1d('#compareSizeInput')[_0x3a4d56(0x97)](_0x3a4d56(0xce))[_0x3a4d56(0xc9)]('');var _0x2dfe21=new URL(window[_0x3a4d56(0x11c)]);_0x5dd31a?(_0x2dfe21['searchParams'][_0x3a4d56(0x9a)](_0x3a4d56(0xfd),_0x3a4d56(0xda)),_0xa11515()):(_0x2dfe21[_0x3a4d56(0xf3)][_0x3a4d56(0x11b)](_0x3a4d56(0xfd)),_0x396a1d(_0x3a4d56(0xe6))['each'](function(){var _0x16227f=_0x3a4d56;this[_0x16227f(0xd4)][_0x16227f(0xb0)](_0x16227f(0x9e)),this['style'][_0x16227f(0xeb)](_0x16227f(0x100));})),window[_0x3a4d56(0x10b)][_0x3a4d56(0x8a)]({},'',_0x2dfe21);}),_0x396a1d(_0x24aa66(0xb6))['on'](_0x24aa66(0xe5),_0x24aa66(0x110),function(){var _0xc5fc61=_0x24aa66,_0x4baba9=new URL(window['location']);_0x4baba9[_0xc5fc61(0xd7)]=_0xc5fc61(0xb2);var _0x541f39=_0x4baba9[_0xc5fc61(0x104)](),_0x3bffef=/Mobi|Android/i['test'](navigator[_0xc5fc61(0x103)]);navigator['share']&&_0x3bffef?navigator[_0xc5fc61(0xba)]({'title':'Compare\x20'+_0x2ad732+_0xc5fc61(0x126)+_0x34007d+_0xc5fc61(0x96),'url':_0x541f39})['catch'](function(_0x507ee7){var _0x14930e=_0xc5fc61;console['log'](_0x14930e(0xcc),_0x507ee7);}):navigator[_0xc5fc61(0xf4)][_0xc5fc61(0xa9)](_0x541f39)['then'](function(){var _0x209fe7=_0xc5fc61;alert(_0x209fe7(0xca));},function(_0x621c97){var _0x47c9ad=_0xc5fc61;console['error'](_0x47c9ad(0xe9),_0x621c97);});});}));
</script>
</div></div>


<div id="settings" class="table-options">
<div style="display: flex; align-items: center; justify-content: flex-start; margin-bottom: 5px;">
<svg class="svg-inline--fa fa-gear" aria-hidden="true" style="margin-right: 5px;" focusable="false" data-prefix="fas" data-icon="gear" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z"></path></svg>
<strong style="white-space: nowrap; margin-right: 10px;">Settings</strong>
<div class="su-divider su-divider-style-default" style="flex-grow: 1; margin: 15px 0; border-width: 1px; border-color: #E9E9E9;"></div>
</div>
<div class="settings-row" style="display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-start;">
<div id="font-size-controls" style="display: flex; align-items: center; gap: 1px; border-bottom: 1px solid #e1e1e1;">
<span style="white-space: nowrap; margin: 0 3px 1px 0;">Size:</span>
<button id="normal" onclick="changeFontSize('normal')" class="font-button active" title="Click to set font size to normal (14px)" style="font-size: 12px; border-radius: 5px;">Normal</button>
<button id="small" onclick="changeFontSize('small')" class="font-button" title="Click to set font size to small (12px)" style="font-size: 12px; border-radius: 5px;">Small</button>
<button id="extra-small" onclick="changeFontSize('extra-small')" class="font-button" title="Click to set font size to extra small (10px)" style="font-size: 12px; border-radius: 5px;">XS</button>
</div>
<div id="hide-controls" style="display: flex; align-items: center; gap: 1px; border-bottom: 1px solid #e1e1e1;">
<span style="white-space: nowrap; margin: 0 3px 1px 0;">Hide:</span>
<button id="hide-rows" onclick="toggleRows()" class="hide-button" title="Click to select and hide any rows you don't want to see" style="font-size: 12px; border-radius: 5px;">Rows</button>
<button id="hide-columns" onclick="toggleColumns()" class="hide-button" title="Click to select and hide any columns you don't want to see" style="font-size: 12px; border-radius: 5px;">Columns</button>
<button id="hide-filters" onclick="toggleFilters()" class="hide-button" title="Click to hide/unhide filters" style="font-size: 12px; border-radius: 5px;">Filters</button>
</div>
<div id="pivot-controls" style="display: flex; align-items: center; gap: 1px;">
<button id="pivot-table" onclick="togglePivot()" class="hide-button" title="Click to pivot the table (products as columns)" style="font-size: 16px;border-radius: 5px;"><svg class="svg-inline--fa fa-table-pivot" aria-hidden="true" focusable="false" data-prefix="fa-regular" data-icon="table-pivot" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M464 416c0 8.8-7.2 16-16 16l-320 0 0-240L0 192 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L160 32l0 128 304 0 0 256zM64 32C28.7 32 0 60.7 0 96l0 64 128 0 0-128L64 32zM414.8 246.1c2.5-6 1.1-12.9-3.5-17.4l-32-32c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9l16 0 0 48c0 8.8-7.2 16-16 16l-48 0 0-16c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-32 32c-6.2 6.2-6.2 16.4 0 22.6l32 32c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8l0-16 48 0c26.5 0 48-21.5 48-48l0-48 16 0c6.5 0 12.3-3.9 14.8-9.9z"></path></svg></button>
</div>
<div class="switch-container" style="display: flex; align-items: center; gap: 10px; border-bottom: 1px solid white;">
<label for="toggleFormatting" class="formatting-label" style="white-space: nowrap;">Color coding:</label>
<label class="switch">
<input type="checkbox" id="toggleFormatting" checked>
<span class="slider round"></span>
</label>
<div class="legend" style="display: flex;">
<div class="legend-item" style="background-color: rgba(240, 255, 204, 0.6);">Great/yes</div>
<div class="legend-item" style="background-color: rgba(255, 248, 187, 0.6);">Good</div>
<div class="legend-item" style="background-color: rgba(255, 232, 195, 0.6);">Not good</div>
<div class="legend-item" style="background-color: rgba(244, 215, 215, 0.6);">Bad/no</div>
</div>
</div>
</div>
</div>
<style>
.pivot-label { background-color: rgba(0, 0, 0, 0.03); } .pivot-category-label { position: sticky; left: 0; display: inline-block; padding-left: 8px; } tr.pivot-category-row th { text-decoration: underline; font-size: 20px !important; color: var(--contrast) !important; padding: 8px 8px 8px 0px !important; }  tr.footable-header.pivot-header-row th { background-color: #e9e9e9 !important; text-align: center !important; color: var(--contrast) !important; font-size: 20px !important; white-space: normal !important; overflow-wrap: break-word !important; word-break: break-word !important; vertical-align: top !important; } tr.footable-header.pivot-header-row th.pivot-corner { text-align: left !important; }  .pivot-header-row th,
.pivot-spec-row td { text-align: center !important; vertical-align: middle !important; } tr.pivot-header-row:not(.is-sticky) th,
.pivot-spec-row td { width: 200px !important; min-width: 200px !important; max-width: 200px !important; } tr.pivot-header-row.is-sticky th { width: 200px; min-width: 200px; max-width: 200px; } .pivot-spec-row td { font-size: 16px !important; } .foo-table.pivoted-view colgroup col { width: auto !important; } .foo-table.pivoted-view td,
.foo-table.pivoted-view th { border-right: none !important; } .pivot-header-row img,
.pivot-spec-row img { width: 150px !important; height: 150px !important; max-width: 150px !important; max-height: 150px !important; object-fit: contain; } .foo-table.pivoted-view tr.pivot-spec-row img.relative-size { width: auto !important; height: auto !important; max-width: none !important; max-height: none !important; } .pivot-corner-controls { display: flex; flex-direction: column; gap: 4px; font-size: 13px; font-weight: normal; text-decoration: none; } .pivot-corner-controls label { display: flex; align-items: center; gap: 4px; cursor: pointer; white-space: nowrap; } .pivot-corner-controls label:has(input:disabled) { cursor: default; color: #999; opacity: 0.6; }  .foo-table.pivoted-view tr.footable-filtering,
.foo-table.pivoted-view tr.footable-paging { opacity: 0.4; pointer-events: none; filter: grayscale(1); } html.dark-mode .foo-table.pivoted-view tr.footable-filtering,
html.dark-mode .foo-table.pivoted-view tr.footable-paging { opacity: 0.8; filter: grayscale(1) brightness(0.25); }  .foo-table.pivoted-view tr.selected-row th { background-color: rgba(255, 134, 134, 87%) !important; } .foo-table.pivoted-view tr.selected-row td.pivot-label { background-color: rgba(255, 134, 134, 87%) !important; } html.dark-mode .foo-table.pivoted-view tr.pivot-category-row.selected-row th { background-color: rgba(255, 134, 134, 87%) !important; } html.dark-mode .foo-table.pivoted-view tr.selected-row .pivot-label { background-color: rgba(255, 134, 134, 87%) !important; } </style>
<script>
function changeFontSize(size) { var table = document.querySelector('.foo-table'); var searchButtons = document.querySelectorAll('.foo-table .form-group.footable-filtering-search .input-group-btn > button'); var sumoSelects = document.querySelectorAll('.footable-filtering .SumoSelect>.CaptionCont>span.placeholder'); var sumoSelectCaptions = document.querySelectorAll('.CaptionCont.SelectBox'); table.classList.remove('small-font', 'extra-small-font'); sumoSelects.forEach(select => { select.classList.remove('sumo-small', 'sumo-extra-small', 'sumo-normal'); }); sumoSelectCaptions.forEach(caption => { caption.classList.remove('sumo-select-normal', 'sumo-select-small', 'sumo-select-extra-small'); }); var controls = document.querySelectorAll('.footable .form-control'); controls.forEach(control => { control.classList.remove('normal-control', 'small-control', 'extra-small-control'); }); if (size === 'small') { table.classList.add('small-font'); controls.forEach(control => control.classList.add('small-control')); sumoSelects.forEach(select => select.classList.add('sumo-small')); sumoSelectCaptions.forEach(caption => caption.classList.add('sumo-select-small')); } else if (size === 'extra-small') { table.classList.add('extra-small-font'); controls.forEach(control => control.classList.add('extra-small-control')); sumoSelects.forEach(select => select.classList.add('sumo-extra-small')); sumoSelectCaptions.forEach(caption => caption.classList.add('sumo-select-extra-small')); } else { controls.forEach(control => control.classList.add('normal-control')); sumoSelects.forEach(select => select.classList.add('sumo-normal')); sumoSelectCaptions.forEach(caption => caption.classList.add('sumo-select-normal')); } searchButtons.forEach(button => { button.classList.remove('height-normal', 'height-small', 'height-extra-small'); if (size === 'small') { button.classList.add('height-small'); } else if (size === 'extra-small') { button.classList.add('height-extra-small'); } else { button.classList.add('height-normal'); } }); var buttons = document.querySelectorAll('#font-size-controls button'); buttons.forEach(button => { button.classList.remove('active'); }); document.getElementById(size).classList.add('active'); if (typeof window.refreshStickyHeaderFor === 'function') { window.refreshStickyHeaderFor(table); } } document.addEventListener('DOMContentLoaded', function() { changeFontSize('normal'); const toggle = document.getElementById('toggleFormatting'); toggle.addEventListener('change', function() { const legend = document.querySelector('.legend'); legend.style.display = this.checked ? 'flex' : 'none'; }); }); function toggleFilters() { var tableWrapper = document.querySelector('.ninja_table_wrapper'); var filterRow = document.querySelector('tr.footable-filtering'); var filtersButton = document.getElementById('hide-filters'); var isVisible = filterRow && (filterRow.style.display !== 'none'); if (isVisible) { if (filterRow) { filterRow.style.display = 'none'; } if (tableWrapper) { tableWrapper.classList.add('filters-off'); } filtersButton.classList.add('active'); } else { if (filterRow) { filterRow.style.display = ''; } if (tableWrapper) { tableWrapper.classList.remove('filters-off'); } filtersButton.classList.remove('active'); } } </script>
<script>
let rowToggleState = 'inactive'; let colToggleState = 'inactive'; let rowObserver = null; let selectedCols = new Set();  function toggleRows() { const rowsButton = document.getElementById('hide-rows'); const tableBodyRows = document.querySelectorAll('.foo-table tbody tr'); if (colToggleState === 'selecting') { cancelColumnSelection(); } if (rowToggleState === 'inactive') { rowToggleState = 'selecting'; rowsButton.classList.add('glowing'); rowsButton.textContent = 'Select'; rowsButton.title = "Click to cancel selection"; showPopupMessage('Select all rows you want to hide'); tableBodyRows.forEach(row => { row.addEventListener('click', rowClickHandler); }); } else if (rowToggleState === 'selecting') { const selectedRows = document.querySelectorAll('.foo-table tbody tr.selected-row'); if (selectedRows.length > 0) { selectedRows.forEach(row => { row.style.display = 'none'; row.classList.remove('selected-row'); }); tableBodyRows.forEach(row => { row.removeEventListener('click', rowClickHandler); }); rowsButton.classList.remove('glowing'); rowsButton.classList.add('active'); if (selectedRows.length === 1) { showPopupMessage('One row hidden!'); rowsButton.title = "One row hidden. Click to unhide."; } else { showPopupMessage(selectedRows.length + ' rows hidden!'); rowsButton.title = selectedRows.length + ' rows hidden. Click to unhide.'; } rowsButton.textContent = 'Rows'; rowToggleState = 'hidden'; } else { tableBodyRows.forEach(row => { row.removeEventListener('click', rowClickHandler); }); rowsButton.classList.remove('glowing'); rowsButton.textContent = 'Rows'; rowsButton.title = "Click to select and hide any rows you don't want to see"; rowToggleState = 'inactive'; } } else if (rowToggleState === 'hidden') { let hiddenCount = 0; tableBodyRows.forEach(row => { if (row.style.display === 'none') { hiddenCount++; row.style.display = ''; } }); rowsButton.classList.remove('active'); rowToggleState = 'inactive'; if (hiddenCount === 1) { showPopupMessage('One row unhidden!'); } else { showPopupMessage(hiddenCount + ' rows unhidden!'); } rowsButton.title = "Click to select and hide any rows you don't want to see"; } } function getPivotCategoryMembers(categoryRow) { const members = []; let sibling = categoryRow.nextElementSibling; while (sibling && !sibling.classList.contains('pivot-category-row')) { if (sibling.classList.contains('pivot-spec-row')) { members.push(sibling); } sibling = sibling.nextElementSibling; } return members; } function getPivotCategoryRowFor(specRow) { let sibling = specRow.previousElementSibling; while (sibling) { if (sibling.classList.contains('pivot-category-row')) { return sibling; } sibling = sibling.previousElementSibling; } return null; } function rowClickHandler(event) { const row = event.currentTarget; if (row.classList.contains('pivot-category-row')) { const members = getPivotCategoryMembers(row); const allSelected = row.classList.contains('selected-row') && members.every(r => r.classList.contains('selected-row')); if (allSelected) { row.classList.remove('selected-row'); members.forEach(r => r.classList.remove('selected-row')); } else { row.classList.add('selected-row'); members.forEach(r => r.classList.add('selected-row')); } } else { row.classList.toggle('selected-row'); if (row.classList.contains('pivot-spec-row')) { const categoryRow = getPivotCategoryRowFor(row); if (categoryRow) { const members = getPivotCategoryMembers(categoryRow); const allSelected = members.length > 0 && members.every(r => r.classList.contains('selected-row')); if (allSelected) { categoryRow.classList.add('selected-row'); } else { categoryRow.classList.remove('selected-row'); } } } } const rowsButton = document.getElementById('hide-rows'); const selectedRows = document.querySelectorAll('.foo-table tbody tr.selected-row'); if (selectedRows.length > 0) { rowsButton.textContent = 'Hide!'; rowsButton.title = "Click to hide selected rows"; } else { rowsButton.textContent = 'Select'; rowsButton.title = "Click to cancel selection"; } }  function toggleColumns() { const colsButton = document.getElementById('hide-columns'); const table = document.querySelector('.foo-table'); const tbody = table.querySelector('tbody'); if (rowToggleState === 'selecting') { cancelRowSelection(); } if (colToggleState === 'inactive') { colToggleState = 'selecting'; selectedCols.clear(); colsButton.classList.add('glowing'); colsButton.textContent = 'Select'; colsButton.title = "Click to cancel selection"; showPopupMessage('Select all columns you want to hide'); tbody.addEventListener('click', colClickHandler); } else if (colToggleState === 'selecting') { if (selectedCols.size > 0) { hideSelectedColumns(); colsButton.classList.remove('glowing'); colsButton.classList.add('active'); if (selectedCols.size === 1) { showPopupMessage('One column hidden!'); colsButton.title = "One column hidden. Click to unhide."; } else { showPopupMessage(selectedCols.size + ' columns hidden!'); colsButton.title = selectedCols.size + ' columns hidden. Click to unhide.'; } colsButton.textContent = 'Columns'; colToggleState = 'hidden'; tbody.removeEventListener('click', colClickHandler); updateHeaderColspans(); document.querySelectorAll('.footable-extra-header a.learn-more').forEach(link => { link.style.display = 'none'; }); updateExtraHeaderHighlights(); if (typeof window.refreshStickyHeaderFor === 'function') { window.refreshStickyHeaderFor(table); } const compareSizeCheckboxAfterHide = document.querySelector('.foo-table.pivoted-view #pivotCompareSize'); if (compareSizeCheckboxAfterHide && compareSizeCheckboxAfterHide.checked && typeof pivotUpdateImageScaling === 'function') { pivotUpdateImageScaling(); } } else { tbody.removeEventListener('click', colClickHandler); colsButton.classList.remove('glowing'); colsButton.textContent = 'Columns'; colsButton.title = "Click to select and hide any columns you don't want to see"; colToggleState = 'inactive'; } } else if (colToggleState === 'hidden') { const count = selectedCols.size; unhideColumns(); colsButton.classList.remove('active'); colToggleState = 'inactive'; if (count === 1) { showPopupMessage('One column unhidden!'); } else { showPopupMessage(count + ' columns unhidden!'); } colsButton.title = "Click to select and hide any columns you don't want to see"; updateHeaderColspans(); document.querySelectorAll('.footable-extra-header a.learn-more').forEach(link => { link.style.display = ''; }); updateExtraHeaderHighlights(); if (typeof window.refreshStickyHeaderFor === 'function') { window.refreshStickyHeaderFor(table); } const compareSizeCheckboxAfterUnhide = document.querySelector('.foo-table.pivoted-view #pivotCompareSize'); if (compareSizeCheckboxAfterUnhide && compareSizeCheckboxAfterUnhide.checked && typeof pivotUpdateImageScaling === 'function') { pivotUpdateImageScaling(); } } } function colClickHandler(event) { let cell = event.target; if (cell.classList.contains('footable-first-visible')) return; if (cell.classList.contains('pivot-label')) return; if (cell.closest && cell.closest('tr.pivot-category-row')) return; if (cell.tagName !== 'TD' && cell.tagName !== 'TH') return; let colIndex = cell.cellIndex; if (selectedCols.has(colIndex)) { selectedCols.delete(colIndex); toggleColumnHighlight(colIndex, false); } else { selectedCols.add(colIndex); toggleColumnHighlight(colIndex, true); } const colsButton = document.getElementById('hide-columns'); if (selectedCols.size > 0) { colsButton.textContent = 'Hide!'; colsButton.title = "Click to hide selected columns"; } else { colsButton.textContent = 'Select'; colsButton.title = "Click to cancel selection"; } } function toggleColumnHighlight(colIndex, highlight) { const table = document.querySelector('.foo-table'); const darkMode = document.documentElement.classList.contains('dark-mode'); table.querySelectorAll('tr').forEach(row => { if (row.classList.contains('footable-extra-header')) { return; } let cells = row.children; if (cells.length > colIndex) { const cell = cells[colIndex]; if (highlight) { cell.classList.add('selected-col'); } else { cell.classList.remove('selected-col'); } if (row.classList.contains('pivot-header-row')) { if (highlight) { cell.style.setProperty('background-color', 'rgba(255, 134, 134, 87%)', 'important'); cell.style.setProperty('border-color', 'rgb(232,139,139)', 'important'); } else { cell.style.setProperty('background-color', darkMode ? 'var(--dm-surface-1)' : '#e9e9e9', 'important'); cell.style.removeProperty('border-color'); } } } }); updateExtraHeaderHighlights(); } function updateExtraHeaderHighlights() { const extraHeaderRow = document.querySelector('.foo-table tr.footable-extra-header'); if (!extraHeaderRow) return; const headerRow = document.querySelector('.foo-table tr.footable-header'); if (!headerRow) return; let startIndex = 0; let nthSelectors = []; const extraHeaderCells = extraHeaderRow.querySelectorAll('th'); extraHeaderCells.forEach((th, index) => { if (index === 0) { th.classList.remove('selected-col'); } else { let colspan = parseInt(th.getAttribute('data-original-colspan')) || parseInt(th.getAttribute('colspan')) || 0; if (colToggleState === 'hidden') { th.classList.remove('selected-col'); } else { let allSelected = true; for (let i = startIndex; i < startIndex + colspan; i++) { if (!selectedCols.has(i)) { allSelected = false; break; } } if (allSelected) { th.classList.add('selected-col'); } else { th.classList.remove('selected-col'); } } } let colspan = parseInt(th.getAttribute('data-original-colspan')) || parseInt(th.getAttribute('colspan')) || 0; let lastVisible = -1; const headerCells = headerRow.children; for (let i = startIndex; i < startIndex + colspan; i++) { if (i < headerCells.length) { if (window.getComputedStyle(headerCells[i]).display !== 'none' && !headerCells[i].classList.contains('hidden-col')) { lastVisible = i; } } } if (lastVisible !== -1) { nthSelectors.push(`.foo-table tr.footable-header th:nth-child(${lastVisible + 1})`); nthSelectors.push(`.foo-table tr td:nth-child(${lastVisible + 1})`); } startIndex += colspan; }); let dynamicStyle = document.getElementById('subheadingBorders'); if (dynamicStyle) { dynamicStyle.remove(); } if (nthSelectors.length > 0) { dynamicStyle = document.createElement('style'); dynamicStyle.id = 'subheadingBorders'; dynamicStyle.textContent = nthSelectors.join(', ') + ` {
				border-right: 2px solid rgba(220, 220, 220, 1);
			}`; document.head.appendChild(dynamicStyle); } } function hideSelectedColumns() { const table = document.querySelector('.foo-table'); table.querySelectorAll('tr').forEach(row => { if (row.classList.contains('footable-extra-header')) return; selectedCols.forEach(colIndex => { let cells = row.children; if (cells.length > colIndex) { cells[colIndex].classList.add('hidden-col'); } }); }); selectedCols.forEach(colIndex => toggleColumnHighlight(colIndex, false)); } function unhideColumns() { const table = document.querySelector('.foo-table'); selectedCols.forEach(colIndex => { table.querySelectorAll('tr').forEach(row => { let cells = row.children; if (cells.length > colIndex) { cells[colIndex].classList.remove('hidden-col'); } }); toggleColumnHighlight(colIndex, false); }); selectedCols.clear(); } function cancelRowSelection() { const tableBodyRows = document.querySelectorAll('.foo-table tbody tr'); tableBodyRows.forEach(row => { row.removeEventListener('click', rowClickHandler); row.classList.remove('selected-row'); }); const rowsButton = document.getElementById('hide-rows'); rowsButton.classList.remove('glowing'); rowsButton.textContent = 'Rows'; rowsButton.title = "Click to select and hide any rows you don't want to see"; rowToggleState = 'inactive'; } function cancelColumnSelection() { const table = document.querySelector('.foo-table'); const tbody = table.querySelector('tbody'); tbody.removeEventListener('click', colClickHandler); table.querySelectorAll('tr').forEach(row => { row.querySelectorAll('.selected-col').forEach(cell => { cell.classList.remove('selected-col'); }); }); const colsButton = document.getElementById('hide-columns'); colsButton.classList.remove('glowing'); colsButton.textContent = 'Columns'; colsButton.title = "Click to select and hide any columns you don't want to see"; colToggleState = 'inactive'; selectedCols.clear(); } function showPopupMessage(message) { const existing = document.querySelector('.popup-message'); if (existing) { existing.remove(); } const popup = document.createElement('div'); popup.className = 'popup-message'; popup.textContent = message; popup.style.opacity = '0'; document.body.appendChild(popup); void popup.offsetWidth; popup.style.opacity = '1'; setTimeout(() => { popup.style.opacity = '0'; setTimeout(() => { popup.remove(); }, 300); }, 3500); } function updateHeaderColspans() { const headerCells = document.querySelectorAll('.foo-table tr.footable-header th'); let totalVisible = 0; headerCells.forEach(cell => { if (cell.style.display !== 'none' && !cell.classList.contains('hidden-col')) totalVisible++; }); const filteringRow = document.querySelector('.foo-table tr.footable-filtering'); if (filteringRow) { const filteringTh = filteringRow.querySelector('th'); if (filteringTh) { filteringTh.colSpan = totalVisible; } } const extraHeaderRow = document.querySelector('.foo-table tr.footable-extra-header'); if (extraHeaderRow) { const extraHeaderCells = extraHeaderRow.querySelectorAll('th'); let startIndex = 0; extraHeaderCells.forEach(th => { let originalColspan = parseInt(th.getAttribute('data-original-colspan')); if (!originalColspan) { originalColspan = parseInt(th.getAttribute('colspan')) || 0; th.setAttribute('data-original-colspan', originalColspan); } let visibleCount = 0; for (let i = startIndex; i < startIndex + originalColspan; i++) { if (headerCells[i] && headerCells[i].style.display !== 'none' && !headerCells[i].classList.contains('hidden-col')) { visibleCount++; } } if (visibleCount > 0) { th.style.display = ''; th.colSpan = visibleCount; } else { th.style.display = 'none'; } startIndex += originalColspan; }); } updateExtraHeaderHighlights(); if (typeof pivotUpdateCheckboxEligibility === 'function') { pivotUpdateCheckboxEligibility(); } } window.addEventListener('resize', updateHeaderColspans);  document.addEventListener('DOMContentLoaded', function() { const table = document.querySelector('.foo-table'); const observer = new MutationObserver((mutations) => { if (colToggleState === 'hidden') { requestAnimationFrame(() => { hideSelectedColumns(); updateHeaderColspans(); }); } }); observer.observe(table, { childList: true, subtree: true }); const tbody = table.querySelector('tbody'); rowObserver = new MutationObserver((mutationsList) => { mutationsList.forEach(mutation => { mutation.addedNodes.forEach(node => { if (node.nodeType === Node.ELEMENT_NODE && node.tagName === 'TR') { if (pivotState === 'pivoted' && !node.classList.contains('pivot-spec-row') && !node.classList.contains('pivot-category-row')) { node.remove(); return; } if (rowToggleState === 'inactive') { node.style.display = ''; } if (colToggleState === 'hidden') { node.querySelectorAll('td').forEach((cell, index) => { if (selectedCols.has(index)) { cell.classList.add('hidden-col'); } }); } else { node.querySelectorAll('td').forEach(cell => { cell.classList.remove('hidden-col'); cell.style.borderRight = ''; }); } } }); }); updateHeaderColspans(); }); rowObserver.observe(tbody, { childList: true }); updateHeaderColspans(); }); </script>
<script>
document.addEventListener('DOMContentLoaded', function() { const table = document.querySelector('.foo-table'); const observer = new MutationObserver((mutations) => { const extraHeaderRow = table.querySelector('tr.footable-extra-header'); if (extraHeaderRow) { const extraHeaderCells = extraHeaderRow.querySelectorAll('th'); extraHeaderCells.forEach((th, index) => { if (index === 0) return; if (!th.dataset.listenerAttached) { th.dataset.listenerAttached = "true"; th.addEventListener('click', function(event) { if (colToggleState !== 'selecting') return; event.stopPropagation(); let startIndex = 0; let sibling = th.previousElementSibling; while (sibling) { let sp = parseInt(sibling.getAttribute('data-original-colspan')) || parseInt(sibling.getAttribute('colspan')) || 0; startIndex += sp; sibling = sibling.previousElementSibling; } let originalColspan = parseInt(th.getAttribute('data-original-colspan')) || parseInt(th.getAttribute('colspan')) || 0; let allSelected = true; for (let i = startIndex; i < startIndex + originalColspan; i++) { if (!selectedCols.has(i)) { allSelected = false; break; } } for (let i = startIndex; i < startIndex + originalColspan; i++) { if (allSelected) { selectedCols.delete(i); toggleColumnHighlight(i, false); } else { selectedCols.add(i); toggleColumnHighlight(i, true); } } const colsButton = document.getElementById('hide-columns'); if (selectedCols.size > 0) { colsButton.textContent = 'Hide!'; colsButton.title = "Click to hide selected columns"; } else { colsButton.textContent = 'Select'; colsButton.title = "Click to cancel selection"; } updateExtraHeaderHighlights(); }); } }); } }); observer.observe(table, { childList: true, subtree: true }); }); </script>
<script>
function applyConditionalFormatting() { const csvToArray = (csv) => { if (!csv) return []; return csv.split(',').map(item => item.trim().replace(/\*/g, ',')).filter(item => item !== ''); }; const conditions = { 'rgba(240, 255, 204, 0.6)': csvToArray('✔,Yes,Available,2021||2024,50% in 1 hour,surround rears,With any soundbar,S2,IP67,$99.99||$199.99,Sound Motion,5×8 inch'),
'rgba(255, 248, 187, 0.6)': csvToArray('2018||2020,manual,virtual,IP56,$200||$299.99'),
'rgba(255, 232, 195, 0.6)': csvToArray('2016,2017,Humidity resistant,$399||$549'),
'rgba(244, 215, 215, 0.6)': csvToArray('❌,No,NA,Discontinued,2009||2015,$699||$2000'),
'rgba(245, 248, 255, 0.6)': csvToArray(''),
'rgba(245, 245, 255, 0.6)': csvToArray(''),
'em_rgba(240, 255, 204, 0.6)': csvToArray('Wi-Fi 6,Wi-Fi 5,3,4,6,7,8,2× 6 inch,24 hours,Not mentioned (15W)'),
'em_rgba(255, 248, 187, 0.6)': csvToArray('Wi-Fi 4,No; possible via adapter,2,11 hours, 10 hours,Stereo pair,50% in 1 hour via charging cradle'),
'em_rgba(255, 232, 195, 0.6)': csvToArray('Wi-Fi 3,1'),
'em_rgba(244, 215, 215, 0.6)': csvToArray('0'),
'em_rgba(245, 248, 255, 0.6)': csvToArray(''),
'em_rgba(245, 245, 245, 0.6)': csvToArray('?')
}; function matchesCondition(value, condition) { const rangePattern = /^(.+?)\|\|(.+?)$/; const complexRangePattern = /^(.+?)\|\|\|(.+?)$/; const complexMatch = condition.match(complexRangePattern); if (complexMatch) { const minUnitType = getFirstWordAfterNumber(complexMatch[1]); const maxUnitType = getFirstWordAfterNumber(complexMatch[2]); const valueUnitType = getFirstWordAfterNumber(value); if (minUnitType !== maxUnitType || minUnitType !== valueUnitType) return false; const min = parseFloat(complexMatch[1].replace(/[^0-9.-]/g, '')); const max = parseFloat(complexMatch[2].replace(/[^0-9.-]/g, '')); if (isNaN(min) || isNaN(max)) return false; const valueNumber = parseFloat(value.replace(/[^0-9.-]/g, '')); if (isNaN(valueNumber)) return false; return valueNumber >= min && valueNumber <= max; } else if (condition.match(rangePattern)) { const match = condition.match(rangePattern); const minUnitType = getUnitType(match[1]); const maxUnitType = getUnitType(match[2]); const valueUnitType = getUnitType(value); if (minUnitType !== maxUnitType || (minUnitType && minUnitType !== valueUnitType)) return false; const min = parseFloat(match[1].replace(/[^0-9.-]/g, '')); const max = parseFloat(match[2].replace(/[^0-9.-]/g, '')); if (isNaN(min) || isNaN(max)) return false; const valueNumber = parseFloat(value.replace(/[^0-9.-]/g, '')); if (isNaN(valueNumber)) return false; return valueNumber >= min && valueNumber <= max; } return false; } function getUnitType(value) { const unitPattern = /[^0-9.-]+$/; const match = value.match(unitPattern); if (match) return match[0].trim(); const unitPrefixPattern = /^[^0-9.-]+/; const prefixMatch = value.match(unitPrefixPattern); return prefixMatch ? prefixMatch[0].trim() : ''; } function getFirstWordAfterNumber(value) { const parts = value.split(/[^0-9.-]+/); if (parts.length > 1) { const match = value.match(/[^\s]+/g); return match && match.length > 1 ? match[1] : ''; } return ''; } function colorizeTableCells(enable) { const rows = document.querySelectorAll('table tr'); rows.forEach((row) => { if (row.querySelector('th')) return; const cells = row.querySelectorAll('td'); cells.forEach((cell, cellIndex) => { if (cellIndex === 0) return; if (cell.querySelector('img')) return; if (!enable) { cell.style.backgroundColor = ''; return; } const cellText = cell.textContent.trim(); const unitType = getUnitType(cellText); let matchFound = false; Object.entries(conditions).forEach(([color, values]) => { if (color.startsWith('em_')) { values.forEach(condition => { if (cellText === condition) { cell.style.backgroundColor = color.replace('em_', ''); matchFound = true; } }); } }); if (!matchFound) { Object.entries(conditions).forEach(([color, values]) => { if (!color.startsWith('em_')) { values.forEach(condition => { if (condition.includes('||') || condition.includes('|||')) { if (matchesCondition(cellText, condition)) { cell.style.backgroundColor = color; matchFound = true; } } else if (cellText.includes(condition)) { cell.style.backgroundColor = color; matchFound = true; } }); } }); } if (!matchFound) { cell.style.backgroundColor = 'rgba(245, 248, 255, 0.6)'; } }); }); } document.getElementById('toggleFormatting').addEventListener('change', function() { colorizeTableCells(this.checked); const legend = document.querySelector('.legend'); legend.style.display = this.checked ? 'flex' : 'none'; }); colorizeTableCells(document.getElementById('toggleFormatting').checked); } document.addEventListener('DOMContentLoaded', applyConditionalFormatting); </script>
<script>
document.addEventListener('DOMContentLoaded', function() { const table = document.querySelector('.foo-table'); if (table && table.id) { const styleEl = document.createElement('style'); styleEl.textContent = `
				#${table.id} tr.footable-header th.selected-col,
				tr.footable-extra-header th.selected-col,
				tr td.selected-col {
					background-color: rgba(255, 134, 134, 87%) !important;
					border-color: rgb(232,139,139) !important;
				}
			`; document.head.appendChild(styleEl); } }); </script>
<script>
var pivotSizeCompareConfig = { enabled: "No".trim().toLowerCase() === 'yes',
excludePartial: "".trim()
? "".trim().split(',').map(s => s.trim().toLowerCase()).filter(s => s !== '')
: [],
excludeExact: "".trim()
? "".trim().split(',').map(s => s.trim().toLowerCase()).filter(s => s !== '')
: []
}; var pivotFeatureEnabled = true;  let pivotState = 'normal'; let originalHeaderRow = null; let originalExtraHeaderRow = null; let originalProductRows = null;  function togglePivot() { if (!pivotFeatureEnabled) return; const pivotButton = document.getElementById('pivot-table'); resetHideAndShowState(); if (pivotState === 'normal') { pivotTable(); pivotButton.classList.add('active'); pivotState = 'pivoted'; } else { unpivotTable(); pivotButton.classList.remove('active'); pivotState = 'normal'; } }  function resetHideAndShowState() { if (rowToggleState === 'selecting') { cancelRowSelection(); } else if (rowToggleState === 'hidden') { const rowsButton = document.getElementById('hide-rows'); document.querySelectorAll('.foo-table tbody tr').forEach(row => { row.style.display = ''; }); rowsButton.classList.remove('active'); rowsButton.title = "Click to select and hide any rows you don't want to see"; rowToggleState = 'inactive'; } if (colToggleState === 'selecting') { cancelColumnSelection(); } else if (colToggleState === 'hidden') { const colsButton = document.getElementById('hide-columns'); unhideColumns(); colsButton.classList.remove('active'); colsButton.title = "Click to select and hide any columns you don't want to see"; colToggleState = 'inactive'; updateHeaderColspans(); document.querySelectorAll('.footable-extra-header a.learn-more').forEach(link => { link.style.display = ''; }); updateExtraHeaderHighlights(); } }  function refreshConditionalFormatting() { const toggle = document.getElementById('toggleFormatting'); if (toggle) { toggle.dispatchEvent(new Event('change')); } }  function pivotTable() { const table = document.querySelector('.foo-table'); const thead = table.querySelector('thead'); const tbody = table.querySelector('tbody'); const darkMode = document.documentElement.classList.contains('dark-mode');  document.querySelectorAll('#custom-table-styles').forEach(el => { el.disabled = true; });  const filteringRow = thead.querySelector('tr.footable-filtering'); const headerRow = thead.querySelector('tr.footable-header'); const extraHeaderRow = thead.querySelector('tr.footable-extra-header');  if (rowObserver) { rowObserver.disconnect(); }  originalHeaderRow = headerRow; if (headerRow && headerRow.parentNode) { headerRow.parentNode.removeChild(headerRow); } originalExtraHeaderRow = extraHeaderRow; if (extraHeaderRow && extraHeaderRow.parentNode) { extraHeaderRow.parentNode.removeChild(extraHeaderRow); }  const productRows = Array.from(tbody.children); const visibleProductRows = productRows.filter(row => window.getComputedStyle(row).display !== 'none'); originalProductRows = productRows; productRows.forEach(row => { if (row.parentNode) { row.parentNode.removeChild(row); } });  const headerCells = Array.from(originalHeaderRow.children);  const categoryStarts = {}; let firstCategoryStart = 0; if (originalExtraHeaderRow) { let idx = 0; Array.from(originalExtraHeaderRow.children).forEach((th, i) => { const span = parseInt(th.getAttribute('data-original-colspan')) || parseInt(th.getAttribute('colspan')) || 0; if (i === 0) { firstCategoryStart = idx; } else { const labelClone = th.cloneNode(true); labelClone.querySelectorAll('i').forEach(icon => { if (!labelClone.contains(icon)) return; const prev = icon.previousSibling; if (prev && prev.nodeType === Node.TEXT_NODE) { prev.textContent = prev.textContent.replace(/ $/, ''); } icon.remove(); }); categoryStarts[idx] = labelClone.innerHTML; } idx += span; }); }  const productCount = visibleProductRows.length;  const newHeaderRow = document.createElement('tr'); newHeaderRow.className = 'footable-header pivot-header-row'; const cornerTh = document.createElement('th'); cornerTh.className = 'pivot-corner'; cornerTh.innerHTML = '<div class="pivot-corner-controls">' +
'<label><input type="checkbox" id="pivotShowDifferences"> Differences only</label>' +
(pivotSizeCompareConfig.enabled ? '<label><input type="checkbox" id="pivotCompareSize"> Compare size</label>' : '') +
'</div>'; const showDifferencesCheckbox = cornerTh.querySelector('#pivotShowDifferences'); if (showDifferencesCheckbox) { showDifferencesCheckbox.addEventListener('change', function() { pivotApplyDifferencesOnly(this.checked); }); } const compareSizeCheckbox = cornerTh.querySelector('#pivotCompareSize'); if (compareSizeCheckbox) { compareSizeCheckbox.addEventListener('change', function() { if (this.checked) { pivotUpdateImageScaling(); } else { pivotClearImageScaling(); } }); } newHeaderRow.appendChild(cornerTh); visibleProductRows.forEach(row => { const th = document.createElement('th'); th.innerHTML = row.children[0] ? row.children[0].innerHTML : ''; th.querySelectorAll('a').forEach(a => { a.style.setProperty('text-decoration', 'none', 'important'); a.style.setProperty('color', darkMode ? 'var(--dm-text-strong)' : 'var(--contrast)', 'important'); a.addEventListener('mouseenter', () => { a.style.setProperty('text-decoration', 'underline', 'important'); }); a.addEventListener('mouseleave', () => { a.style.setProperty('text-decoration', 'none', 'important'); }); }); newHeaderRow.appendChild(th); }); newHeaderRow.querySelectorAll('th').forEach(th => { th.style.setProperty('background-color', darkMode ? 'var(--dm-surface-1)' : '#e9e9e9', 'important'); th.style.setProperty('color', darkMode ? 'var(--dm-text-strong)' : 'var(--contrast)', 'important'); });  const newRows = []; for (let colIndex = 1; colIndex < headerCells.length; colIndex++) { const originalHeaderCell = headerCells[colIndex]; if (!originalHeaderCell || originalHeaderCell.style.display === 'none' || originalHeaderCell.classList.contains('hidden')) { continue; } if (categoryStarts.hasOwnProperty(colIndex) && colIndex !== firstCategoryStart) { const sepRow = document.createElement('tr'); sepRow.className = 'pivot-category-row'; const sepTh = document.createElement('th'); sepTh.colSpan = productCount + 1; sepTh.innerHTML = '<span class="pivot-category-label">' + categoryStarts[colIndex] + '</span>'; sepTh.style.setProperty('text-decoration', 'underline', 'important'); const labelSpan = sepTh.querySelector('.pivot-category-label'); if (labelSpan) { labelSpan.style.setProperty('text-decoration', 'underline', 'important'); } if (darkMode) { sepTh.style.setProperty('border', '1px solid var(--dm-border-strong)', 'important'); } sepRow.appendChild(sepTh); newRows.push(sepRow); }  const specRow = document.createElement('tr'); specRow.className = 'pivot-spec-row';  const labelTd = document.createElement('td'); labelTd.className = 'pivot-label'; const labelClone = headerCells[colIndex].cloneNode(true); labelClone.querySelectorAll('.fooicon-sort').forEach(el => el.remove()); labelClone.querySelectorAll('br').forEach(br => br.remove()); labelTd.innerHTML = labelClone.innerHTML; labelTd.style.setProperty('color', darkMode ? 'var(--dm-text)' : 'var(--contrast)', 'important'); labelTd.style.setProperty('font-weight', 'normal', 'important'); labelTd.style.setProperty('filter', 'none', 'important'); specRow.appendChild(labelTd);  visibleProductRows.forEach(row => { const sourceCell = row.children[colIndex]; const td = document.createElement('td'); if (sourceCell) { td.innerHTML = sourceCell.innerHTML; } td.style.setProperty('text-align', 'center', 'important'); td.style.setProperty('color', 'var(--contrast)', 'important'); if (sourceCell && sourceCell.style.backgroundColor) { td.style.backgroundColor = sourceCell.style.backgroundColor; } specRow.appendChild(td); }); newRows.push(specRow); }  thead.appendChild(newHeaderRow); const bodyFragment = document.createDocumentFragment(); newRows.forEach(row => bodyFragment.appendChild(row)); tbody.appendChild(bodyFragment);  if (rowObserver) { rowObserver.observe(tbody, { childList: true }); }  table.classList.add('pivoted-view'); if (typeof pivotFindSpecRowByLabel === 'function') { const imageRowAtPivot = pivotFindSpecRowByLabel('image'); if (imageRowAtPivot && darkMode) { Array.from(imageRowAtPivot.children).forEach(td => { if (td.classList.contains('pivot-label')) { return; } td.style.setProperty('background-color', 'rgba(255, 255, 255, 0.6)', 'important'); }); } } if (typeof window.refreshStickyHeaderFor === 'function') { window.refreshStickyHeaderFor(table); } updateHeaderColspans(); }  function unpivotTable() { const table = document.querySelector('.foo-table'); const thead = table.querySelector('thead'); const tbody = table.querySelector('tbody'); const filteringRow = thead.querySelector('tr.footable-filtering');  document.querySelectorAll('#custom-table-styles').forEach(el => { el.disabled = false; });  if (rowObserver) { rowObserver.disconnect(); }  if (filteringRow && filteringRow.parentNode === thead) { thead.removeChild(filteringRow); } thead.innerHTML = ''; if (filteringRow) { thead.appendChild(filteringRow); } tbody.innerHTML = '';  if (originalExtraHeaderRow) { thead.appendChild(originalExtraHeaderRow); } if (originalHeaderRow) { thead.appendChild(originalHeaderRow); } if (originalProductRows) { const restoreFragment = document.createDocumentFragment(); originalProductRows.forEach(row => restoreFragment.appendChild(row)); tbody.appendChild(restoreFragment); }  if (rowObserver) { rowObserver.observe(tbody, { childList: true }); }  originalHeaderRow = null; originalExtraHeaderRow = null; originalProductRows = null;  table.classList.remove('pivoted-view'); if (typeof window.refreshStickyHeaderFor === 'function') { window.refreshStickyHeaderFor(table); } updateHeaderColspans(); refreshConditionalFormatting(); }  function refreshPivotDarkMode() { if (pivotState !== 'pivoted') return; const table = document.querySelector('.foo-table'); if (!table) return; const darkModeNow = document.documentElement.classList.contains('dark-mode');  table.querySelectorAll('tr.pivot-header-row th').forEach(th => { th.style.setProperty('background-color', darkModeNow ? 'var(--dm-surface-1)' : '#e9e9e9', 'important'); th.style.setProperty('color', darkModeNow ? 'var(--dm-text-strong)' : 'var(--contrast)', 'important'); th.querySelectorAll('a').forEach(a => { a.style.setProperty('color', darkModeNow ? 'var(--dm-text-strong)' : 'var(--contrast)', 'important'); }); }); table.querySelectorAll('.pivot-label').forEach(labelTd => { labelTd.style.setProperty('color', darkModeNow ? 'var(--dm-text)' : 'var(--contrast)', 'important'); }); table.querySelectorAll('tr.pivot-category-row th').forEach(sepTh => { if (darkModeNow) { sepTh.style.setProperty('border', '1px solid var(--dm-border-strong)', 'important'); } else { sepTh.style.removeProperty('border'); } }); if (typeof pivotFindSpecRowByLabel === 'function') { const imageRow = pivotFindSpecRowByLabel('image'); if (imageRow) { Array.from(imageRow.children).forEach(td => { if (td.classList.contains('pivot-label')) { return; } if (darkModeNow) { td.style.setProperty('background-color', 'rgba(255, 255, 255, 0.6)', 'important'); } else { td.style.removeProperty('background-color'); } }); } } }  document.addEventListener('DOMContentLoaded', function() { const darkModeObserver = new MutationObserver(() => { refreshPivotDarkMode(); }); darkModeObserver.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] }); }); </script>
<script>
function pivotCellsEquivalent(cells) { if (cells.length < 2) return true; const linkTexts = ['Yes', 'No', 'Paid only']; const first = cells[0]; const firstHtml = first.innerHTML.trim(); const firstLink = first.querySelector('a'); for (let i = 1; i < cells.length; i++) { const cell = cells[i]; if (cell.innerHTML.trim() === firstHtml) { continue; } const link = cell.querySelector('a'); if (firstLink && link) { const t1 = firstLink.textContent.trim(); const t2 = link.textContent.trim(); if (t1 === t2 && linkTexts.includes(t1)) { continue; } } return false; } return true; } function pivotApplyDifferencesOnly(checked) { document.querySelectorAll('.foo-table.pivoted-view tr.pivot-spec-row').forEach(row => { const valueCells = Array.from(row.children).filter(td => !td.classList.contains('pivot-label')); if (pivotCellsEquivalent(valueCells)) { row.style.display = checked ? 'none' : ''; } }); }  function pivotFindSpecRowByLabel(labelSubstring) { const rows = document.querySelectorAll('.foo-table.pivoted-view tr.pivot-spec-row'); for (const row of rows) { const labelCell = row.querySelector('.pivot-label'); if (labelCell && labelCell.textContent.trim().toLowerCase().indexOf(labelSubstring) === 0) { return row; } } return null; } function pivotUpdateImageScaling() { const sizeRow = pivotFindSpecRowByLabel('size'); const imageRow = pivotFindSpecRowByLabel('image'); if (!sizeRow || !imageRow) { return; }  const sizeCells = Array.from(sizeRow.children).filter(td => !td.classList.contains('pivot-label')); const imageCells = Array.from(imageRow.children).filter(td => !td.classList.contains('pivot-label'));  const useValues = sizeCells.map(cell => { const nums = (cell.textContent.trim().match(/[\d.]+/g)) || []; if (nums.length < 2) { return null; } const h = parseFloat(nums[0]); const w = parseFloat(nums[1]); return (h >= w) ? h : w; });  const validValues = useValues.filter(v => v !== null && !isNaN(v)); if (validValues.length < 2) { return; } const maxSize = Math.max(...validValues); if (!(maxSize > 0)) { return; }  imageCells.forEach((cell, index) => { const useValue = useValues[index]; if (useValue === null || isNaN(useValue)) { return; } const scalePercent = (useValue / maxSize) * 100; cell.querySelectorAll('img').forEach(img => { img.classList.add('relative-size'); img.style.setProperty('width', scalePercent + '%', 'important'); const renderedWidth = img.getBoundingClientRect().width; if (renderedWidth > 300) { if (!img.dataset.pivotOriginalSrc) { img.dataset.pivotOriginalSrc = img.src; } const fullSizeSrc = img.src.replace(/-\d+x\d+(?=\.\w+$)/, ''); if (img.src !== fullSizeSrc) { img.src = fullSizeSrc; } } else if (img.dataset.pivotOriginalSrc) { img.src = img.dataset.pivotOriginalSrc; delete img.dataset.pivotOriginalSrc; } }); }); } function pivotClearImageScaling() { document.querySelectorAll('.foo-table.pivoted-view .pivot-spec-row img.relative-size').forEach(img => { img.classList.remove('relative-size'); img.style.removeProperty('width'); if (img.dataset.pivotOriginalSrc) { img.src = img.dataset.pivotOriginalSrc; delete img.dataset.pivotOriginalSrc; } }); }  function pivotGetVisibleProductHeaderCells() { const headerRow = document.querySelector('.foo-table.pivoted-view tr.pivot-header-row'); if (!headerRow) { return []; } return Array.from(headerRow.children).filter(th =>
!th.classList.contains('pivot-corner') &&
!th.classList.contains('hidden-col') &&
window.getComputedStyle(th).display !== 'none'
); } function pivotUpdateCheckboxEligibility() { const table = document.querySelector('.foo-table.pivoted-view'); if (!table) { return; } const visibleCells = pivotGetVisibleProductHeaderCells(); const tooFewProducts = visibleCells.length <= 1;  const diffCheckbox = table.querySelector('#pivotShowDifferences'); if (diffCheckbox) { diffCheckbox.disabled = tooFewProducts; if (tooFewProducts && diffCheckbox.checked) { diffCheckbox.checked = false; pivotApplyDifferencesOnly(false); } }  const sizeCheckbox = table.querySelector('#pivotCompareSize'); if (sizeCheckbox) { const productNames = visibleCells.map(th => th.textContent.trim().toLowerCase()); const excludedMatch = productNames.some(name =>
pivotSizeCompareConfig.excludePartial.some(term => name.includes(term)) ||
pivotSizeCompareConfig.excludeExact.includes(name)
); const disable = tooFewProducts || excludedMatch; sizeCheckbox.disabled = disable; if (disable && sizeCheckbox.checked) { sizeCheckbox.checked = false; pivotClearImageScaling(); } } } </script>



<div class="wp-block-group alignfull" id="comparison-table"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained"><div id="footable_parent_1275"
         class=" footable_parent ninja_table_wrapper loading_ninja_table wp_table_data_press_parent semantic_ui colored_table">
                <table data-ninja_table_instance="ninja_table_instance_1" data-footable_id="1275" data-filter-delay="1000" aria-label="Sonos speakers"            id="footable_1275"
           data-unique_identifier="ninja_table_unique_id_1440487392_1275"
           class=" foo-table ninja_footable foo_table_1275 ninja_table_unique_id_1440487392_1275 ui table  nt_has_lightbox ninja_search_left nt_type_legacy_table single line selectable celled vertical_centered ninja_custom_color inverted footable-paging-right ninja_table_pro ninja_table_afd_inline ninja_table_has_custom_filter">
                <colgroup>
                            <col class="ninja_column_0 ">
                            <col class="ninja_column_1 ">
                            <col class="ninja_column_2 ">
                            <col class="ninja_column_3 ">
                            <col class="ninja_column_4 ">
                            <col class="ninja_column_5 ">
                            <col class="ninja_column_6 ">
                            <col class="ninja_column_7 ">
                            <col class="ninja_column_8 ">
                            <col class="ninja_column_9 ">
                            <col class="ninja_column_10 ">
                            <col class="ninja_column_11 ">
                            <col class="ninja_column_12 ">
                            <col class="ninja_column_13 ">
                            <col class="ninja_column_14 ">
                            <col class="ninja_column_15 ">
                            <col class="ninja_column_16 ">
                            <col class="ninja_column_17 ">
                            <col class="ninja_column_18 ">
                            <col class="ninja_column_19 ">
                            <col class="ninja_column_20 ">
                            <col class="ninja_column_21 ">
                            <col class="ninja_column_22 ">
                            <col class="ninja_column_23 ">
                            <col class="ninja_column_24 ">
                            <col class="ninja_column_25 ">
                            <col class="ninja_column_26 ">
                            <col class="ninja_column_27 ">
                            <col class="ninja_column_28 ">
                            <col class="ninja_column_29 ">
                            <col class="ninja_column_30 ">
                            <col class="ninja_column_31 ">
                            <col class="ninja_column_32 ">
                            <col class="ninja_column_33 ">
                            <col class="ninja_column_34 ">
                            <col class="ninja_column_35 ">
                            <col class="ninja_column_36 ">
                            <col class="ninja_column_37 ">
                    </colgroup>
        <thead>
<tr class="footable-header">
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <th scope="col"  class="ninja_column_0 ninja_clmn_nm_name ">Name</th><th scope="col"  class="ninja_column_1 ninja_clmn_nm_image ">Image</th><th scope="col"  class="ninja_column_2 ninja_clmn_nm_type ">Type</th><th scope="col"  class="ninja_column_3 ninja_clmn_nm_msrp ">MSRP</th><th scope="col"  class="ninja_column_4 ninja_clmn_nm_currentprice ">Check price:</th><th scope="col"  class="ninja_column_5 ninja_clmn_nm_released ">Released</th><th scope="col"  class="ninja_column_6 ninja_clmn_nm_availability ">Availability <span title="Available: still sold as new by Sonos. Discontinued: not sold as new by Sonos.">ⓘ</span></th><th scope="col"  class="ninja_column_7 ninja_clmn_nm_audiochannels ">Audio channels</th><th scope="col"  class="ninja_column_8 ninja_clmn_nm_woofers ">Woofers</th><th scope="col"  class="ninja_column_9 ninja_clmn_nm_tweeters ">Tweeters</th><th scope="col"  class="ninja_column_10 ninja_clmn_nm_subwoofers ">Subwoofers</th><th scope="col"  class="ninja_column_11 ninja_clmn_nm_dolbyatmossupport ">Dolby Atmos<br> support?</th><th scope="col"  class="ninja_column_12 ninja_clmn_nm_trueplay ">Trueplay?</th><th scope="col"  class="ninja_column_13 ninja_clmn_nm_wifi ">Wi-Fi</th><th scope="col"  class="ninja_column_14 ninja_clmn_nm_bluetooth ">Bluetooth</th><th scope="col"  class="ninja_column_15 ninja_clmn_nm_hdmi ">HDMI</th><th scope="col"  class="ninja_column_16 ninja_clmn_nm_optical ">Optical</th><th scope="col"  class="ninja_column_17 ninja_clmn_nm_ethernetport ">Ethernet port</th><th scope="col"  class="ninja_column_18 ninja_clmn_nm_35mmaux ">3.5 mm AUX</th><th scope="col"  class="ninja_column_19 ninja_clmn_nm_usbc ">USB-C</th><th scope="col"  class="ninja_column_20 ninja_clmn_nm_multiroom ">Multiroom?</th><th scope="col"  class="ninja_column_21 ninja_clmn_nm_pairingoptions ">Pairing options</th><th scope="col"  class="ninja_column_22 ninja_clmn_nm_appcompatibility ">App compatibility</th><th scope="col"  class="ninja_column_23 ninja_clmn_nm_voiceassistantbuiltin ">Voice assistant?<br> (built-in mic)</th><th scope="col"  class="ninja_column_24 ninja_clmn_nm_airplay ">Airplay</th><th scope="col"  class="ninja_column_25 ninja_clmn_nm_hasbattery ">Has battery?</th><th scope="col"  class="ninja_column_26 ninja_clmn_nm_batterylife ">Battery life</th><th scope="col"  class="ninja_column_27 ninja_clmn_nm_chargetime ">Charge time</th><th scope="col"  class="ninja_column_28 ninja_clmn_nm_sizecmhwd ">Size (cm H×W×D)</th><th scope="col"  class="ninja_column_29 ninja_clmn_nm_weightkg ">Weight (kg)</th><th scope="col"  class="ninja_column_30 ninja_clmn_nm_sizeinchhwd ">Size (inch H×W×D)</th><th scope="col"  class="ninja_column_31 ninja_clmn_nm_weightlbs ">Weight (lbs)</th><th scope="col"  class="ninja_column_32 ninja_clmn_nm_ipcode ">Water and dustproof?</th><th scope="col"  class="ninja_column_33 ninja_clmn_nm_mountinghole ">Mounting<br> hole(s)?</th><th scope="col"  class="ninja_column_34 ninja_clmn_nm_coloroptions ">Color options:</th><th scope="col"  class="ninja_column_35 ninja_clmn_nm_modelnumber ">Model number</th><th scope="col"  class="ninja_column_36 ninja_clmn_nm_manual ">Manual</th><th scope="col"  class="ninja_column_37 ninja_clmn_nm_officialsite ">Official site:</th></tr>
</thead>
<tbody>

        <tr data-row_id="2916" class="ninja_table_row_0 nt_row_id_2916">
            <td>Arc Ultra</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-arc-ultra-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-arc-ultra.webp","alt_text":"sonos-arc-ultra"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-arc-ultra.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-arc-ultra" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-arc-ultra-300x300.webp"/></a></td><td>Soundbar</td><td>$999</td><td><a href="https://www.sonos.com/en-us/shop/arc-ultra" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/dp/B0DFK28LBB/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2024</td><td>Available</td><td><strong>9.1.4</strong><br> (surround, height, sub)</td><td>6</td><td>7</td><td>1 (Sound Motion)</td><td>Yes</td><td>Yes, manual</td><td>Wi-Fi 6</td><td>✔ 5.3</td><td>✔ eARC</td><td>❌ <br>(use <a href="https://www.sonos.com/en-us/shop/optical-audio-adapter" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>adapter</a>)</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Subwoofer,<br> surround rears</td><td>S2</td><td>✔</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>7.5×117.8×11.06</td><td>5.9</td><td>2.95×46.38×4.35</td><td>13.01</td><td>No</td><td>✔ 2× (backside)</td><td>Black, white</td><td>ARCG2##1</td><td><a href="https://www.sonos.com/en-us/guides/arcultra" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/arc-ultra" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1199" class="ninja_table_row_1 nt_row_id_1199">
            <td>Arc</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-arc-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-arc.webp","alt_text":"sonos-arc"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-arc.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-arc" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-arc-300x300.webp"/></a></td><td>Soundbar</td><td>$899</td><td><a href="https://www.sonos.com/en-us/shop/arc" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Sonos-Arc-Premium-Soundbar-Movies/dp/B087CD7H2G/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2020</td><td>Available</td><td><strong>5.0.2</strong><br> (surround + height)</td><td>8</td><td>3</td><td>0</td><td>Yes</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>✔ eARC</td><td>✔</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Subwoofer,<br> surround rears</td><td>S2</td><td>✔</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>8.7×114.2×11.6</td><td>6.25</td><td>3.43×44.96×4.57</td><td>13.78</td><td>No</td><td>✔ 2× (backside)</td><td>Black, white</td><td>ARCG1##1</td><td><a href="https://www.sonos.com/en-us/guides/arc" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/arc" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1200" class="ninja_table_row_2 nt_row_id_1200">
            <td>Arc SL</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-arc-sl-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-arc-sl.webp","alt_text":"sonos-arc-sl"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-arc-sl.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-arc-sl" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-arc-sl-300x300.webp"/></a></td><td>Soundbar</td><td>$749</td><td><a href="https://www.sonos.com/en-us/shop/arc-sl-b-stock-shadow" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Sonos-ARCSLUS1SDW-Arc-SL/dp/B09SGYQM32/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2020</td><td>Available</td><td><strong>5.0.2</strong><br> (surround + height)</td><td>8</td><td>3</td><td>0</td><td>Yes</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>✔ eARC</td><td>✔</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Subwoofer,<br> surround rears</td><td>S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>8.7×114.2×11.6</td><td>6.25</td><td>3.43×44.96×4.57</td><td>13.78</td><td>No</td><td>✔ 2× (backside)</td><td>Black, white</td><td>ARCSLUS1SDW</td><td><a href="https://www.sonos.com/en-us/guides/arcsl" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/arc-sl-b-stock-shadow" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1201" class="ninja_table_row_3 nt_row_id_1201">
            <td>Beam gen 2</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-beam-gen-2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-beam-gen-2.webp","alt_text":"sonos-beam-gen-2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-beam-gen-2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-beam-gen-2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-beam-gen-2-300x300.webp"/></a></td><td>Soundbar</td><td>$499</td><td><a href="https://www.sonos.com/en-us/shop/beam" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Sonos-Beam-Gen-2-Black/dp/B09GPYL7BJ/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2021</td><td>Available</td><td><strong>3.0</strong><br> (stereo + center)</td><td>4</td><td>1</td><td>0</td><td>Yes, virtual</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>✔ eARC</td><td>✔</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Subwoofer,<br> surround rears</td><td>S2</td><td>✔</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>6.90×65.1×10</td><td>2.8</td><td>2.7×25.625×3.94</td><td>6.2</td><td>No</td><td>✔ 2× (bottom)</td><td>Black, white</td><td>BEAM2##1</td><td><a href="https://www.sonos.com/en-us/guides/beam" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/beam" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1202" class="ninja_table_row_4 nt_row_id_1202">
            <td>Beam gen 1</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-beam-gen-1-img2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-beam-gen-1-img2.webp","alt_text":"sonos-beam-gen-1-img2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-beam-gen-1-img2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-beam-gen-1-img2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-beam-gen-1-img2-300x300.webp"/></a></td><td>Soundbar</td><td>$399</td><td><a href="https://www.amazon.com/All-new-Sonos-Beam-built-Streaming/dp/B07D4734HR/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2018</td><td>Discontinued</td><td><strong>3.0</strong><br> (stereo + center)</td><td>4</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>✔ ARC</td><td>✔</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Subwoofer,<br> surround rears</td><td>S1 & S2</td><td>✔</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>6.85×65.1×10</td><td>2.8</td><td>2.7×25.625×3.94</td><td>6.2</td><td>No</td><td>✔ 2× (bottom)</td><td>Black, white</td><td>BEAM1##1</td><td><a href="https://www.sonos.com/pdfs/productguides/en-us/sonos-user-guide.pdf" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="1203" class="ninja_table_row_5 nt_row_id_1203">
            <td>Ray</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-ray-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-ray.webp","alt_text":"sonos-ray"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-ray.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-ray" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-ray-300x300.webp"/></a></td><td>Soundbar</td><td>$279</td><td><a href="https://www.sonos.com/en-us/shop/ray" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Sonos-Essential-Soundbar-Music-Video/dp/B0B2KQFTG9/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2022</td><td>Available</td><td><strong>2.0</strong><br> (stereo)</td><td>2</td><td>2</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Subwoofer,<br> surround rears</td><td>S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>7.1×55.9×9.5</td><td>1.95</td><td>2.79×22×3.74</td><td>4.29</td><td>No</td><td>✔ 2× (backside)</td><td>Black, white</td><td>RAYG1##1</td><td><a href="https://www.sonos.com/en-us/guides/ray" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/ray" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1204" class="ninja_table_row_6 nt_row_id_1204">
            <td>Playbase</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-playbase-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-playbase.webp","alt_text":"sonos-playbase"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-playbase.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-playbase" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-playbase-300x300.webp"/></a></td><td>Soundbar</td><td>$699</td><td><a href="https://www.amazon.com/Sonos-Playbase-Widescreen-Streaming-furniture/dp/B01MSEPNIO/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2017</td><td>Discontinued</td><td><strong>3.0</strong><br> (stereo + center)</td><td>6</td><td>3</td><td>1</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 3</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Subwoofer,<br> surround rears</td><td>S1 & S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>5.8×72×38</td><td>8.6</td><td>2.28×28.35×14.96</td><td>18.85</td><td>No</td><td>❌</td><td>Black, white</td><td>PBASE##1</td><td><a href="https://www.sonos.com/pdfs/productguides/en-us/sonos-user-guide.pdf" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="1205" class="ninja_table_row_7 nt_row_id_1205">
            <td>Playbar</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-playbar-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-playbar.webp","alt_text":"sonos-playbar"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-playbar.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-playbar" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-playbar-300x300.webp"/></a></td><td>Soundbar</td><td>$699</td><td><a href="https://www.amazon.com/s?k=sonos+playbar&amp;tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2013</td><td>Discontinued</td><td><strong>3.0</strong><br> (stereo + center)</td><td>6</td><td>3</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 3</td><td>❌</td><td>❌</td><td>✔</td><td>✔ ×2</td><td>❌</td><td>❌</td><td>✔</td><td>Subwoofer,<br> surround rears</td><td>S1 & S2</td><td>❌</td><td>❌</td><td>No</td><td>NA</td><td>NA</td><td>8.5×90×14</td><td>5.4</td><td>5.51×35.43×3.35</td><td>11.9</td><td>No</td><td>✔ 2× (bottom)</td><td>Black</td><td>‎PBAR1##1BLK</td><td><a href="https://www.sonos.com/pdfs/productguides/en-us/sonos-user-guide.pdf" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="2917" class="ninja_table_row_8 nt_row_id_2917">
            <td>Sub gen 4</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sub-gen-4-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sub-gen-4.webp","alt_text":"sub-gen-4"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sub-gen-4.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sub-gen-4" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sub-gen-4-300x300.webp"/></a></td><td>Subwoofer</td><td>$799</td><td><a href="https://www.sonos.com/en-us/shop/sub" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/s?k=sonos+sub+gen+4&amp;tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2024</td><td>Available (pre-order)</td><td><strong>0.1</strong><br> (subwoofer)</td><td>0</td><td>0</td><td>2× 5×8 inch</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 6</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>With any soundbar <br>and/or room speakers</td><td>S2</td><td>❌</td><td>❌</td><td>No</td><td>NA</td><td>NA</td><td>38.9×40.2×15.8</td><td>11.79</td><td>15.31×15.83×6.22</td><td>25.99</td><td>No</td><td>❌</td><td>Black, white (both matte)</td><td>SUBG4##1</td><td><a href="https://www.sonos.com/en-us/guides/sub4" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/sub-4-black" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1206" class="ninja_table_row_9 nt_row_id_1206">
            <td>Sub gen 3</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-sub-gen-3-img2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-sub-gen-3-img2.webp","alt_text":"sonos-sub-gen-3-img2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-sub-gen-3-img2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-sub-gen-3-img2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-sub-gen-3-img2-300x300.webp"/></a></td><td>Subwoofer</td><td>$799</td><td><a href="https://www.sonos.com/en-us/shop/sub" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Sonos-Sub-Gen-Wireless-Subwoofer/dp/B087CCZH4Q/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2020</td><td>Available</td><td><strong>0.1</strong><br> (subwoofer)</td><td>0</td><td>0</td><td>2× 6 inch</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>With any soundbar <br>and/or room speakers</td><td>S2</td><td>❌</td><td>❌</td><td>No</td><td>NA</td><td>NA</td><td>38.9×40.2×15.8</td><td>13</td><td>15.31×15.83×6.22</td><td>29</td><td>No</td><td>❌</td><td>Black, white</td><td>SUBG3##1</td><td><a href="https://www.sonos.com/en-us/guides/sub" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/sub" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1207" class="ninja_table_row_10 nt_row_id_1207">
            <td>Sub gen 2</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-sub-gen-2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-sub-gen-2.webp","alt_text":"sonos-sub-gen-2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-sub-gen-2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-sub-gen-2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-sub-gen-2-300x300.webp"/></a></td><td>Subwoofer</td><td>$699</td><td><a href="https://www.amazon.com/Sonos-Sub-Wireless-Subwoofer-Black/dp/B01HL8LXQ8/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2016</td><td>Discontinued</td><td><strong>0.1</strong><br> (subwoofer)</td><td>0</td><td>0</td><td>2× 6 inch</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 3</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>With any soundbar <br>and/or room speakers</td><td>S1 & S2</td><td>❌</td><td>❌</td><td>No</td><td>NA</td><td>NA</td><td>38.9×40.2×15.8</td><td>16</td><td>15.31×15.83×6.22</td><td>36</td><td>No</td><td>❌</td><td>Black, white</td><td>SUBG2##1</td><td><a href="https://www.sonos.com/en-us/guides/sub" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="1208" class="ninja_table_row_11 nt_row_id_1208">
            <td>Sub gen 1</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-sub-gen-1-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-sub-gen-1.webp","alt_text":"sonos-sub-gen-1"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-sub-gen-1.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-sub-gen-1" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-sub-gen-1-300x300.webp"/></a></td><td>Subwoofer</td><td>$699</td><td><a href="https://www.amazon.com/SONOS-Wireless-Subwoofer-Black-Silver/dp/B00834SIO0/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2012</td><td>Discontinued</td><td><strong>0.1</strong><br> (subwoofer)</td><td>0</td><td>0</td><td>2× 6 inch</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 3</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>With any soundbar <br>and/or room speakers</td><td>S1 & S2</td><td>❌</td><td>❌</td><td>No</td><td>NA</td><td>NA</td><td>38.9×40.2×15.8</td><td>16</td><td>15.31×15.83×6.22</td><td>36</td><td>No</td><td>❌</td><td>Black</td><td>SUBG1##1</td><td><a href="https://www.sonos.com/en-us/guides/sub" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="1209" class="ninja_table_row_12 nt_row_id_1209">
            <td>Sub mini</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-sub-mini-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-sub-mini.webp","alt_text":"sonos-sub-mini"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-sub-mini.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-sub-mini" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-sub-mini-300x300.webp"/></a></td><td>Subwoofer</td><td>$429</td><td><a href="https://www.sonos.com/en-us/shop/sub-mini" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/gp/aw/d/B0BGJV72YM/" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2022</td><td>Available</td><td><strong>0.1</strong><br> (subwoofer)</td><td>0</td><td>0</td><td>2× 6 inch</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>With any soundbar <br>and/or room speakers</td><td>S2</td><td>❌</td><td>❌</td><td>No</td><td>NA</td><td>NA</td><td>30.5×23×23</td><td>6.35</td><td>12.01×9.06×9.06</td><td>14</td><td>No</td><td>❌</td><td>Black, white</td><td>SUBM1##1</td><td><a href="https://www.sonos.com/en-us/guides/submini" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/sub-mini" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1210" class="ninja_table_row_13 nt_row_id_1210">
            <td>Era 300</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-era-300-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-era-300.webp","alt_text":"sonos-era-300"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-era-300.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-era-300" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-era-300-300x300.webp"/></a></td><td>Room speaker</td><td>$449</td><td><a href="https://www.sonos.com/en-us/shop/era-300" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Sonos-Era-300-Wireless-Speaker/dp/B0BW2LV57K/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2023</td><td>Available</td><td><strong>2.0.1</strong><br> (stereo + height)</td><td>2</td><td>4</td><td>0</td><td>Yes</td><td>Yes, manual</td><td>Wi-Fi 6</td><td>✔ 5.0</td><td>❌</td><td>❌</td><td>No; possible <br><a href="https://www.sonos.com/en-us/shop/sonos-combo-adapter" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>via adapter</a></td><td>No; possible <br><a href="https://www.sonos.com/en-us/shop/sonos-combo-adapter" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>via adapter</a></td><td>✔</td><td>✔</td><td>Stereo pair,<br> as surround rears <span title="Compatible with: Arc, Arc SL, Beam Gen 2">ⓘ</span></td><td>S2</td><td>✔</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>18.5×26×16</td><td>4.47</td><td>6.3×10.24×7.28</td><td>9.85</td><td>'Humidity resistant'</td><td>✔ 2× (bottom)</td><td>Black, white</td><td>E30G1##1</td><td><a href="https://www.sonos.com/en-us/guides/era300" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/era-300" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1211" class="ninja_table_row_14 nt_row_id_1211">
            <td>Era 100</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-era-100-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-era-100.webp","alt_text":"sonos-era-100"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-era-100.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-era-100" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-era-100-300x300.webp"/></a></td><td>Room speaker</td><td>$249</td><td><a href="https://www.sonos.com/en-us/shop/era-100" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Sonos-Era-100-Wireless-Speaker/dp/B0BW34LCB8/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2023</td><td>Available</td><td><strong>2.0</strong><br> (stereo)</td><td>1</td><td>2</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 6</td><td>✔ 5.0</td><td>❌</td><td>❌</td><td>No; possible <br><a href="https://www.sonos.com/en-us/shop/sonos-combo-adapter" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>via adapter</a></td><td>No; possible <br><a href="https://www.sonos.com/en-us/shop/sonos-combo-adapter" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>via adapter</a></td><td>✔</td><td>✔</td><td>Stereo pair,<br> as surround rears <span title="Compatible with: Arc, Arc SL, Beam Gen 1&2, Ray, Amp">ⓘ</span></td><td>S2</td><td>✔</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>18.25×12×13.05</td><td>2.02</td><td>7.19×4.72×5.14</td><td>4.45</td><td>'Humidity resistant'</td><td>✔ 1× (bottom)</td><td>Black, white</td><td>E10G1##1</td><td><a href="https://www.sonos.com/en-us/guides/era100" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/era-100" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1212" class="ninja_table_row_15 nt_row_id_1212">
            <td>Five</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-five-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-five.webp","alt_text":"sonos-five"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-five.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-five" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-five-300x300.webp"/></a></td><td>Room speaker</td><td>$549</td><td><a href="https://www.sonos.com/en-us/shop/five" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Sonos-Five-High-Fidelity-Speaker-Superior/dp/B087CC4QH4/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2020</td><td>Available</td><td><strong>2.0</strong><br> (stereo)</td><td>3</td><td>3</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>20.3×36.4×15.4</td><td>6.3</td><td>7.99×14.33×6.06</td><td>13.89</td><td>'Humidity resistant'</td><td>❌</td><td>Black, white</td><td>FIVE1##1</td><td><a href="https://www.sonos.com/en-us/guides/five" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/five" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1213" class="ninja_table_row_16 nt_row_id_1213">
            <td>One SL</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-one-sl-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-one-sl.webp","alt_text":"sonos-one-sl"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-one-sl.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-one-sl" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-one-sl-300x300.webp"/></a></td><td>Room speaker</td><td>$179</td><td><a href="https://www.amazon.com/Sonos-One-SL-Microphone-Free-Speaker/dp/B07W8ZVXWR/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2019</td><td>Discontinued</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>16.1×12×12</td><td>1.76</td><td>6.36×4.71×4.71</td><td>3.88</td><td>No</td><td>❌</td><td>Black, white</td><td>ONESL##1</td><td><a href="https://www.sonos.com/en-us/guides/onesl" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/one-sl" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1214" class="ninja_table_row_17 nt_row_id_1214">
            <td>One gen 2</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-one-gen-2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-one-gen-2.webp","alt_text":"sonos-one-gen-2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-one-gen-2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-one-gen-2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-one-gen-2-300x300.webp"/></a></td><td>Room speaker</td><td>$199</td><td><a href="https://www.amazon.com/Sonos-Controlled-Speaker-Amazon-2-Pack/dp/B07PP93844/?tag=comparisont08-20?th=1" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2019</td><td>Discontinued</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S1 & S2</td><td>✔</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>16.1×12×12</td><td>1.76</td><td>6.36×4.71×4.71</td><td>3.88</td><td>No</td><td>❌</td><td>Black, white</td><td>ONEG2##1</td><td><a href="https://www.sonos.com/en-us/guides/one" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/one" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1215" class="ninja_table_row_18 nt_row_id_1215">
            <td>One gen 1</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-one-gen-1-img2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-one-gen-1-img2.webp","alt_text":"sonos-one-gen-1-img2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-one-gen-1-img2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-one-gen-1-img2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-one-gen-1-img2-300x300.webp"/></a></td><td>Room speaker</td><td>$199</td><td><a href="https://www.amazon.com/s?k=sonos+one+gen+1&amp;tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2017</td><td>Discontinued</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 3</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S1 & S2</td><td>✔</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>16.1×12×12</td><td>1.76</td><td>6.36×4.71×4.71</td><td>3.88</td><td>No</td><td>❌</td><td>Black, white</td><td>ONEG1##1</td><td><a href="https://www.sonos.com/en-us/guides/one" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="1216" class="ninja_table_row_19 nt_row_id_1216">
            <td>Play:5 gen 2</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-play-5-gen-2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-play-5-gen-2.webp","alt_text":"sonos-play-5-gen-2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-play-5-gen-2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-play-5-gen-2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-play-5-gen-2-300x300.webp"/></a></td><td>Room speaker</td><td>$499</td><td><a href="https://www.amazon.com/Sonos-Play-Ultimate-Wireless-Streaming/dp/B014LFINIA/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2015</td><td>Discontinued</td><td><strong>2.0</strong><br> (stereo)</td><td>3</td><td>3</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 3</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S1 & S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>20.3×36.4×15.4</td><td>6.4</td><td>8.03×14.33×6.06</td><td>14</td><td>No</td><td>❌</td><td>Black, white</td><td>PL5G2##1</td><td><a href="https://www.sonos.com/pdfs/productguides/en-us/sonos-user-guide.pdf" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="1217" class="ninja_table_row_20 nt_row_id_1217">
            <td>Play:5 gen 1</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-play-5-gen-1-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-play-5-gen-1.webp","alt_text":"sonos-play-5-gen-1"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-play-5-gen-1.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-play-5-gen-1" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-play-5-gen-1-300x300.webp"/></a></td><td>Room speaker</td><td>$499</td><td><a href="https://www.amazon.com/s?k=sonos+play%3A5+gen+1&amp;tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2009</td><td>Discontinued</td><td><strong>2.0</strong><br> (stereo)</td><td>2</td><td>2</td><td>1</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 3</td><td>❌</td><td>❌</td><td>❌</td><td>✔ ×2</td><td>✔ ×2; in and out</td><td>❌</td><td>✔</td><td>Stereo pair</td><td>S1 & S2</td><td>❌</td><td>❌</td><td>No</td><td>NA</td><td>NA</td><td>‎21.69×36.5×12.29</td><td>4.15</td><td>8.5×14.4×4.8</td><td>9.15</td><td>No</td><td>❌</td><td>Black, white</td><td>? (AKA ZonePlayer S5)</td><td><a href="https://www.sonos.com/pdfs/productguides/en-us/play5guide_en.pdf" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="1218" class="ninja_table_row_21 nt_row_id_1218">
            <td>Play:3</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-play-3-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-play-3.webp","alt_text":"sonos-play-3"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-play-3.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-play-3" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-play-3-300x300.webp"/></a></td><td>Room speaker</td><td>$299</td><td><a href="https://www.amazon.com/Sonos-Play-Mid-Sized-Streaming-certified/dp/B005441AJC/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2011</td><td>Discontinued</td><td><strong>2.0</strong><br> (stereo)</td><td>2</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 3</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S1 & S2</td><td>❌</td><td>❌</td><td>No</td><td>NA</td><td>NA</td><td>13.0×27×16</td><td>2.59</td><td>5.2×10.6×6.3</td><td>5.71</td><td>No</td><td>✔ 1× (backside)</td><td>Black, white</td><td>‎PLAY3##1</td><td><a href="https://www.sonos.com/pdfs/productguides/en-us/play3guide.pdf" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="1219" class="ninja_table_row_22 nt_row_id_1219">
            <td>Play:1</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-play-1-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-play-1.webp","alt_text":"sonos-play-1"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-play-1.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-play-1" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-play-1-300x300.webp"/></a></td><td>Room speaker</td><td>$199</td><td><a href="https://www.amazon.com/s?k=Sonos+play%3A1&amp;tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2013</td><td>Discontinued</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 3</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S1 & S2</td><td>❌</td><td>❌</td><td>No</td><td>NA</td><td>NA</td><td>16.0×12×12</td><td>1.0</td><td>6.4×4.7×4.7</td><td>2.2</td><td>No</td><td>✔ 1× (backside)</td><td>Black, white</td><td>‎PLAY1##1</td><td><a href="https://www.sonos.com/pdfs/productguides/en-us/play1guide.pdf" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="1220" class="ninja_table_row_23 nt_row_id_1220">
            <td>Move 2</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-move-2-img2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-move-2-img2.webp","alt_text":"sonos-move-2-img2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-move-2-img2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-move-2-img2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-move-2-img2-300x300.webp"/></a></td><td>Portable speaker</td><td>$449</td><td><a href="https://www.sonos.com/en-us/shop/move-2" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Sonos-Move-Wireless-Portable-Bluetooth/dp/B0CGGYYK2D/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2023</td><td>Available</td><td><strong>2.0</strong><br> (stereo)</td><td>1</td><td>2</td><td>0</td><td>No</td><td>Yes, automatic</td><td>Wi-Fi 6</td><td>✔ 5.0</td><td>❌</td><td>❌</td><td>No; possible <br><a href="https://www.sonos.com/en-us/shop/sonos-combo-adapter" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>via adapter</a></td><td>No; possible <br><a href="https://www.sonos.com/en-us/shop/sonos-combo-adapter" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>via adapter</a></td><td>✔</td><td>✔</td><td>Stereo pair</td><td>S2</td><td>✔</td><td>✔</td><td>Yes</td><td>24 hours</td><td>50% in 1 hour <br> over USB-C</td><td>24.1×16×12.7</td><td>3.07</td><td>9.50×6.30×5.00</td><td>6.77</td><td>Yes, IP56</td><td>❌</td><td>Black, white, green</td><td>MOVE2##1</td><td><a href="https://www.sonos.com/en-us/guides/move2" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/move-2" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1221" class="ninja_table_row_24 nt_row_id_1221">
            <td>Move</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-move-img2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-move-img2.webp","alt_text":"sonos-move-img2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-move-img2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-move-img2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-move-img2-300x300.webp"/></a></td><td>Portable speaker</td><td>$399</td><td><a href="https://www.sonos.com/en-us/shop/move" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Sonos-Move-Battery-powered-Bluetooth-built/dp/B07W95RBZM/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2019</td><td>Available</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, automatic</td><td>Wi-Fi 4</td><td>✔ 4.2</td><td>❌</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>Stereo pair</td><td>S1 & S2</td><td>✔</td><td>✔</td><td>Yes</td><td>11 hours</td><td>50% in 1 hour<br> via charging cradle</td><td>24.0×16×12.6</td><td>3.0</td><td>9.44×6.29×4.96</td><td>6.61</td><td>Yes, IP56</td><td>❌</td><td>Black, white</td><td>MOVE1##1</td><td><a href="https://www.sonos.com/en-us/guides/move" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/move" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="2754" class="ninja_table_row_25 nt_row_id_2754">
            <td>Roam 2</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-roam-2-1-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-roam-2-1.webp","alt_text":"sonos-roam-2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-roam-2-1.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-roam-2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-roam-2-1-300x300.webp"/></a></td><td>Portable speaker</td><td>$179</td><td><a href="https://www.sonos.com/en-us/shop/roam-2" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Roam-Portable-Waterproof-Bluetooth-Speaker/dp/B0CY6S748H/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2024</td><td>Available</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, automatic</td><td>Wi-Fi 5</td><td>✔ 5.2</td><td>❌</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>Stereo pair</td><td>S2</td><td>✔</td><td>✔</td><td>Yes</td><td>10 hours</td><td>Not mentioned <br>(15W)</td><td>16.8×6.0×6.2</td><td>0.43</td><td>6.61×2.36×2.44</td><td>0.93</td><td>Yes, IP67</td><td>❌</td><td>Black, white, red, blue, green</td><td>ROAM2US1</td><td><a href="https://www.sonos.com/en-us/guides/roam2" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/roam-2" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1223" class="ninja_table_row_26 nt_row_id_1223">
            <td>Roam</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-roam-img2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-roam-img2.webp","alt_text":"sonos-roam-img2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-roam-img2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-roam-img2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-roam-img2-300x300.webp"/></a></td><td>Portable speaker</td><td>$179</td><td><a href="https://www.sonos.com/en-us/shop/roam" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/Sonos-ROAM1US1BLK-Roam-Black/dp/B08Z1RP9K8/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2021</td><td>Available</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, automatic</td><td>Wi-Fi 5</td><td>✔ 5.0</td><td>❌</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>Stereo pair</td><td>S2</td><td>✔</td><td>✔</td><td>Yes</td><td>10 hours</td><td>50% in 1 hour <br> over USB-C (10W)</td><td>16.8×5.9×6.2</td><td>0.43</td><td>6.61×2.32×2.44</td><td>0.93</td><td>Yes, IP67</td><td>❌</td><td>Black, white, red, blue, green</td><td>ROAM1US1</td><td><a href="https://www.sonos.com/en-us/guides/roam" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/roam" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1222" class="ninja_table_row_27 nt_row_id_1222">
            <td>Roam SL</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-roam-sl-img-2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/sonos-roam-sl-img-2.webp","alt_text":"sonos-roam-sl-img-2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/sonos-roam-sl-img-2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="sonos-roam-sl-img-2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/sonos-roam-sl-img-2-300x300.webp"/></a></td><td>Portable speaker</td><td>$159</td><td><a href="https://www.sonos.com/en-us/shop/roam-sl" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos</a>,<br> <a href="https://www.amazon.com/sonos-roam-sl/s?k=sonos+roam+sl" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2022</td><td>Available</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 5</td><td>✔ 5.0</td><td>❌</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>✔</td><td>Stereo pair</td><td>S2</td><td>❌</td><td>✔</td><td>Yes</td><td>10 hours</td><td>50% in 1 hour <br> over USB-C (10W)</td><td>16.8×5.9×6.2</td><td>0.43</td><td>6.61×2.32×2.44</td><td>0.93</td><td>Yes, IP67</td><td>❌</td><td>Black, white</td><td>RMSL1R21</td><td><a href="https://www.sonos.com/en-us/guides/roamsl" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.sonos.com/en-us/shop/roam-sl" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Sonos.com</a></td>        </tr>
            <tr data-row_id="1224" class="ninja_table_row_28 nt_row_id_1224">
            <td>Floor lamp</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-floor-lamp-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-floor-lamp.webp","alt_text":"symfonisk-sonos-floor-lamp"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-floor-lamp.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="symfonisk-sonos-floor-lamp" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-floor-lamp-300x300.webp"/></a></td><td>Room speaker</td><td>$299.99</td><td><a href="https://www.ikea.com/us/en/p/symfonisk-floor-lamp-with-wifi-sonos-speaker-bamboo-smart-50528297/" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Ikea.com</a>,<br> <a href="https://www.amazon.com/s?k=ikea+symfonisk+floor+lamp&amp;tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2023</td><td>Available</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>136.0×37×37</td><td>?</td><td>54.0×15×15</td><td>?</td><td>No</td><td>❌</td><td>Black</td><td>E2136</td><td><a href="https://www.ikea.com/us/en/customer-service/product-support/symfonisk/getting-started-with-symfonisk-pubb2ad907d" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.ikea.com/us/en/p/symfonisk-floor-lamp-with-wifi-sonos-speaker-bamboo-smart-50528297/" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Ikea.com</a></td>        </tr>
            <tr data-row_id="1225" class="ninja_table_row_29 nt_row_id_1225">
            <td>Picture frame</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-picture-frame-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-picture-frame.webp","alt_text":"symfonisk-sonos-picture-frame"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-picture-frame.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="symfonisk-sonos-picture-frame" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-picture-frame-300x300.webp"/></a></td><td>Room speaker<br> (Symfonisk by IKEA)</td><td>$259.99</td><td><a href="https://www.ikea.com/us/en/p/symfonisk-picture-frame-w-sonos-wi-fi-speaker-black-smart-40487320/" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Ikea.com</a>,<br> <a href="https://www.amazon.com/s?k=ikea+symfonisk+picture+frame&amp;tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2021</td><td>Available</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>57.0×41×6</td><td>?</td><td>22.0×16×2</td><td>?</td><td>No</td><td>✔ 2× (backside)</td><td>Black, white</td><td>E1913</td><td><a href="https://www.ikea.com/us/en/customer-service/product-support/symfonisk/getting-started-with-symfonisk-pubb2ad907d" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.ikea.com/us/en/p/symfonisk-picture-frame-w-sonos-wi-fi-speaker-black-smart-40487320/" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Ikea.com</a></td>        </tr>
            <tr data-row_id="1226" class="ninja_table_row_30 nt_row_id_1226">
            <td>Table lamp gen 2</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-tble-lamp-gen-2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-tble-lamp-gen-2.webp","alt_text":"symfonisk-sonos-tble-lamp-gen-2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-tble-lamp-gen-2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="symfonisk-sonos-tble-lamp-gen-2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-tble-lamp-gen-2-300x300.webp"/></a></td><td>Room speaker<br> (Symfonisk by IKEA)</td><td>$190.99</td><td><a href="https://www.ikea.com/us/en/p/symfonisk-sonos-speaker-lamp-base-with-wifi-black-smart-40487301/" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Ikea.com</a>,<br> <a href="https://www.amazon.com/Sonos-ROAM1US1BLK-Roam-Black/dp/B08Z1RP9K8/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2021</td><td>Available</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>20.0×16×16</td><td>?</td><td>8.0×6×6</td><td>?</td><td>No</td><td>❌</td><td>Black, white</td><td>E1915</td><td><a href="https://www.ikea.com/us/en/customer-service/product-support/symfonisk/getting-started-with-symfonisk-pubb2ad907d" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.ikea.com/us/en/p/symfonisk-sonos-speaker-lamp-base-with-wifi-black-smart-40487301/" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Ikea.com</a></td>        </tr>
            <tr data-row_id="1227" class="ninja_table_row_31 nt_row_id_1227">
            <td>Table lamp gen 1</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-table-lamp-gen-1-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-table-lamp-gen-1.webp","alt_text":"symfonisk-sonos-table-lamp-gen-1"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-table-lamp-gen-1.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="symfonisk-sonos-table-lamp-gen-1" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-table-lamp-gen-1-300x300.webp"/></a></td><td>Room speaker<br> (Symfonisk by IKEA)</td><td>$179.99</td><td><a href="https://www.amazon.com/Sonos-ROAM1US1BLK-Roam-Black/dp/B08Z1RP9K8/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2019</td><td>Discontinued</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 3</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S1 & S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>40.6×22.9×22.9</td><td>?</td><td>16.0×9×9</td><td>?</td><td>No</td><td>❌</td><td>Black, white</td><td>E1776</td><td><a href="https://www.ikea.com/us/en/customer-service/product-support/symfonisk/getting-started-with-symfonisk-pubb2ad907d" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
            <tr data-row_id="1228" class="ninja_table_row_32 nt_row_id_1228">
            <td>Bookshelf gen 2</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-bookshelf-speaker-gen-2-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-bookshelf-speaker-gen-2.webp","alt_text":"symfonisk-sonos-bookshelf-speaker-gen-2"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-bookshelf-speaker-gen-2.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="symfonisk-sonos-bookshelf-speaker-gen-2" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-bookshelf-speaker-gen-2-300x300.webp"/></a></td><td>Room speaker<br> (Symfonisk by IKEA)</td><td>$139.99</td><td><a href="https://www.ikea.com/us/en/p/symfonisk-sonos-wifi-bookshelf-speaker-black-smart-gen-2-20506584/" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Ikea.com</a>,<br> <a href="https://www.amazon.com/IKEA-Symfonisk-Bookshelf-Speaker-804-352-11/dp/B082W1NJWF/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2022</td><td>Available</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 4</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>31.0×10×15</td><td>2.49</td><td>12.0×4×6</td><td>5.5</td><td>No</td><td>❌</td><td>Black, white</td><td>E1922</td><td><a href="https://www.ikea.com/il/he/manuals/symfonisk-wifi-bookshelf-speaker-white__AA-2212600-3.pdf" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td><a href="https://www.ikea.com/us/en/p/symfonisk-sonos-wifi-bookshelf-speaker-black-smart-gen-2-20506584/" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Ikea.com</a></td>        </tr>
            <tr data-row_id="1229" class="ninja_table_row_33 nt_row_id_1229">
            <td>Bookshelf gen 1</td><td data-json_values={"permalink":"","image_thumb":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-bookshelf-speaker-gen-1-300x300.webp","image_full":"https:\/\/comparisontabl.es\/wp-content\/uploads\/symfonisk-sonos-bookshelf-speaker-gen-1.webp","alt_text":"symfonisk-sonos-bookshelf-speaker-gen-1"}><a class="nt_lightbox" href="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-bookshelf-speaker-gen-1.webp" data-wpel-link="exclude" target="_blank" rel="nofollow noopener"><img decoding="async" alt="symfonisk-sonos-bookshelf-speaker-gen-1" class="nt_image_type_thumb" src="https://comparisontabl.es/wp-content/uploads/symfonisk-sonos-bookshelf-speaker-gen-1-300x300.webp"/></a></td><td>Room speaker<br> (Symfonisk by IKEA)</td><td>$99.99</td><td><a href="https://www.amazon.com/Sonos-ROAM1US1BLK-Roam-Black/dp/B08Z1RP9K8/?tag=comparisont08-20" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>Amazon</a></td><td>2019</td><td>Discontinued</td><td><strong>1.0</strong><br> (mono)</td><td>1</td><td>1</td><td>0</td><td>No</td><td>Yes, manual</td><td>Wi-Fi 3</td><td>❌</td><td>❌</td><td>❌</td><td>✔</td><td>❌</td><td>❌</td><td>✔</td><td>Stereo pair,<br> as surround rears</td><td>S1 & S2</td><td>❌</td><td>✔</td><td>No</td><td>NA</td><td>NA</td><td>31.0×10×16</td><td>2.49</td><td>12.0×4×6</td><td>5.5</td><td>No</td><td>❌</td><td>Black, white</td><td>E1801</td><td><a href="https://www.ikea.com/il/he/manuals/symfonisk-wifi-bookshelf-speaker-white__AA-2212600-3.pdf" &lt;/a="" data-wpel-link="exclude" target="_blank" rel="nofollow noopener" class="wpel-icon-left"><i class="wpel-icon dashicons-before dashicons-admin-links" aria-hidden="true"></i>User Guide</a></td><td>Page discontinued</td>        </tr>
    </tbody><!--ninja_tobody_rendering_done-->
    </table>
    
    
    
</div>

</div></div>



<h3 class="wp-block-heading has-medium-font-size" id="footnotes"><strong>Footnotes</strong></h3>



<ol class="wp-block-list">
<li class="has-small-font-size"><em>For model numbers, ## = location, and could be US/EU/UK/AU/JP (United States, Europe, United Kingdom, Australia, Japan). If the model number is appended with BLK, it&#8217;s the black model. If it&#8217;s not appended at all, or appended with WHT, it&#8217;s the white model.</em><br><em><em>Example; the model number for a Black Sonos Arc from the United States is: ARCG1<span style="text-decoration: underline;">US</span>1<span style="text-decoration: underline;">BLK</span>.</em></em></li>
</ol>



<h2 class="wp-block-heading" id="size-comparison">Size comparison of current models</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1200" height="1000" src="https://comparisontabl.es/wp-content/uploads/sonos-speaker-size-comparison-lineup-2024.png" alt="" class="wp-image-1316" style="object-fit:cover" srcset="https://comparisontabl.es/wp-content/uploads/sonos-speaker-size-comparison-lineup-2024.png 1200w, https://comparisontabl.es/wp-content/uploads/sonos-speaker-size-comparison-lineup-2024-300x250.png 300w, https://comparisontabl.es/wp-content/uploads/sonos-speaker-size-comparison-lineup-2024-1024x853.png 1024w, https://comparisontabl.es/wp-content/uploads/sonos-speaker-size-comparison-lineup-2024-768x640.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /><figcaption class="wp-element-caption"><em>Relative size comparison of the current, latest generation of Sonos speakers (as of April 2024). From left to right, front to back. First row: Ray, Beam gen 2. Second row: Arc, Roam, Move gen 2. Third row: Era 100, Era 300, Five, Sub Mini, Sub. Image Source: Sonos.com.</em></figcaption></figure>



<hr>


<style>
	#mc_embed_signup {
		background: linear-gradient(207deg, rgb(198 225 247 / 60%) 0%, rgb(242 255 200 / 60%) 100%);
		margin-top: 20px;
		padding: 20px;
		border-radius: 15px;
		border: 1px solid #ccc;
		clear: left;
		font: 16px Helvetica, Arial, sans-serif;
	}

	#mc_embed_signup .mc-field-group {
		display: flex !important;
		align-items: center !important;
		justify-content: space-between !important;
		flex-wrap: nowrap !important;
		margin-bottom: 0 !important;
		width: 60%;
	}

	#mc_embed_signup .mc-field-group input[type=email] {
		flex-grow: 1 !important;
		margin-right: -4px !important;
		border-radius: 4px 0 0 4px !important;
		background-color: #fff;
		border: 1px solid #ccc;
	}

	#mc_embed_signup .mc-field-group .button, #mc_embed_signup .button {
		width: auto !important;
		border-radius: 4px !important;
		margin-top: 0 !important;
		display: block;
		padding-left: 25px;
		padding-right: 25px;
	}

	#mc_embed_signup h2 {
		font-size: 26px;
		padding-top: 10px !important;
	}

	#mc_embed_signup h3 {
		padding-top: 0px;
	}

	@media only screen and (max-width: 768px) {
		#mc_embed_signup h3 {
			font-size: 25px;
		}
	}

	.label-container {
		display: block !important;
		margin-top: 20px !important;
		margin-bottom: 10px !important;
	}

	.social-media-links {
		margin-top: 20px;
		font-size: 16px;
	}
</style>
<div id="mc_embed_group">
	<div id="mc_embed_signup">
		<form action="https://comparisontabl.us18.list-manage.com/subscribe/post?u=29b86cce08b5d3d69d0cf167a&amp;id=7a5e5543b4&amp;f_id=00d139e1f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank">
			<div id="mc_embed_signup_block">
				<h3>Stay up-to-date with newly added products & tables!</h3>
				<div class="label-container">
					<label for="mce-EMAIL"><strong>Get email updates: </strong></label>
				</div>
				<div class="mc-field-group">
					<input type="email" name="EMAIL" class="required email" id="mce-EMAIL" required="" placeholder="you@example.com">
					<input type="submit" value="Subscribe!" name="subscribe" id="mc-embedded-subscribe" class="button">
				</div>
				<div class="social-media-links">
					Or follow us:
					<a href="https://bsky.app/profile/comparisontabl.es" target="_blank" class="social-icon-link" aria-label="Visit us on Bluesky" title="Visit us on Bluesky" data-wpel-link="external" rel="noopener"><i class="fa-brands fa-square-bluesky" aria-hidden="true"></i></a>
					<a href="https://www.facebook.com/comparisontables/" target="_blank" class="social-icon-link" aria-label="Visit us on Facebook" title="Visit us on Facebook" data-wpel-link="external" rel="noopener"><i class="icon fa fa-facebook-square" aria-hidden="true"></i></a>
					<a href="https://www.instagram.com/comparisontables/" target="_blank" class="social-icon-link" aria-label="Visit us on Instagram" title="Visit us on Instagram" data-wpel-link="external" rel="noopener"><i class="icon fa fa-instagram" aria-hidden="true"></i></a>
					<a href="https://www.reddit.com/r/comparisontables/" target="_blank" class="social-icon-link" aria-label="Visit us on Reddit" title="Visit us on Reddit" data-wpel-link="external" rel="noopener"><i class="fa-brands fa-square-reddit" aria-hidden="true"></i></a>
					<a href="https://www.pinterest.com/comparisontables/" target="_blank" class="social-icon-link" aria-label="Visit us on Pinterest" title="Visit us on Pinterest" data-wpel-link="external" rel="noopener"><i class="fa-brands fa-square-pinterest" aria-hidden="true"></i></a>
				</div>
				<!-- Response Containers -->
			</div>
		</form>
	</div>
</div>



<hr>


<h2>Questions or feedback? Leave a comment!</h2>
<p>Have any questions about our Sonos speaker comparison table? Want to see a (new) product added, spotted an error, or have any other feedback? Or do you want to show your appreciation, or just say 'hi'?</p>
<p>Then leave a comment below! We make sure to read and respond to all of them!</p>
<p>The post <a href="https://comparisontabl.es/sonos-speakers/" data-wpel-link="internal">Compare All Sonos speakers</a> appeared first on <a href="https://comparisontabl.es" data-wpel-link="internal">ComparisonTables</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://comparisontabl.es/sonos-speakers/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
