ViewMeter is a visitor counter and analytics plugin for WordPress. It counts page views, post views and visitors on your own server. There is no account to create, and nothing about your visitors is sent anywhere. Most counters show a number and ask you to trust it. ViewMeter shows you how it got th
PricingFree downloadThe WordPress.org download is free. Pro versions, add-ons or external services may cost extra.
CompatibilityRequires WordPress 6.6 and PHP 7.4.
SourceWordPress plugins · Nov 7, 2026
01 / Source details
Aboutthistool.
ViewMeter is a visitor counter and analytics plugin for WordPress. It counts page views, post views and visitors on your own server. There is no account to create, and nothing about your visitors is sent anywhere.
Most counters show a number and ask you to trust it. ViewMeter shows you how it got there:
Bots stay out, and you can see them. Search crawlers, AI scrapers such as GPTBot and ClaudeBot, headless browsers and browser prefetches are not counted. The Quality screen shows how many of each were kept out.
It counts behind your cache. Pages served by a cache plugin or a CDN still count. There is nothing to set up.
It tells you when counting stops. Eight health checks watch the counter. If one fails, it says what is wrong and how to fix it.
You also get sources and campaigns, countries and cities, devices, goals, live visitors, email reports and traffic alerts, and a Views column on your posts list.
Moving from another plugin? ViewMeter can import your history from Post Views Counter, WP Statistics, Koko Analytics, Burst Statistics, Independent Analytics and more, without touching the old plugin’s data.
Show post views on your site
Show a view count on any post or page with the View count block, the [viewmeter] shortcode or a template tag. List your most viewed posts with the Most viewed block or [viewmeter_most_viewed] . In wp-admin, every post list gets a sortable Views column.
The screens
Overview — views, visitors, visits, bounce rate, engaged time, and a chart that marks today as partial.
Content — what was read, sortable, with a rail for one page’s detail, plus links clicked and forms submitted.
Sources — referrers classified as direct, search, social, referral, ad or AI, plus UTM campaigns decomposed into all five parameters.
Places — countries and cities, on a map and in a table.
Devices — device kind, browser, operating system.
Goals — score a goal against one of four signals: a page reached, a link clicked, time on site, or pages read. Give it a value and the screen reports what the conversions were worth, not just how many there were.
Live — who is reading right now, with the page, where they came from, their country, their browser and how long they have been on the page.
Quality — what was refused and why, and the eight health checks.
Settings — everything in groups you can search, plus import and export.
Debugger — replay a visit and see what counting would do with it. Nothing is written, so a replay never moves a number.
Privacy Audit — reads your live settings and tables and says what is stored.
Filters stack across screens, every reading screen exports CSV, and the whole app runs on one wp-admin page.
External services
ViewMeter can use five outside services. Only the crawler list is on by default. Nothing about your visitors is sent to any of them.
WPCreatix crawler list : https://wpcreatix.com/viewmeter/crawlers.json
Downloads new bot and AI crawler names once a week, so they are filtered before the next plugin release. It is a plain download of one file; nothing about your site or visitors is sent (like any WordPress request, the server sees your server’s IP address and WordPress user agent). The file can only add names, never remove them. Turn it off with “Keep the crawler list up to date” in Settings → Advanced. Terms: https://wpcreatix.com/terms-and-conditions/ · Privacy policy: https://wpcreatix.com/privacy-policy/
DB-IP : https://download.db-ip.com/free/ (country or city Lite database)
Off by default. If you turn on “Keep the location database up to date”, ViewMeter downloads DB-IP’s free location database about once a month and looks up visitors on your own server. Nothing about your visitors is sent; DB-IP only sees your server’s IP address and your site address in the user agent. The database is licensed CC BY 4.0, so location screens show an “IP Geolocation by DB-IP” credit. Terms: https://db-ip.com/tos/ · Privacy policy: https://db-ip.com/privacy/ · Licence: https://creativecommons.org/licenses/by/4.0/
Moz : https://lsapi.seomoz.com/v2/url_metrics
Off by default. Used only if you add your own Moz API key to show an authority score for the sites that send you visitors. Sends those site domains and your key, once a day. Turn it off in Settings → Connected services. Terms: https://moz.com/terms-of-use · Privacy policy: https://moz.com/privacy-policy
DeepL : https://api-free.deepl.com/v2/translate or https://api.deepl.com/v2/translate
Off by default. Used only if you add your own DeepL key to get translation suggestions for your goal names and count labels. Sends the label text, the languages and your key, once a day and when you press Suggest. Turn it off in Settings → Connected services. Terms: https://www.deepl.com/pro-license · Privacy policy: https://www.deepl.com/privacy
WPCreatix usage data and newsletter (opt-in) : https://connect.wpcreatix.com
Nothing is sent unless you click one of these buttons. Skip sends nothing.
Allow (usage data): your site address, your WordPress, PHP and plugin versions, the plugins and themes you use, and rounded usage counts, plus your name and email for product news, tips and offers. Usage data is sent once a week and when a WPCreatix plugin is activated, updated or removed; your name and email only once. Never your content, your visitors or their statistics, customers, orders or passwords.
Subscribe (newsletter): the email you enter, with proof of the signup. Every email has an unsubscribe link.
Submit and deactivate (feedback): the reason you pick, your note, and your email only if you tick the box.
On ViewMeter → Data sharing you can see what is sent, turn sharing off, or delete your site’s data at any time. Terms: https://wpcreatix.com/terms-and-conditions/ · Privacy policy: https://wpcreatix.com/privacy-policy/
No other data is sent anywhere. The health check and the fast endpoint only call your own site.
Credits
Country outlines are drawn from Natural Earth 1:50m admin-0 boundaries, which are public domain, redistributed as world-atlas (ISC): https://github.com/topojson/world-atlas
Everything else — icons, flags, drawings, the mark — was drawn for this plugin.
See it in action
Screenshots & previews.
See views, visitors and visits at a glance. Today is marked as partial, so a half-finished day never looks like a drop.Find your most-read pages, and click one to see its own figures without leaving the list.See where visitors come from: search, social, other sites, AI assistants and your tagged campaigns.See which countries and cities your readers are in.See which bots and crawlers were kept out of your numbers, and how many.Eight health checks tell you if counting stops, and how to fix it.Test a visit to see whether it would be counted, and why. Nothing is saved.A Views column with a small trend chart on your posts list.
02 / Source details
Gettingstarted.
01Install and activate. The tables are created on activation.
02Open ViewMeter in the admin menu. Counting starts on the next front-end page view.
03Optional: choose what to count in Settings → Tracking, and who to skip in Settings → Exclusions.
Nothing else is required. If a check on the Quality screen is failing, it names the thing and the fix.
03 / Source details
Frequently asked questions.
Does the view counter work with caching plugins like WP Rocket?
Yes, without configuration. Counting happens in the browser and posts to your site, so a cached page counts correctly. The tracker is explicitly excluded from the combining, minification and script-delay features of the common optimisers, because that is what usually breaks a counter. The health check confirms the endpoint answers.
Why are my numbers lower than Google Analytics?
Usually because ViewMeter refuses traffic other tools count: crawlers, AI scrapers, headless browsers, prefetches and your own signed-in team. The Quality screen shows exactly what was refused and why, so you can check rather than guess.
Will it slow down my site?
Not in any way you will notice. The counting script is small (about 6 KB compressed). A view is written to a file, not to the database, and a job turns the file into rows once a minute. On a very busy site you can turn on the fast endpoint in Settings → Advanced, which records a view without loading WordPress.
Does it set cookies?
Counting you sets none. Repeat visitors are recognised by a salted hash that is re-keyed daily. A first-party cookie mode is available in Settings → Privacy if you need true unique counts across days; it usually needs consent.
Two other cookies are written only when a visitor presses something: viewmeter_consent , which remembers their answer to the consent banner if you switch that on, and viewmeter_optout , which remembers that they asked never to be counted. Each holds one word and no identifier of any kind. The opt-out one is relied on as strictly necessary rather than consented to, because it exists only to carry out the request the visitor made — which is also why it keeps working for someone who refused consent.
Is it GDPR compliant?
ViewMeter is built to store nothing that identifies an anonymous visitor, and the Privacy Audit screen reads your live settings and tables so you can check that for your install rather than take it on trust. A privacy-policy section is supplied for your policy page, written from your live settings rather than from the defaults, and it links your readers to a page where they can withdraw consent or exclude themselves for good. WordPress’s own export and erase requests are answered as well. Compliance depends on your whole site, so this is not legal advice.
Can I import my old view counts from another plugin?
Yes: Post Views Counter, WP Statistics, Burst Statistics, Koko Analytics, Independent Analytics, WordPress Popular Posts, SlimStat Analytics, Page Views Count, a post meta field, and CSV exports from Jetpack Stats and Plausible. The import never writes to the other plugin’s tables, so you can evaluate it and go back.
How do I show post views on my WordPress site?
Two blocks: View count and Most viewed. Shortcodes: [viewmeter] , [viewmeter_most_viewed] and [viewmeter_site_views] , plus [viewmeter_product_views] on WooCommerce sites. A classic widget, and an Elementor widget when Elementor is active. Four template tags: viewmeter_get_views() , viewmeter_the_views() , viewmeter_get_most_viewed() , viewmeter_get_site_views() . Automatic display above or below the content, with a threshold, so a post with three views shows no count at all. Your own markup for a count — [viewmeter template="{views} views since {date}"] — instead of only a label and a position. See “Can I change how the count looks?” below. 'orderby' => 'views' in any WP_Query , and so in the Query Loop block. Totals are also copied to post meta (on by default, Settings → Data), so page builders that can only sort by a custom field can sort by views too.
Where do country and city come from?
From a header your CDN already sets — Cloudflare, CloudFront, App Engine, Fastly and the common GeoIP modules are all read — or from a local database file. No database is bundled in the download, and no lookup service is ever called, so a visitor’s address is never sent anywhere: the file sits on your own server and is read there. You can upload one yourself, run wp viewmeter geo install , or switch on the automatic DB-IP download. With no source available, Places says so rather than showing zeros.
Can it email me reports or alerts?
Yes. Scheduled email reports go to the people you choose, and traffic alerts tell you when something changes.
ViewMeter also tells you when a page passes a round number of views, when the whole site does, and when it sets a new busiest day or busiest month. Each milestone is sent once, ever. The first check writes down the records your site already holds and sends nothing, so switching the feature on does not mail you years of history. Milestones report views only, never visitor counts.
How do I know my visitor counter is still working?
Analytics can fail without any sign, because no traffic and broken counting look the same on a chart. Eight checks run: the buffer folder is writable, the aggregator has drained recently, WP-Cron is alive, every table exists, the collection endpoint answers, counting without JavaScript is working if you turned it on, geolocation is resolving, and whether a persistent object cache is in use. A failing check names the thing, the condition and the fix. wp viewmeter health exits non-zero when one fails, so it can drive a monitor across a fleet.
ViewMeter never changes a setting on its own. If a firewall is challenging the loopback probe, it says the probe could not decide rather than claiming counting is broken.
Does it filter bots and AI crawlers like GPTBot?
Yes. A crawler list compiled into the plugin covers search engines and AI scrapers including GPTBot, ClaudeBot, CCBot, PerplexityBot and Bytespider. Headless browsers and automation drivers — HeadlessChrome, Puppeteer, Playwright, Selenium — are refused too. So are browser prefetch and prerender, so a page nobody looked at is not a view, and feeds, previews, your own team by role, and IP addresses, ranges or wildcards you list.
Sixteen reasons in total. The Quality screen lists every reason that refused something in the dates you picked, with how many hits it refused, its share of all hits, and one line saying what it means.
Which other plugins does it work with?
WooCommerce, counting products the way posts are counted and sorting the products list by views. WPML and Polylang, with translations sharing one count or keeping their own. AMP, through amp-pixel , because AMP forbids the normal beacon.
Caching and optimisation: WP Rocket, LiteSpeed Cache, WP Fastest Cache, WP-Optimize, Autoptimize, Hummingbird, W3 Total Cache, Breeze, Cache Enabler and Perfmatters. Each is opted out through its own documented mechanism, because an optimiser folding the tracker into a combined bundle, or deferring it past the point the visitor has gone, is a common reason a counter reads zero.
Sort-by-views in the query loops of Elementor Pro, Divi, Beaver Builder, GenerateBlocks and Kadence Blocks. Form plugins, which record that a form was submitted and never what was in it.
Does it work with custom post types?
Yes. Choose which types to count in Settings → Tracking. Anything switched off is named on the Quality screen, so a post type cannot read zero without you being told why.
Can an editor see the reports without changing settings?
Yes. Reading the reports and changing the settings are two separate capabilities, mapped per role. An administrator always holds both.
Can I correct a count?
Yes. Set a lifetime figure exactly in Quick Edit, or reset counts in Bulk Edit.
How much database space does it use?
It depends on your traffic. ViewMeter keeps its data in two layers.
The aggregate layer is kept forever: per-page per-day counters, running lifetime totals, a per-day rollup for each dimension, and the tally of what was refused. These are what the reports read, and they grow with your page count, not your traffic.
The raw layer — one row per hit, one per session, one per visitor hash — grows with traffic and is kept for the retention window, 365 days by default. Pruning removes only those rows; lifetime totals and per-day history do not move. What you lose is cross-tabs: “visitors from Germany, by day, for three years” answers forever; “visitors from Germany reading this post” only answers inside the window. Set the window to 0 and nothing is ever pruned.
There are eighteen tables, most of them small lookup tables. If you choose to archive old visit detail instead of deleting it, three more are added to hold it. The Debugger screen shows the size on disk and the row count for every table.
Can I export, print or archive my data?
Export as CSV, TSV, Excel, XML or NDJSON, streamed, so five years costs the same memory as a week.
You can also download a report as a PDF, or open a printable version and save it as a PDF from your browser’s Print dialog. The PDF can only draw Western European letters; for other alphabets it tells you, and you can use the printable version instead.
Instead of deleting raw visit detail at the retention window, you can archive it: the same rows move into sibling tables the reports never read, so the live tables stay small and the detail is still there. Archived rows can be put back, and putting them back changes no reported figure. Worth knowing for a privacy policy: archived rows are kept, not deleted, so visitor hashes archived this way outlive the retention window until you delete the archive.
Can I make stats public or read them from an API?
Both are off when you install ViewMeter, and neither exposes anything until you switch it on.
The public stats page opens one address that shows your traffic to anyone who has the link, with no WordPress login. You choose how much it shows: totals and trend only, plus your most-read pages, or plus where the traffic came from. The page carries no login link, no form and no JavaScript, and search engines are asked not to index it. Only content a visitor could already open appears on it: drafts, private and password-gated posts, and posts of non-public post types are left out, and so are author
FinderPress Media Auditor helps site administrators scan for broken images, missing Media Library files, unreachable media URLs, and other media issues across WordPress content. Use it to audit images, video, audio, PDFs, featured images, and attachment files without sending scan data to an external
The Accepted Payment Methods plugin is a straightforward, lightweight solution that enhances your website by displaying visually appealing icons of the payment methods you accept. This plugin is ideal for a variety of websites, including e-commerce platforms, service-oriented websites, and informati