diff --git a/site/themes/citra-bs-theme/layouts/game/list.html b/site/themes/citra-bs-theme/layouts/game/list.html
index 473a2ce..09d11e8 100644
--- a/site/themes/citra-bs-theme/layouts/game/list.html
+++ b/site/themes/citra-bs-theme/layouts/game/list.html
@@ -25,7 +25,7 @@
 		</div>
 	</div>
 
-	<table class="table table-responsive">
+	<table id="compatibility-list" class="table table-responsive">
 		<thead>
 			<tr>
 				<th></th>
@@ -46,7 +46,7 @@
 			{{ range .Pages }}
 			  {{- $rating := index .Site.Data.compatibility .Params.compatibility }}
 				{{- $type := index .Site.Data.gameTypes (.Params.game_type | default "3ds") }}
-				<tr>
+				<tr data-compatibility="{{ $rating.name }}">
 	        <td class="col-md-1"><img src="{{ .Site.BaseURL }}images/game/icons/{{ .File.BaseFileName }}.png" /></td>
 	        <td class="col-md-6"><a href="{{ .Permalink }}">{{ .Params.title }}</a></td>
 					<td class="col-md-1"><img src="{{ .Site.BaseURL }}images/game/types/{{ $type.key }}.png" title="{{ $type.name }}" /></td>
@@ -64,6 +64,49 @@
 <script src="https://code.highcharts.com/modules/exporting.js"></script>
 
 <script type="text/javascript">
+function filterTable(e){
+    var rating = this.name;
+
+    //If clicked on a new color, hides all other colors
+    if (rating != window.lastClicked){
+        clearFilter();
+        window.lastClicked = rating;
+        var chart = $("#highchart-container").highcharts()
+        window.clearButton = chart.renderer.button('Clear Filter', null, null, function(){ clearFilter() }, {
+            zIndex: 20
+        }).attr({
+            align: 'right',
+            title: 'Clear compatibility filter'
+        }).add().align({
+            align: 'right',
+            x: -16,
+            y: 18
+        }, false, null);
+
+        $("#compatibility-list tbody tr[data-compatibility][data-compatibility!=\"" + rating + "\"]").css('display', 'none');
+
+        //Checks if section headers are empty and hides them if they are
+        $("#compatibility-list tbody tr:not([data-compatibility])").each(function(){
+            var elements = $(this).nextUntil("#compatibility-list tbody tr:not([data-compatibility])").filter(function(){
+                return $(this).css('display') != 'none';
+            });
+            var containsVisible = !!elements.length;
+            if (!containsVisible)
+                $(this).css('display', 'none');
+        })
+    } else {
+        clearFilter();
+    }
+}
+function clearFilter(){
+    $("#compatibility-list tbody tr").css('display', '');
+    if (window.clearButton){
+        window.clearButton.destroy();
+        window.clearButton = undefined;
+        window.lastClicked = undefined;
+    }
+}
+
 Highcharts.chart('highchart-container', {
     chart: { type: 'bar' },
     colors: [{{ range .Site.Data.compatibility }}"{{ .color }}", {{- end }}],
@@ -73,7 +116,13 @@ Highcharts.chart('highchart-container', {
     xAxis: { categories: [''] },
     yAxis: { min: 0, max: {{ len .Data.Pages }}, title: { text: '' } },
     legend: { enabled: false },
-    plotOptions: { series: { stacking: 'normal' } },
+    plotOptions: { series: {
+        stacking: 'normal',
+        cursor: 'pointer',
+        events: {
+            click: filterTable
+        }
+    } },
     series: [
 			{{- $dataPages := .Data.Pages }}
 			{{- range .Site.Data.compatibility }}