Cookieless web analytics for static sites
Add Noralytic to plain HTML, Hugo, Jekyll, Eleventy or any static site generator with one line in your head template.
Why use Noralytic with static sites and HTML
Static sites are about speed and simplicity, and Noralytic keeps both. There is no server code, no cookies and no consent tooling to add.
It works for documentation, portfolios and blogs hosted anywhere, including GitHub Pages, Netlify and Cloudflare Pages.
- No cookies, no local storage and no stored IP addresses, so analytics alone does not need a consent banner.
- A tracking script under 1 KB that will not slow down your pages.
- Real-time stats, top pages, sources, countries, devices, campaigns and events in one simple dashboard.
- Single-page navigation is tracked automatically, because the script follows the browser history.
What you need
- A free Noralytic account with your website added under its exact domain.
- Access to the template or HTML file that contains the
<head>of your pages.
How to add Noralytic to static sites and HTML
The tracking code is one line. The steps below show where it goes.
<script data-host="https://noralytic.com" src="https://noralytic.com/js/script.js" id="ZwSg9rf6GA" async defer></script>
- Plain HTML
Paste the snippet inside the<head>of every page, or into your shared header include. - Hugo
Add it tolayouts/partials/head.html, or tobaseof.html. - Jekyll and Eleventy
Add it to_includes/head.html(Jekyll) or your base layout (Eleventy). - Rebuild and deploy
Rebuild your site, deploy it and check the real-time view.
Check that tracking works
- Open your website
Use a private browser window so extensions and your login do not interfere. - Open the Noralytic real-time view
In your Noralytic dashboard, open your website and go to Realtime. - Look for your visit
Your page view should appear within a few seconds. Click through a few pages to see each one counted.
Track custom events on static sites and HTML
Use a small script near the end of the page to track clicks on key elements.
<script>
document.querySelector('#download')?.addEventListener('click', function () {
window.pa && pa.track({ name: 'download' });
});
</script>
Events appear in your Events report. A value and a unit are optional, for example pa.track({ name: 'purchase', value: 49.9, unit: 'EUR' }).
Exclude your own visits and bots
To keep your numbers clean, open your website settings in Noralytic and add your own IP address under excluded IP addresses. Make sure bot filtering is enabled so known crawlers are ignored.
Troubleshooting
- Every page needs the snippet: put it in a shared template so no page is missed.
- Hosting cache: after deploying, hard refresh or purge your CDN cache before testing.
- No data after a few minutes? Confirm that the domain in Noralytic matches your website exactly, and that the script appears in the page source.
- Ad blockers: some blockers hide analytics scripts. Test in a private window without extensions.
- Content Security Policy: if you use one, allow
noralytic.comas a script and connection source.
Frequently asked questions
Do I need a plugin or app to use Noralytic with static sites and HTML?
No plugin or build step is needed. Paste the line into your head template.
Does Noralytic need a cookie banner on static sites and HTML?
Noralytic itself does not use cookies, so analytics alone does not require a consent banner. Other tools on your site, such as advertising or social widgets, may still need one.
Does Noralytic work on GitHub Pages and Netlify?
Yes. It only needs a script tag, so it works on any static host.
Do I need a build step to use Noralytic?
No. The script loads from our server at runtime and needs no bundler or package.
Is Noralytic free to use with static sites and HTML?
Yes. Noralytic has a free plan with 10,000 pageviews per month for one website, and paid plans start at €8.99 per month.
Keep reading
Try privacy-friendly analytics for free
Create a free account in seconds, add one line of code and see your first visitors live. No cookies, no credit card.