PageSourceSearch

https://pollsteraudit.ca/en/

html pollsteraudit.ca collected 2026-09-25 22:00:05 UTC 20,392 bytes, 330 lines download raw bytes

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&#160;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.