Show a view counter on every blog post — one script, no per-post setup
People trust posts that other people read. A small "views" counter on a blog post is the oldest social proof on the web — and most modern analytics tools dropped it. Plausible and Fathom offer shared dashboards; Google Analytics offers nothing embeddable at all. If you wanted the humble view counter back, your options were mostly self-hosted widgets or wiring a stats API into your templates yourself.
Simplytics has badges built in, and as of today they work per page, not just per site.
The one-script way (recommended for blogs)
Paste this once into your blog post template — the layout file that wraps every post:
<script async src="https://simplytics.dev/badge.js" data-domain="yourblog.com"></script>
That's the whole setup. The script reads the path of whatever page it's on and renders that page's badge in place:
- on
/blog/my-first-postit shows that post's views, - on
/blog/another-postit shows that one's, - same snippet everywhere, zero per-post editing.
The badge it renders is a ~1 KB SVG that reads views | 312 — always all-time views, on purpose. Blog posts accumulate readers over years; "views this month" undersells your best evergreen work. There are no options to fiddle with.
The plain-image way (pin one page, anywhere)
Every page badge is also just an image URL, so you can pin a specific page's counter anywhere — including on a different page:
<img src="https://simplytics.dev/badge/yourblog.com.svg?page=/blog/my-first-post" alt="views" height="20">
Want your homepage's view count inside a blog post, or your most popular post's counter in your site footer? Set ?page= to whatever path you like. (Static-site users: in Hugo, Jekyll, or Next.js you can template the path — ?page={{ .RelPermalink }} — and get the per-post effect without any script.)
Why isn't there a magic image that knows its own page? Because it can't: browsers strip the path from cross-origin image requests (that's referrer policy doing its privacy job), so a plain <img> never tells us which page it sits on. The path has to come from the URL you embed or from the small script above. Tools that offer counter images, like GoatCounter, work the same way — the path is in the URL.
The whole-site badge, now editable without touching HTML
The original Simplytics badge shows site-wide numbers — yourblog.com | 1.2k visitors this month. New this week: its metric (visitors/views) and period (month/all-time) are now saved on our side. Pick them once in the badge widget on your analytics page, embed the bare URL, and if you change your mind later the badge you already shipped updates by itself within minutes:
<a href="https://simplytics.dev/analytics/yourblog.com"><img src="https://simplytics.dev/badge/yourblog.com.svg" alt="yourblog.com stats by Simplytics" height="20"></a>
(That's the public-dashboard variant — the link points at your dashboard. On badge-only sites, copy the bare <img> without the link; the badge widget hands you the right snippet either way.)
The fine print (honest edition)
- Your dashboard can stay private. The badge needs one switch on your analytics page: make the dashboard public (the badge then links to it), or use badge-only mode — the number is published, the dashboard stays private, and the badge renders without a link. Sites with neither switch on get a neutral "stats private" badge so embeds never break.
- Counts start when tracking starts. The badge counts views Simplytics has recorded — it can't backfill the years before. A site that hasn't received its first tracked visit yet shows "no views yet".
- Badges are cached at the edge for up to 15 minutes, so counts are near-live, not tick-by-tick.
Everything above is included in the normal $1/month plan — 50,000 pageviews and up to 12 websites, with a 30-day free trial, no card needed. If you're comparing tools first, the comparison pages lay out the trade-offs honestly.