TapCub is live — analytics, insights and live chat, free on one platform

Free tool Analytics script size: measured, not copied from marketing pages

Every analytics vendor says its script is light. We downloaded each one from its public URL on the same day and counted the bytes: uncompressed, gzip, Brotli and what Chrome receives. The table lists the date and the exact URL so you can check it yourself — and the box below measures any script you paste.

  • Measured 2026-11-10
  • 10 scripts, exact URLs
  • Your script stays in the browser
Data

Download size of analytics scripts

Sorted by gzip size. TapCub is highlighted because it is ours; its number comes from the same measurement as everyone else's.

Measured 2026-11-10Vendors update their scripts; sizes change.

Measured script sizes

Each file was downloaded with curl three times: asking for no compression, for gzip, and for Brotli. “Chrome gets” is the encoding and size the server chose for Chrome's usual Accept-Encoding header.

Measured script sizes
Script and URLgzipBrotliChrome getsUncompressedJS files
Plausible (script.js)plausible.io/js/script.jsThe classic script URL, still served. 1,283 B 1,271 B 1,361 Bzstd 2,841 B 1
Fathomcdn.usefathom.com/script.js 2,090 B 2,100 B 2,283 Bzstd 6,981 B 1
Plausible (pa-….js)plausible.io/js/pa-6_srOGVV9SLMWJ1ZpUAbG.jsThe per-site script plausible.io loads on its own website; the size depends on the options enabled. 2,487 B 2,493 B 2,658 Bzstd 5,972 B 1
TapCub1.0.5static.pathclue.com/client.jsCore script. The extensions in the next table load only when their feature is switched on. 2,852 B 2,828 B 2,970 Bzstd 5,631 B 1
Umami Cloudcloud.umami.is/script.js 4,134 B 4,334 B 4,334 Bbr 9,246 B 1
Simple Analyticsscripts.simpleanalyticscdn.com/latest.js 4,860 B 4,895 B 5,147 Bzstd 9,611 B 1
Cloudflare Web Analyticsstatic.cloudflareinsights.com/beacon.min.jsBrotli was not offered in this test. 10,264 B not offered 10,264 Bgzip 31,853 B 1
Matomo (matomo.js)5.14.2cdn.jsdelivr.net/gh/matomo-org/matomo@5.14.2/matomo.jsThe file shipped in the 5.14.2 release, fetched through jsDelivr's GitHub mirror. Self-hosted: compression depends on your server, and plugins can add scripts. 22,178 B 19,293 B 19,293 Bbr 68,294 B 1
Microsoft Clarity (clarity.js)0.8.77scripts.clarity.ms/0.8.77/clarity.jsLoaded by a per-project tag (www.clarity.ms/tag/…, not measured), which then loads this file; further modules load on demand. 26,564 B 25,350 B 25,350 Bbr 73,892 B 2
PostHog (array.js)us-assets.i.posthog.com/static/array.jsFull library. Recordings, surveys and other extensions load as separate files when enabled. 120,880 B 121,277 B 121,115 Bbr 376,161 B 1

Bytes are what crosses the network for the script file itself. Collection requests (the hits sent back) are not counted, and “JS files” counts only scripts downloaded on a default install. Some CDNs compress on the fly at a fast setting, which is why Brotli is occasionally larger than gzip.

Not listed: Google Analytics 4 (gtag.js), Google Tag Manager, Baidu Tongji, 51.la and Mixpanel. On the measurement day our connection to googletagmanager.com, hm.baidu.com, sdk.51.la and cdn.mxpnl.com was reset, and gtag.js, gtm.js and hm.js are generated per site ID anyway, so there is no single checkable number. Use the box below to measure the one on your own site.

TapCub extensions that load on demand

A default TapCub install downloads only the 2,852 B gzip core. These files are added only when you switch the feature on, measured the same day.

TapCub extensions that load on demand
FilegzipBrotliUncompressedLoaded when
client-id-1.0.5.js3,003 B3,044 B6,443 BIdentification, a consent requirement or autocapture is on for the site
client-auto-1.0.5.js2,541 B2,568 B5,418 BAutocapture is on (plan and site setting)
client-attr-1.0.5.js1,166 B1,136 B2,321 BThe snippet carries data-attribution
client-replay-1.0.5.js1,297 B1,268 B2,274 BSession replay is on
client-rec-1.0.5.js23,683 B24,378 B77,145 BA session is sampled for replay (the rrweb recorder)

The live chat widget is a separate script and is not included here.

Measure your own script

Paste a script, or enter its URL and press the button. The size and gzip size are computed in your browser with CompressionStream (the browser's default gzip level, so a few per cent off a server's). Brotli cannot be computed in the browser.

Fetching sends one request from your browser straight to that address, without cookies. It only works if the server allows cross-origin requests; otherwise open the URL and paste the code.

Nothing you paste leaves this page.

Runs entirely in your browser. Nothing you type here is uploaded or stored by TapCub.

Version v1.0Updated Update history

Read the table

What script size does and does not tell you

Bytes are easy to compare. What they cost a page depends on how and when the script runs.

gzip and Brotli

The compressed size is what the visitor downloads. A few kilobytes either way is rarely noticeable on its own; tens of kilobytes on a slow mobile connection are.

Uncompressed size

The browser has to parse and run the uncompressed code on the main thread. That cost grows with the raw size and with what the script does at start-up, and it shows up in interaction responsiveness rather than in download time.

JS files

Each extra file can mean another request, and a script on a different domain needs its own connection. A small loader that fetches a large file costs both.

Async loading

Analytics snippets normally load with async or defer, so they do not block the first render. Size still matters on pages that are already heavy, and on low-end phones.

These are file sizes, not page-speed scores. To see the effect on your own pages, compare Core Web Vitals with and without the script, or look at it in your browser's network and performance panels.

How to use it

Compare, then measure your own

The table is a starting point; your site's snippet is what counts.

  1. 1

    Pick the column that matches your question

    gzip or Brotli for download size, uncompressed for parse and run cost, JS files for extra requests.

  2. 2

    Check the URL and date

    Each row links to the exact file measured. If the vendor shipped a new version since, the size has probably changed.

  3. 3

    Measure the script on your site

    Copy the analytics script URL from your page source and fetch it above, or paste its code. Per-site scripts such as gtag.js can only be measured this way.

Method

How the sizes were measured

One machine, one day, public URLs, no cache. The commands are simple enough to repeat.

  • Uncompressed: curl -H "Accept-Encoding: identity", bytes of the body
  • gzip / Brotli: Accept-Encoding: gzip or br, bytes actually sent by the server (not recompressed by us)
  • Chrome gets: Accept-Encoding: gzip, deflate, br, zstd; the server picks the encoding
  • TapCub's live file is byte-for-byte the same as the 1.0.5 build in our repository; its gzip size matches our build-time size check
What each column means
ColumnRequest headerWhat it shows
UncompressedAccept-Encoding: identityCode the browser parses and runs
gzipAccept-Encoding: gzipDownload for older clients and many proxies
BrotliAccept-Encoding: brDownload where Brotli is offered
Chrome getsgzip, deflate, br, zstdWhat a current Chrome downloads (zstd where supported)
JS files—Script files on a default install, not counting hits
Worked example

Reading three rows

How to read the numbers for a small, a medium and a large script from the table.

Three scripts from the measurement
ScriptgzipUncompressedReading
Plausible script.js1,283 B2,841 BSmallest download in the table; does little at start-up
TapCub client.js2,852 B5,631 BCore only; SPA tracking and Web Vitals included, extensions on demand
Matomo matomo.js 5.14.222,178 B68,294 BFull tracker API in one file; served from your own server

A script that does more (SPA tracking, performance metrics, heatmaps, replay) is larger for a reason. Compare scripts that do the same job, or add up a vendor's optional files for the features you need.

Common mistakes

Where size comparisons mislead

Four traps in “our script is only X KB” claims.

Counting only the loader

Some snippets download a small tag that then fetches the real library. Count every file a default install loads.

Comparing raw with gzip

Marketing pages mix uncompressed and compressed sizes. Compare the same column for every script.

Trusting an old number

Scripts change with every release. A size without a date and a URL cannot be checked.

Treating size as speed

A small script that runs heavy work at start-up can hurt responsiveness more than a larger one that idles. Measure Web Vitals on your pages.

FAQ

Analytics script size FAQ

Still have a question?

Chat with the team behind TapCub — we usually reply within a few hours on business days.

How big is the Google Analytics 4 script?

We did not get a reliable measurement on the test day, and gtag.js is generated per measurement ID, so its size depends on your configuration. Open your page source, copy the gtag.js URL and fetch it with the tool above to measure the one your visitors download.

Does an analytics script slow down my site?

An async analytics script does not block the first render, but it still uses bandwidth and main-thread time. The larger and busier the script, the more it can affect responsiveness on low-end phones. Compare Web Vitals with and without it.

How big is the TapCub tracking script?

The core client.js measured 2,852 bytes gzip (5,631 uncompressed) on 2026-11-10. Extensions for identification, autocapture, attribution and session replay download only when those features are switched on — sizes are in the second table.

Why is Brotli sometimes larger than gzip here?

We record what the server actually sent. Some CDNs compress on the fly with a fast Brotli setting, which can come out slightly larger than a gzip file compressed ahead of time.

Why not measure with my browser's network panel?

You can: the “transferred” size there is the same idea as our “Chrome gets” column. It includes response headers, so it is a little larger than the body size in the table.

Is the smallest script the right choice?

Only if it does what you need. Session replay, heatmaps and product analytics need more code. Decide on features first, then compare scripts that cover them.

Changelog

Update history

New features, fixes and data refreshes for this tool, newest first.

  1. · v1.0

    LaunchedFirst release.

Data this tool relies on

  • Measured analytics script sizes — checked 2026-11-10, reviewed every 3 months (next review by 2027-02-10)

Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics