The Men Who Count With Goats
Free, Noninvasive Analytics with GoatCounter

Analytics, At What Cost?
It’s 2025. You’ve built a humble little site. Like a portfolio, or maybe a documentation hub for your custom waifu GPT.
And the question hits you:
Is anyone actually visiting this thing?
That’s it. You’re not trying to build a targeted ad campaign or fingerprint every visitor. You just want a simple counter.
So naturally, you get recommended Google Analytics. Or Plausible. Or Mixpanel. Or Heap. Or PostHog. Or one of the dozens of other options that all promise “simple, privacy-first analytics” but still somehow give off the same vibes as the Church of Scientology.
The Usual Analytics Tradeoffs
Let’s run through the usual suspects.
-
Google Analytics:
Free, powerful, and used by approximately everyone. Unfortunately, it’s also a privacy nightmare, requires a cookie banner in half the world, and is often overkill for basic needs. -
Self-hosted stuff (Matomo, Umami, etc.):
Decent privacy, good control, but now you’re a playing sysadmin just to track four people from Twitter who clicked on your blog. Congratulations. You’ve created your own DevOps problem.Not to mention you still need somewhere to host it.
-
Plausible / Fathom / PostHog (hosted):
Slick and privacy-respecting. But also: not free, especially for a hobby project. You’re paying a monthly fee to find out that nobody clicked your “About” page this week. Imagine paying to find out you’re unpopular. It’s like rush week all over again.
Enter the GOAT
GoatCounter is a lightweight, privacy-focused analytics platform with one crucial feature:
It respects the fact that your site is not that serious.
It’s free for personal use, open source if you want to self-host, and it doesn’t set cookies or track users across sessions. It gives you the basics—page views, referrers, counts by region and language—without asking for anything in return.
Also, it’s called GoatCounter. What more do you need?
Why GoatCounter Works
Here’s what makes GoatCounter a solid choice for a personal or small-scale site:
- No cookies or tracking scripts
- Simple dashboard
- Free for personal projects
- Easy to embed
If you’re running a blog, a documentation page, a project site, or literally anything where “visitor insights” means “did someone click this,” then it’s probably enough.
And yes, you can self-host it if you’re the type of person who runs Arch from a ThinkPad.
But Is It Professional?
Define professional.
If you’re running an e-commerce platform, or need granular conversion tracking, or want to slice data by returning user sessions and cohort churn… then no, GoatCounter is probably not what you want.
But if you’ve got a basic application and you don’t want to study EU privacy laws? Then GoatCounter is more than enough.
Setting It Up
Register
go to GoatCounter.com and sign up. Give it your email and point it at your website.
Add the Script
Once you sign up, it’ll redirect you to an empty dashboard spit out a script tag for you to embed.
Put that tag inside a body
template that renders on every page.
If you put it in head
, it’ll block HTML rendering until the script executes.
localhost
If you’d like to make sure this only runs in your production environment, you can add this snippet:
<script>
// Disable auto-tracking
window.goatcounter = {
no_onload: true
};
</script>
<script async data-goatcounter="https://your.goatcounter.com/count"
src="//gc.zgo.at/count.js"></script>
<script>
// Only track if sending from the production domain
const isProduction = location.hostname === "yourdomain.com";
if (isProduction && window.goatcounter && window.goatcounter.count) {
window.goatcounter.count();
}
</script>
This will only call count()
if you’re actually in production.
Deploy
As soon as count()
is called, you’ll start receiving analytics. And, as previously stated, it won’t send on localhost
. So you’ll have to deploy before receiving any data.
I can’t walk you through deploying your own site. I have no idea what you’re using. If you’ve got a modern setup with continuous deployment, you just merge to main
or master
and everything will appear like 30 seconds later. If you’re an oldhead, you probably have to SFTP files to your closet server and run a custom bash script.
In which case, you should get with the times.
Check Your Dashboard
Alright, let’s watch this thing go viral.
Open up your dashboard and see what you’ve got.
Hell yeah, we’ve barely just deployed and we’ve already got 4 entire page views.
If we had zero viewers before and we’ve been tracking for 30 seconds, then we’re gaining 8 viewers a minute. Which means 2880 new viewers in a day. And assuming they all come back and we keep gaining new viewers at the same rate…
…wait a second. Those 4 views are just me, aren’t they? Damn.
Final Thoughts
We live in an age where a basic TODO app contains 5 MB of React and loads 5 different analytics tools to track whether you hovered over the subsrcibe button. Sometimes less is more.
GoatCounter is lightweight, respects your privacy, and was probably written by a guy named Arne who lives in a homestead and makes his own sourdough. It functional. It’s rustic. It’s good enough.
And in the analytics world, that makes it revolutionary.