WordPress visitor counter: add one free, no plugin
Three ways to add a live visitor counter to WordPress without a plugin: block editor, theme widget area or footer code, plus fixes for common issues.
You can add a WordPress visitor counter without installing a plugin, using the block editor, a widget area or your theme's footer.
Why add a WordPress visitor counter at all?
The single most effective conversion trigger on any content site — bigger than testimonials, bigger than urgency timers — is social proof shown in real time. When a reader sees "47 people are reading this right now," their brain skips the "is this worth my time?" question and jumps straight to "what am I missing?"
Bloggers, course creators, and indie SaaS founders have used this trick since the StatCounter era. The difference in 2026: most of the old tools are dead or paywalled. FeedPulse is the modern, free replacement, and installation on WordPress takes literally 60 seconds.
This guide walks through three methods. Pick the one that matches your WordPress setup.
Method 1 — The Custom HTML block (recommended, works on every theme)
This is the path most WordPress sites should take. No plugin, no theme edit, no FTP.
- Open the FeedPulse generator and paste your domain (e.g.
yourblog.com). - Pick the Live Traffic Feed widget. Customize colors to match your brand — most users go with our Klein-blue default.
- Click Copy snippet.
- In WordPress, edit any page or sidebar widget area. Click + Add Block → Custom HTML.
- Paste the snippet. Hit Update.
That's it. Reload your page and you'll see country flags streaming in within seconds — provided you have any traffic at all. (Tip: open the page in an incognito window to see your first visit appear.)
Method 2 — Theme footer.php edit (for global placement)
If you want the widget to appear on every page of your site, the cleanest path is to inject it once into your theme's footer.
// In your child theme's footer.php, just before </body>:
<script src="https://feed-pulse.com/api/embed/traffic-feed.js?site_id=<YOUR_SITE_ID>" async></script>Replace <YOUR_SITE_ID> with the site ID from the FeedPulse generator. Always edit a child theme — never the parent theme directly, or your changes will vanish at the next update.
Method 3 — Plugin route (Insert Headers and Footers)
If you don't want to touch theme files but still want global placement, install the free Insert Headers and Footers plugin (or its modern cousin WPCode). Paste the FeedPulse snippet into the "Scripts in Footer" field. Done.
Troubleshooting: "I see the widget but it says 'Waiting for visitors…'"
Three things to check:
- You're the only visitor. Open an incognito window on your phone. That's your first visit.
- A caching plugin is serving stale HTML. Purge the cache (WP Rocket, W3 Total Cache, LiteSpeed all have a "Clear all" button). Cloudflare? Also purge that.
- Your Content Security Policy blocks third-party scripts. Add
feed-pulse.comto your CSPscript-srcandimg-srcdirectives.
The one CSS tweak nobody mentions
By default the widget renders at 320px wide. On most WordPress sidebars that's a perfect fit, but on Elementor full-width content blocks it looks tiny. Wrap the snippet in a div with max-width:100% and the widget scales to fit:
<div style="max-width:100%;display:flex;justify-content:center;">
<script src="https://feed-pulse.com/api/embed/traffic-feed.js?site_id=<YOUR_SITE_ID>&w=480" async></script>
</div>Notice the &w=480 parameter — that overrides the default width without re-opening the generator.
What do you get on the free tier?
Every WordPress install above gets the full feature set with no upgrade required:
- Unlimited visits, forever.
- Real-time country flag, browser icon, OS icon and device icon for every visitor.
- Anonymous tracking (no cookies, no PII, no GDPR banner needed).
- Auto-bot detection so traffic exchanges don't pollute your stats.
- A public stats page (
/site/yourblog.com) you can share or link from socials.
There is no paid tier and nothing to upgrade to. The small "via FeedPulse" badge on the widget is how the project stays free, so it is not removable — everything above is included permanently, with no subscription and no renewal email.
Final tip — where to place it for maximum effect
For blogs: sidebar, above the fold. For SaaS landing pages: in the hero, just below the CTA, as a trust signal. For e-commerce: near the checkout button (the "47 people viewed this in the last hour" psychology).
Try it. Watch your bounce rate drop within the first week. Generate your free widget →
Which widgets suit your kind of WordPress site
Not every widget belongs on every site. There is a short page for each common type of WordPress site — the three widgets worth adding, exactly where they belong on that kind of page, and what to leave off: