Lightweight Analytics: 11 Scripts Measured and How to Choose

Lightweight analytics is website analytics that runs on a tiny tracking script, usually 1 to 7 KB compressed instead of the roughly 150 KB Google’s gtag.js weighed when we measured it, and that sets no cookies and shows your traffic on one simple dashboard. The best-known lightweight analytics tools are Plausible, Fathom, Simple Analytics, Umami, Pirsch, GoatCounter and Cloudflare Web Analytics. They cost your page almost nothing to load, but most of them report visitors and goals, not what those visitors are worth.
The ranking articles disagree on how small these scripts really are, so we fetched 11 of them on the same day with the same method. Below are the measurements, what makes a tool “light” beyond file size, which one fits which site, how to install it without undoing the gain, and the two things nobody mentions: ad blockers block these tools too, and a small script still has to answer the question of which pages make money.
What makes analytics lightweight
File size is the headline, but four things decide whether an analytics setup is actually light:
- Script weight. How many kilobytes every first-time visitor downloads before the tool can count them.
- Requests and work on the page. One file and one small request per pageview is light. A tag that pulls in more files, runs many listeners and phones several servers is not, whatever its size.
- No consent layer. Cookieless tools that collect no personal data can often run without a consent banner, and consent tools are scripts too. Removing the banner can save more weight than swapping the analytics tag.
- A small surface for you. One dashboard with pages, sources, countries, devices and goals. No custom report builder to learn, no tag manager to maintain.
Lightweight does not mean useless. Most of these tools track custom events, goals, UTM campaigns and outbound clicks. What they leave out is user-level tracking: profiles, cross-device journeys, audiences for ad retargeting and the hundreds of reports GA4 is built to support.
We measured 11 analytics scripts
The numbers in circulation conflict. One vendor says its script is 2.5 KB and GA4’s is 135 KB. A popular comparison says the same script is under 1 KB and GA4 is “roughly 50 KB plus.” A forum answer puts GA at 50 to 60 KB per page. So on October 6, 2026 we downloaded each tool’s standard public script and recorded its uncompressed size and its size after gzip (how it travels over the network on most servers).
| Script | File fetched | Uncompressed | Gzipped | Cookieless by default | Self-host option |
|---|---|---|---|---|---|
| Plausible | plausible.io/js/script.js | 2.8 KB | 1.3 KB | Yes | Yes (Community Edition) |
| Fathom | cdn.usefathom.com/script.js | 7.0 KB | 2.1 KB | Yes | No |
| Umami | cloud.umami.is/script.js | 4.8 KB | 2.3 KB | Yes | Yes |
| GoatCounter | gc.zgo.at/count.js | 9.2 KB | 3.3 KB | Yes | Yes |
| Pirsch | api.pirsch.io/pa.js | 11.8 KB | 3.5 KB | Yes | No |
| Simple Analytics | scripts.simpleanalyticscdn.com/latest.js | 7.5 KB | 3.8 KB | Yes | No |
| Swetrix | swetrix.org/swetrix.js | 21.8 KB | 6.3 KB | Yes | Yes |
| Cloudflare Web Analytics | static.cloudflareinsights.com/beacon.min.js | 31.7 KB | 10.2 KB | Yes | No |
| Matomo | matomo.js from the Matomo GitHub repo | 68.3 KB | 22.1 KB | Optional mode | Yes |
| PostHog | us-assets.i.posthog.com/static/array.js | 319.1 KB | 99.6 KB | Optional mode | Yes |
| Google Analytics 4 | googletagmanager.com/gtag/js (test ID) | 440.0 KB | 152.5 KB | No | No |
Method: one fetch per URL from a US server, uncompressed bytes counted, then compressed with gzip at maximum level so every file is compared the same way. 1 KB = 1,000 bytes. Where servers sent gzip themselves, their size was within 2% of ours.
Why published sizes disagree
- Script variants. Most tools ship several builds: with or without outbound-link tracking, hash routing, file downloads or revenue. Plausible also now issues per-site snippets, which can explain its own 2.5 KB figure against the 1.3 KB generic file we fetched. Pirsch and Plausible are not under 1 KB gzipped in their standard builds; the “under 1 KB” claims are out of date or refer to a minimal variant.
- gtag.js depends on your property. Google builds the file around the tag ID and its settings. We used a placeholder ID, so a real property with more features switched on can be heavier. That makes “50 KB” too low for today’s file, and 135 KB plausible for some configurations.
- Compressed vs uncompressed. Gzipped size is what crosses the network; uncompressed size is closer to what the browser has to parse and run. Articles mix the two.
- Lazy-loaded extras. PostHog and Matomo can load more code when you switch on features such as session replay, surveys or heatmaps. The base file is the minimum, not the total.
One more vendor uses the category as its name: a product called Lightweight Analytics says its script is 1 KB and that cookies can be switched on or off. We did not measure it, because it publishes no standard script URL.
Why script weight matters, and when it does not
Every third-party script competes with your own content for bandwidth and the browser’s main thread. That hits hardest on mid-range phones and slow connections. Slower pages lose visitors before they convert, and Core Web Vitals such as Largest Contentful Paint and Interaction to Next Paint are part of how Google evaluates page experience.
Keep the size of the effect in proportion. A 150 KB tag loaded with async rarely blocks the first paint on its own. The real gains usually come from removing the whole stack around it: the tag manager, the consent banner, the ad pixels that arrived with them. Google’s own guidance on loading third-party JavaScript is to load such scripts with async or defer unless they are needed for rendering, and to host critical ones yourself when you need control over caching and connection time.
Illustrative example: a site with 40,000 visits a month where each visit downloads the tag once. Swapping a 152 KB gtag.js for a 2 KB script saves 150 KB x 40,000 = 6,000,000 KB, about 6 GB of transfer a month. That is real on metered mobile plans, but it will not rescue a page that ships 3 MB of images. Fix the biggest files first.
Which lightweight analytics tool fits which site
| Your situation | Start with | Trade-off |
|---|---|---|
| Blog, docs or marketing site, want the simplest dashboard | Plausible, Simple Analytics | Few reports; Plausible has no free cloud tier |
| Agency or many client sites | Fathom, Plausible | Paid per traffic volume; few deep reports |
| Developer who wants an API and custom dashboards | Pirsch, Plausible, Umami | You build what the dashboard lacks |
| Zero budget, can run a small server | Umami, GoatCounter, Plausible Community Edition | You own updates, backups and bot filtering |
| Site already behind Cloudflare | Cloudflare Web Analytics | Basic metrics, limited goals and events |
| Regulated sector, needs a full GA-style suite you host | Matomo | Heavier script, more server work |
| SaaS app: funnels, retention, replays | PostHog, or Swetrix for a lighter middle ground | Not lightweight; more events to plan |
For a wider look at replacements that are not about weight, such as product analytics, BI or heatmaps, see our guide to choosing a GA4 alternative. If PostHog is what you are moving away from, the PostHog alternatives guide covers that job by job.
Lightweight web analytics vs product analytics
Web analytics answers “how many people came, from where, to which pages, and did they complete a goal.” Product analytics answers “what do signed-in users do inside the app, and do they come back.” The second needs user identifiers, more events and more code, which is why PostHog and Mixpanel are useful but not light. Many teams run a lightweight script on the marketing site and a product analytics SDK inside the app.
Self-hosted or cloud
Self-hosting (Umami, Plausible Community Edition, Matomo, GoatCounter, Swetrix) gives you the raw data and no subscription fee. In exchange you pay for the server and handle installation, upgrades, backups, uptime and bot filtering. Plausible states in its GitHub README that its Community Edition is released less often than the cloud product, filters bots less aggressively and leaves out some paid features such as funnels and ecommerce revenue goals. Cloud versions take a few minutes to set up and someone else keeps them running.
Install it without undoing the savings
A light tool loaded badly can still cost you. The pattern for almost every tool is one deferred tag in the shared layout:
<!-- in <head>, once, in the layout every page uses --> <script defer data-domain="example.com" src="https://plausible.io/js/script.js"></script>
- Use defer or async. Never a blocking script tag for analytics.
- Pick the SPA-aware build if your site changes routes without full page loads (React, Vue, Next.js client navigation). Otherwise you count one pageview per visit.
- Do not load it through a tag manager unless you already need one for other tags. A container adds its own file before the analytics can run.
- Track few, meaningful events: form submits, sign-ups, purchases, calls. Ten clean events beat a hundred noisy ones.
- Avoid duplicates. The same snippet in a theme and a plugin, or two tools sending the same event, inflates numbers and weight.
- Test on staging, then confirm live that pageviews and each goal appear once.
Running it next to GA4
Most of these tools are designed to run alongside GA4 during a switch, and several import historical GA data. Run both for two to four weeks. Expect the counts to differ: GA4 loses visits when people reject consent, cookieless tools count a returning visitor as new more often, and each tool filters bots its own way. Compare the trend lines and the ranking of your top pages and sources. If those agree, the tool works.
Ad blockers block lightweight tools too
A small, cookieless script is still a third-party analytics script, and blocker lists treat it as one. We checked the EasyPrivacy filter list (available in uBlock Origin, Adblock Plus and other blockers) on October 6, 2026. It contains rules for plausible.io, cdn.usefathom.com, simpleanalyticscdn.com, umami.is, pirsch.io, cloudflareinsights.com, gc.zgo.at, swetrix.org, PostHog and Google’s tag domains. It even lists many custom subdomains that sites point at Plausible to look first-party.
- Expect a gap. Visitors with blockers do not appear in any client-side tool, light or heavy. Sites with technical audiences are likely to lose the most.
- Proxy through your own domain if the vendor supports it (many document a proxy setup that serves the script and receives events on a path of your own site). This reduces, but does not remove, blocking.
- Sanity-check against server logs or orders. Your order system and form inbox count every conversion. If analytics shows far fewer, blocking or a broken tag is the reason.
Does lightweight analytics mean no cookie banner?
Vendors say their tools need no banner and comply with the major privacy laws. That is a reasonable reading in much of the US, UK, Canada and Australia for a tool that stores nothing on the device and collects no personal data. In the EU it is less simple: the ePrivacy rules cover reading or storing any information on a user’s device, not only cookies, and whether audience measurement is exempt depends on how the tool works and on your national regulator. Treat “no banner needed” as a claim to check with whoever owns compliance, not a guarantee. Our guide to cookieless tracking explains the methods these tools use and where consent still applies.
Remember the banner is about your whole page. If you also run ad pixels, a chat widget or embedded videos that set cookies, you need consent for those no matter which analytics you pick.
Check any script’s weight yourself
Vendor numbers age quickly. Two ways to measure the script on your own site:
- Chrome DevTools. Open DevTools, go to the Network panel, tick Disable cache and reload. Filter by the tool’s domain. The Size column shows bytes transferred and the resource size behind them; the count at the bottom shows how many requests the tool made. The Network panel reference explains each column. Then record a trace in the Performance panel and look for the script under third-party activity to see main-thread time.
- Command line. Download the exact URL your site loads and count bytes:
curl -sL "https://plausible.io/js/script.js" | wc -c # uncompressed bytes curl -sL "https://plausible.io/js/script.js" | gzip -9 | wc -c # gzipped bytes
Run the same check before and after a switch, on the same page, and watch your Core Web Vitals report for the following month. If the numbers do not move, the analytics tag was not your bottleneck.
What lightweight analytics leaves out: what your pages are worth
A lean dashboard tells you a page got 9,000 visits from Google and 27 goal completions. It rarely tells you whether those 27 were worth more than the 36 from a page with a tenth of the traffic. That is the question budgets depend on, and it needs three things most light tools only partly provide: a value on every conversion, the landing page that started the session, and the channel it came from.
Illustrative example (made-up numbers for a B2B site, organic search only, one month, demo request valued at $200 and trial signup at $50):
| Organic landing page | Sessions | Conversions | Value | Value per session |
|---|---|---|---|---|
| /pricing | 1,200 | 36 demo requests | $7,200 | $6.00 |
| /blog/setup-guide | 9,000 | 27 demo requests | $5,400 | $0.60 |
| /features/reports | 2,400 | 48 trial signups | $2,400 | $1.00 |
| Total | 12,600 | 111 | $15,000 | $1.19 |
Traffic says the blog post is the star. Value per session says the pricing page earns ten times more per visit, and that the blog post is still worth $5,400 a month, which is a case for keeping it updated. A visit count or a raw goal count alone would hide both points. To set the values, see how to calculate conversion value.
Before you pick a tool, ask: can it attach a value or revenue to each goal, and report that value by landing page and by source? Some light tools do this on higher plans (Plausible lists ecommerce revenue attribution on its Business plan). If the question you care about is conversions and value from organic search and AI assistants, SEOConversion is a cookieless, first-party script built for that: it autocaptures forms, calls and purchases, lets you assign a value to each conversion, and reports it by landing page. The full method is in our SEO conversion tracking guide.
FAQ
What is the lightest analytics script?
In our October 6, 2026 measurements, Plausible’s generic script.js was the smallest at about 1.3 KB gzipped, followed by Fathom (2.1 KB) and Umami (2.3 KB). Seven privacy-first scripts came in under 7 KB gzipped and Cloudflare’s beacon at about 10 KB, while Google’s gtag.js was about 150 KB. The differences between the light tools are too small to matter for page speed, so choose on features and data, not on a few hundred bytes.
What is the best free lightweight analytics tool?
If you can run a server, Umami, Plausible Community Edition, Matomo and GoatCounter are open source and free to self-host; you pay only for hosting and your own time. If you do not want a server, Cloudflare Web Analytics is free, and Umami and PostHog advertise free cloud tiers. Check each vendor’s pricing page, because free limits change often.
Does Google Analytics slow down a website?
It adds weight: the gtag.js file we fetched was about 440 KB uncompressed and 150 KB gzipped, plus the collection requests it sends. With async loading it rarely blocks the first render, but it still competes for bandwidth and main-thread time, which shows up most on slow phones. Measure it on your own pages before and after removing it rather than trusting anyone’s headline number.
Do I still need a cookie banner with lightweight analytics?
Often not for the analytics itself in the US, UK and many other places, because cookieless tools store nothing on the device and collect no personal data. In the EU the rules cover reading or storing any information on a device, so whether you are exempt depends on your setup and your regulator. You may also need a banner anyway for other scripts such as ads, chat or embedded video.
Can I run lightweight analytics alongside Google Analytics?
Yes. Both scripts can sit on the same page, and running them in parallel for a few weeks is the safest way to switch. Expect different numbers: cookieless tools count visitors differently, and GA4 loses visits when people reject consent. Compare trends and ratios, not exact totals.
Is there open source lightweight analytics on GitHub?
Yes. Plausible (AGPL, with an MIT-licensed tracker), Umami (MIT), Matomo, GoatCounter and Swetrix all publish their code on GitHub and can be self-hosted. Open source gives you the option to host your own data, but you take on updates, backups and bot filtering yourself.
Light script, real numbers: see what your organic pages earn.
SEOConversion is one cookieless, first-party script that tracks forms, calls and purchases, puts a value on each conversion and reports it by landing page for organic search and AI assistants.
Start free