WordPress · free forever · no signup

Add a free hit counter to WordPress

One snippet, pasted into a footer widget area — because an all-time total is a footer artefact — nobody scrolls up to check it. WordPress runs roughly 43% of all websites, and almost none of those sites want another plugin just to render a small piece of live data. No plugin. WordPress accepts raw HTML in a Custom HTML block, which is all this needs.

The free hit counter is back — yes, it's still free. The classic Geocities visitor counter from 1996, rebuilt with a tamper-proof MutationObserver, server-side bot filter, and 6 themes from LED-pixel nostalgia to minimal-modern flat. Drop the snippet on any HTML page and the count is live in 30 seconds.

How to install it on WordPress

  1. 1Go to Appearance → Widgets.
  2. 2Open a Footer widget area and click the + to add a Custom HTML block.
  3. 3Paste the snippet into the block and hit Update.
  4. 4Reload your site with the cache purged — it renders where you dropped it.
Block theme or a different editor? On a block theme, go to Appearance → Editor → Patterns → Footer instead, then insert a Custom HTML block there.

Three things that trip people up on WordPress

Purge your cache after pasting

WP Rocket, W3 Total Cache, LiteSpeed Cache and your host's edge cache all serve a stored copy of your HTML. Until you purge, you'll be looking at the version from before you pasted and assuming the widget is broken. The widget's own data is fetched client-side on every load, so page caching never makes the numbers go stale — it only hides a freshly-added snippet.

Exclude it from JS minify / combine

Optimisation plugins that concatenate or defer every script can break an async third-party tag by moving it out of order. If the widget renders nothing after a purge, add the script URL to your plugin's JS exclusion list — in WP Rocket that's File Optimization → Excluded JavaScript Files. Nothing else needs changing.

Use a Custom HTML block, never a paragraph

WordPress sanitises script tags typed into a paragraph or the Visual editor tab, silently. The Custom HTML block, the Classic editor's Text tab, and Elementor's HTML widget all pass markup through untouched. If your snippet vanished on save, that's why.

What you get, and what it costs

  • Free forever — there is no paid tier, no trial and no card
  • No signup for the badge-style widgets; the live ones create a site ID inline from your URL
  • Async script — it never blocks your page from rendering
  • Works on any theme, classic or block, and inside every major page builder
  • Bots filtered server-side on every visitor-counting widget

WordPress questions

Do I need a plugin to add a hit counter to WordPress?

No plugin. WordPress accepts raw HTML in a Custom HTML block, which is all this needs. Installing a plugin for this would mean an extra dependency, an update cycle and a security surface to render one snippet. Paste it into a footer widget area and you're done.

Where exactly does the snippet go on WordPress?

A footer widget area — because an all-time total is a footer artefact — nobody scrolls up to check it. Go to Appearance → Widgets. Open a Footer widget area and click the + to add a Custom HTML block. Paste the snippet into the block and hit Update. Reload your site with the cache purged — it renders where you dropped it.

Will it slow my WordPress site down?

No. The script tag is async, so it never blocks your page from rendering, and the widget draws itself after your content is already on screen. Your caching and optimisation plugins keep working exactly as before — the only thing to remember is to purge the cache after you paste, otherwise you'll be looking at the stored copy of your old HTML.

Does it work with page builders like Elementor?

Elementor: drag in the HTML widget and paste there. Divi: use a Code module. Beaver Builder: use the HTML module. WPBakery: use the Raw HTML element. Any builder with a raw-HTML or code block will render it, because there's nothing framework-specific in the snippet.