Measured · 19 October 2026
Analytics script size compared: GA4, Plausible, Fathom, Simple Analytics, OpenPanel and Cookie Free Analytics
Every analytics tool ships a script that each visitor downloads before anything is counted. On 19 October 2026 we fetched six of them and measured the bytes. GA4's gtag.js was 152,875 bytes gzipped. Cookie Free Analytics' /cf.js was 930.
Why script size matters
A script is bytes to download, often on a phone connection, and then code the browser has to parse and run on the main thread. A small tracker does not make a slow page fast. A large one adds work to every page view, and that work can show up in Core Web Vitals. Size is not the only thing to compare, but it is easy to measure and easy to check yourself.
How we measured
On 19 October 2026 we fetched each public script once with curl -sL. Raw bytes are wc -c. Gzip bytes are gzip -9 reading from stdin, so no file name lands in the gzip header. Your browser may get Brotli or a different gzip level from the CDN, so the network tab will not show these exact numbers. The point is a like-for-like comparison.
The URLs: https://www.cookiefreeanalytics.com/cf.js · https://plausible.io/js/script.js (Plausible's legacy script; their newer per-site snippets differ) · https://cdn.usefathom.com/script.js · https://openpanel.dev/op1.js · https://scripts.simpleanalyticscdn.com/latest.js · https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX (a placeholder ID).
What we did not measure: requests a script makes after it loads, parse and execution time, and what each tool sends per pageview. gtag.js depends on the container. A real property with Ads and other tags configured will not weigh the same as the placeholder.
The table
Cookie Free Analytics was the smallest of the six on this run. Plausible's legacy script was about 1.4 times our gzip size. GA4's gtag.js with a placeholder ID was about 164 times. These scripts change; we re-measure and change the date when we re-read them.
| Script | Raw bytes | Gzip -9 bytes |
|---|---|---|
| Cookie Free Analytics /cf.js | 1,515 | 930 |
| Plausible (legacy /js/script.js) | 2,841 | 1,285 |
| Fathom script.js | 6,981 | 2,086 |
| OpenPanel op1.js | 8,929 | 3,277 |
| Simple Analytics latest.js | 7,515 | 3,826 |
| GA4 gtag.js (placeholder ID; real containers vary) | 439,303 | 152,875 |
What size doesn't tell you
Size says nothing about cookies, consent, where the data is stored, or what each beacon contains. A small script can still set a cookie. For ours, every field is listed in What a 1 KB analytics script actually sends. Ask the same questions of any tool in the table.
When GA4 is still the right tool
If you buy Google Ads, need remarketing audiences, or rely on Consent Mode's modeling, keep GA4. That is what the extra bytes are for. Cookie Free Analytics counts pageviews, sources, campaigns and named goals. It is not an ads suite.
Try it next to your current tool
Leave your current tag on, add /cf.js, and compare pageviews for a week — the steps are in Run next to GA4 for a week. Hobby is free with a badge; Starter is from €4. Install recipes are on /docs.
What the script sends · vs Google Analytics · vs Plausible · vs Fathom · vs Simple Analytics · vs OpenPanel · Run next to GA4 for a week