1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="utf-8"> 5<!-- TODO: Change all site.title's to page.titles, same goes for descriptions... --> 6<meta name="application-name" content="Pollster Audit"> 7<meta http-equiv="Content-type" content="text/html; charset=UTF-8; width=device-width, initial-scale=1"> 8<meta name="viewport" content="width=device-width, initial-scale=1"> 9<meta name="googlebot" content="notranslate"> 10<meta name="keywords" content="opinion polling, canadian polling, canada, auditing, audit, polling audit, pollster, pollster auditing, election audit, polling canada, poll tracker"> 11<meta name="description" content="Polls influence public perception, media narratives, and even voter turnout â yet not all pollsters are equally reliable. Pollster Audit analyzes the track records of Canadian opinion polling companies to help citizens, journalists, and researchers make informed decisions."/> 12<meta name="author" content="FX Morin"> 13<meta name="color-scheme" content="light dark" /> 14<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 15<meta name="theme-color" content="#efefef"> 16<meta property="og:title" content="Pollster Audit"/> 17<meta property="og:type" content="website"/> 18<meta property="og:url" content="https://pollsteraudit.cahttps://pollsteraudit.ca/en/"/> 19<meta property="og:image" content="https://pollsteraudit.ca/assets/favicon/PollsterAudit_Logo.png"/> 20<meta property="og:locale" content="en_CA" /> 21<meta property="og:locale:alternate" content="fr_CA" /> 22<meta name="url" content="https://pollsteraudit.cahttps://pollsteraudit.ca/en/"> 23<meta property="areaServed" typeof="Country" content="Canada"> 24<meta name="license:uri" content="https://github.com/PollsterAudit/PollsterAuditWebsite/blob/main/LICENSE"> 25<meta name="apple-mobile-web-app-title" content="Pollster Audit"> 26<meta name="msapplication-TileColor" content="#efefef"> 27<meta name="generator" content="MetaFX 1.0"/> 28 29<link rel="canonical" href="https://pollsteraudit.cahttps://pollsteraudit.ca/en/"> 30<link rel="icon" href="https://pollsteraudit.ca/assets/favicon/favicon.ico" type="image/x-icon"/> 31<link rel="apple-touch-icon" sizes="180x180" href="https://pollsteraudit.ca/assets/favicon/apple-touch-icon.png"> 32<link rel="icon" type="image/png" sizes="32x32" href="https://pollsteraudit.ca/assets/favicon/favicon-32x32.png"> 33<link rel="icon" type="image/png" sizes="192x192" href="https://pollsteraudit.ca/assets/favicon/android-chrome-192x192.png"> 34<link rel="icon" type="image/png" sizes="512x512" href="https://pollsteraudit.ca/assets/favicon/PollsterAudit_Logo.png"> 35<link rel="icon" type="image/png" sizes="16x16" href="https://pollsteraudit.ca/assets/favicon/favicon-16x16.png"> 36<link rel="manifest" href="https://pollsteraudit.ca/assets/favicon/site.webmanifest"> 37<link rel="shortcut icon" href="https://pollsteraudit.ca/assets/favicon/favicon.ico"> 38 39<title>Pollster Audit</title> 40<base href="https://pollsteraudit.ca/"> 41<link href="https://pollsteraudit.ca/assets/style.css" rel="stylesheet"> 42<link href="https://pollsteraudit.ca/assets/smooth-transition.css" rel="stylesheet"> 43<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> 44<link rel="preconnect" href="https://fonts.googleapis.com"> 45<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 46<link href="https://fonts.googleapis.com/css2?family=Tilt+Warp&display=swap" rel="stylesheet"> 47 48 49 50 51<link rel="alternate" hreflang="fr" href="https://pollsteraudit.ca/fr/" /> <!-- TODO: Add full path--> 52 53 54<meta name="url-link" id="url-link" content="https://pollsteraudit.ca"> 55</head>
vendor: 64 bytes, lines 55-56
55 56<script async src="https://www.googletagmanager.com/gtag/js?id=
56G-Q5QB1YJS7S
vendor: 12 bytes, line 56
56"></script>
57<script> 58
vendor: 139 bytes, lines 58-61
58window.dataLayer = window.dataLayer || []; 59 function gtag(){dataLayer.push(arguments);} 60 gtag('js', new Date()); 61 gtag('config', '
61G-Q5QB1YJS7S
vendor: 4 bytes, line 61
61');
62</script>
62 63<body> 64
65<script> 66 // Theme (dark/light) 67 let theme = getTheme(); 68 69 function getTheme() { 70 return localStorage.getItem("theme") || 71 (matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark"); 72 } 73 function saveTheme(theme) { 74 localStorage.setItem("theme", theme); 75 } 76 function applyTheme(theme) { 77 document.documentElement.dataset.theme = theme; 78 document.documentElement.setAttribute('data-bs-theme', theme) 79 } 80 applyTheme(theme); 81 82 window.addEventListener('DOMContentLoaded', () => { 83 applyTheme(theme); 84 const themeToggler = document.getElementById("theme-toggle"); 85 themeToggler.addEventListener("click", function(){ 86 const newTheme = theme === "light" ? "dark" : "light"; 87 applyTheme(newTheme); 88 saveTheme(newTheme); 89 theme = newTheme; 90 }, false); 91 }); 92 93 // Language 94 function switchLanguage(language) { 95 localStorage.setItem("lang", language); 96 if (language !== 'en') { 97 let alternativePage = ""; 98 99 100 101 102 if (language === "fr") { 103 alternativePage = "/accueil/"; 104 } 105 106 107 window.location = window.location.href 108 .replace("/en/", "/" + language + "/") 109 .replace("/home/", alternativePage); 110 } 111 } 112 113 let language = localStorage.getItem("lang"); 114 if (language == null) { // No language set, check if they are on the right page 115 language = navigator.language.slice(0, 2).toLowerCase(); 116 } 117 if (language !== 'en') { 118 switchLanguage(language); 119 } 120</script>
120 121<nav class="navbar navbar-expand-lg px-4 mb-4"> 122 <a class="navbar-brand beta-tag" href="https://pollsteraudit.ca/en/">Pollster Audit</a> 123 <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> 124 <span class="navbar-toggler-icon"></span> 125 </button> 126 127 <div class="collapse navbar-collapse" id="navbarSupportedContent"> 128 <ul class="navbar-nav me-auto"> 129 <li class="nav-item active"> 130 <a class="nav-link" href="https://pollsteraudit.ca/en/">Home</a> 131 </li> 132 <li class="nav-item"> 133 <a class="nav-link" href="https://pollsteraudit.ca/en/bias/">Bias Analysis</a> 134 </li> 135 <li class="nav-item"> 136 <a class="nav-link" href="https://pollsteraudit.ca/en/about/">About</a> 137 </li> 138 </ul> 139 <div class="btn-group-navbar"> 140 <button class="btn btn-outline-secondary" id="theme-toggle"> 141 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"> 142 <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/> 143 </svg> 144 </button> 145 <div class="dropdown px-4"> 146 <button class="btn btn-outline-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false"> 147 En 148 </button> 149 <ul class="dropdown-menu dropdown-menu-language dropdown-menu-md-start dropdown-menu-lg-end" aria-labelledby="dropdownMenuButton" data-bs-display="static"> 150 <li><a class="dropdown-item" onclick="switchLanguage('en')">English</a></li> 151 <li><a class="dropdown-item" onclick="switchLanguage('fr')">Français</a></li> 152 </ul> 153 </div> 154 155 <div class="btn-group"> 156 <button class="btn btn-outline-primary" id="dateRangeButton" data-bs-toggle="dropdown" aria-expanded="false"> 157 Select Date Range 158 </button> 159 <button class="btn btn-outline-danger" onclick="setRangeFormat('all')"> 160 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16"> 161 <path fill-rule="evenodd" d="M8 3a5 5 0 1 1-4.546 2.914.5.5 0 0 0-.908-.417A6 6 0 1 0 8 2z"/>
161 162 <path d="M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466"/> 163 </svg> 164 </button> 165 <div class="dropdown-menu dropdown-menu-time dropdown-menu-md-start dropdown-menu-lg-end" aria-labelledby="dropdownMenuButton" data-bs-display="static"> 166 <div class="container-fluid"> 167 <div class="row"> 168 <div class="col text-center ratio ratio-16x9 mx-1"> 169 <button class="btn px-0 text-wrap dropdown-item date-range-item" onclick="setRangeFormat('last7')">Last 7 Days</button> 170 </div> 171 <div class="col text-center ratio ratio-16x9 mx-1"> 172 <button class="btn px-0 text-wrap dropdown-item date-range-item" onclick="setRangeFormat('last30')">Last 30 Days</button> 173 </div> 174 </div> 175 <div class="row"> 176 <div class="col text-center ratio ratio-16x9 mx-1"> 177 <button class="btn px-0 text-wrap dropdown-item date-range-item" onclick="setRangeFormat('last6Months')">Last 6 Months</button> 178 </div> 179 <div class="col text-center ratio ratio-16x9 mx-1"> 180 <button class="btn px-0 text-wrap dropdown-item date-range-item" onclick="setRangeFormat('sinceLastElection')">Since Last Election</button> 181 </div> 182 </div> 183 <div class="row"> 184 <div class="col text-center ratio ratio-16x9 mx-1"> 185 <button class="btn px-0 text-wrap dropdown-item date-range-item" onclick="setRangeFormat('campaignPeriod')">Campaign Period</button> 186 </div> 187 <div class="col text-center ratio ratio-16x9 mx-1"> 188 <button class="btn px-0 text-wrap dropdown-item date-range-item" onclick="setRangeFormat('preCampaignPeriod')">Pre-Campaign Period</button> 189 </div> 190 </div> 191 </div> 192 <div class="input-group mb-2 mt-1"> 193 <input type="date" class="form-control" id="startDate"> 194 <span class="input-group-text">to</span> 195 <input type="date" class="form-control" id="endDate"> 196 </div> 197 <button class="btn btn-primary w-100" onclick="applyCustomRange()">Apply</button> 198 </div> 199 </div> 200 201 </div> 202 </div> 203</nav> 204 205<section class="py-3 border-bottom"> 206 <div class="container"> 207 <div class="row justify-content-md-center align-items-center text-center"> 208 <div class="col"> 209 <h3>Holding Pollsters Accountable</h3> 210 <p class="fs-6"> 211 Polls influence public perception, media narratives, and even voter turnout â yet not all pollsters are equally reliable. Pollster Audit analyzes the track records of Canadian opinion polling companies to help citizens, journalists, and researchers make informed decisions. 212 </p> 213 </div> 214 </div> 215 </div> 216</section> 217 218<section class="pb-4 pt-3_5 border-bottom"> 219 <div class="container"> 220 <div class="row justify-content-md-center"> 221 <div class="col-5"> 222 <select id="firmSelector" class="form-select" aria-label="highlight polling firm"> 223 <option value="" selected>- Highlight Polling Firm -</option> 224 </select> 225 </div> 226 </div> 227 </div> 228 229 <div id="bias" class="container-xxl bd-gutter mt-3 bd-layout"> 230 <div class="container-fluid"> 231 <div class="row justify-content-md-center"> 232 <canvas id="generalChart"></canvas> 233 </div> 234 </div> 235 </div> 236</section> 237 238<section class="py-4"> 239 <div class="container"> 240 <h3 class="text-center mb-3">Our Goals</h3> 241 <div class="d-flex align-items-center"> 242 <div class="mx-auto flex-fill"></div> 243 <div class="d-inline-flex"> 244 <div class="list-group list-group-flush fs-6 align-content-center flex-fill bullet-points"> 245 <div class="list-group-item"> 246 Providing easy access to public opinion polling data 247 </div> 248 <div class="list-group-item"> 249 Visualizing complex data in easy to understand formats 250 </div> 251 <div class="list-group-item"> 252 Explaining statistics in a way that anyone can easily understand 253 </div> 254 <div class="list-group-item"> 255 Educating the public on the risks of opinion polling 256 </div> 257 <div class="list-group-item"> 258 Flagging dishonest pollsters using statistically backed data 259 </div> 260 <div class="list-group-item"> 261 Advocating for regulations, and promoting safeguards against abuse 262 </div> 263 </div> 264 </div> 265 <div class="mx-auto flex-fill"></div> 266 </div> 267 </div> 268</section> 269 270<footer class="d-flex flex-wrap justify-content-between align-items-center px-4 py-3 my-4 border-top"> 271 <div class="container-fluid"> 272 <div class="row"> 273 <div class="col-md-4 d-flex align-items-center">
274 <span class="footer-text">© 2025 FXCO Ltd.</span> 275 </div> 276 <div class="col-md-4 d-flex text-center justify-content-center align-items-center"> 277 <span class="footer-text-muted">Made by Canadians who care</span> 278 </div> 279 280 <ul class="nav col-md-4 justify-content-end"> 281 <li class="nav-item"><a href="https://pollsteraudit.ca/en" class="nav-link px-2 footer-text">Home</a></li> 282 <li class="nav-item"><a href="https://pollsteraudit.ca/en/about" class="nav-link px-2 footer-text">About</a></li> 283 <li class="nav-item"><a href="https://pollsteraudit.ca/en/faq" class="nav-link px-2 footer-text">FAQs</a></li> 284 <li class="nav-item"> 285 <a href="https://discord.gg/6grVnjE3DC" class="nav-link px-2 footer-text"> 286 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" viewBox="0 0 16 16"> 287 <path d="M13.545 2.907a13.2 13.2 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.2 12.2 0 0 0-3.658 0 8 8 0 0 0-.412-.833.05.05 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.04.04 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032q.003.022.021.037a13.3 13.3 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019q.463-.63.818-1.329a.05.05 0 0 0-.01-.059l-.018-.011a9 9 0 0 1-1.248-.595.05.05 0 0 1-.02-.066l.015-.019q.127-.095.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.05.05 0 0 1 .053.007q.121.1.248.195a.05.05 0 0 1-.004.085 8 8 0 0 1-1.249.594.05.05 0 0 0-.03.03.05.05 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.2 13.2 0 0 0 4.001-2.02.05.05 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.03.03 0 0 0-.02-.019m-8.198 7.307c-.789 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612m5.316 0c-.788 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612"/> 288 </svg> 289 </a> 290 </li> 291 <li class="nav-item"> 292 <a href="https://opencollective.com/pollster-audit" class="nav-link px-2 footer-text"> 293 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" viewBox="0 0 16 16"> 294 <path fill-opacity=".4" d="M12.995 8.195c0 .937-.312 1.912-.78 2.693l1.99 1.99c.976-1.327 1.6-2.966 1.6-4.683 0-1.795-.624-3.434-1.561-4.76l-2.068 2.028c.468.781.78 1.679.78 2.732z"/> 295 <path d="M8 13.151a4.995 4.995 0 1 1 0-9.99c1.015 0 1.951.273 2.732.82l1.95-2.03a7.805 7.805 0 1 0 .04 12.449l-1.951-2.03a5.07 5.07 0 0 1-2.732.781z"/> 296 </svg> 297 </a> 298 </li> 299 <li class="nav-item"> 300 <a href="https://github.com/PollsterAudit" class="nav-link px-2 footer-text"> 301 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="currentColor" viewBox="0 0 16 16"> 302 <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"/> 303 </svg> 304 </a> 305 </li> 306 </ul> 307 </div> 308 <div class="row"> 309 <div class="container-fluid"> 310 <span class="footer-text" style="font-size:0.85rem;">Contact Us: <a href="/cdn-cgi/l/email-protection#44272b2a3025273004342b2828373021362531202d306a2725"><span class="__cf_email__" data-cfemail="12717d7c6673716652627d7e7e616677607367767b663c7173">[email protected]</span></a></span> 311 </div> 312 </div> 313 </div> 314</footer> 315<!-- Bootstrap -->
vendor: 109 bytes, lines 315-316
315 316<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
316<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
316 317 318<!-- Chart.js from CDN --> 319
320<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
vendor: 1 bytes, line 320
320
321<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/chartjs-adapter-date-fns.bundle.min.js"></script>
vendor: 1 bytes, line 321
321
322<script src="https://cdn.jsdelivr.net/npm/@sgratzl/[email protected]/build/index.umd.min.js"></script>
vendor: 1 bytes, line 322
322
323<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/chartjs-plugin-zoom.min.js"></script>
vendor: 1 bytes, line 323
323
324<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/chartjs-plugin-regression-trendline.min.js"></script>
324 325
326<script src="https://pollsteraudit.ca/en/assets/lang.js"></script>
vendor: 1 bytes, line 326
326
327<script src="https://pollsteraudit.ca/assets/main.js"></script>
vendor: 1 bytes, line 327
327
328<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"8dfdd8e4052c412fb49fe2ffbef89846","r":1,"spa":2}' crossorigin="anonymous"></script>
328 329</body> 330</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.