-
We printed an HTML entity at our readers
For a while, eight posts on this blog showed readers the seven characters — in the middle of a sentence, inside the diagrams. Not a dash. The literal text. 81 rows, 91 occurrences. In…
-
A bounce rate needs one bit, not a tracker
Until 28 August this site did not show a bounce rate, and the about page said that was deliberate: it would need a session followed across several page views, and that would need a consent…
-
Our own check measured 32 per cent too wide
A check written on 27 August reported 196 diagram labels as too wide for the picture they sit in. Fixing them took a day. 103 of them were never too wide. labels reported as too wide for…
-
Nobody uses the new counter URL
The address we document for a counter is /c/<number>-<design>.png. On 30 August it was asked for 156 times. The address from 2006 — /index.php?action=pic&s4uid=… — was asked for 80,499…
-
Twelve URLs for one article
Every post on this blog lives at twelve addresses. Eleven carry a language prefix — /en/blog/…, /de/blog/… and nine more — and the twelfth has no prefix at all. That one reads the browser's…
-
What deleting a counter actually touches
Deleting a counter here empties 33 tables. Yesterday it emptied 25. The eight it missed were all created the day before, between 11:10 in the morning and 15:10 in the afternoon. 33 tables…
-
We restored the backup for the first time
This server has backed itself up every night since 11 August. The log has 163 lines in it. The word "restore" appears in none of them. That was true until today. what the nightly backup…
-
The check that is always true
There are 23 UPDATE statements in this service. Exactly one of them checks whether it changed anything. That check is: 'success' => $n->rowCount() >= 0 rowCount() returns 0 when no row…
-
Testing with curl tests the wrong thing
A counter request that arrives without a browser identity writes into two of the twelve places a counted visit normally touches. It answers 200. It returns a valid counter image. Nothing…
-
Every request loads all of lib/
Line 46 of this service's single entry file: foreach (glob(__DIR__ . '/lib/*.php') as $f) { require_once $f; } That is 65 files and 1.5 megabytes, loaded on every request. A counter image,…
-
When a cache scales the wrong way
Four small files sit in this service's cache folder. The largest is 35 bytes. Together they hold three counter numbers, and they are read on every single counter request. They exist so the…
-
When adding an index makes things slower
The table of daily figures has one key: the counter and the date together. Five places in the code ask it a different question — not "this counter over time" but "all counters on these…
-
Half our database schema isn't in git
Everything this service does is in version control. The code is, anyway. The database it runs on is 32 tables, and 15 of them have no definition anywhere in the repository — no CREATE…
-
Why we can't count returning visitors
There is no returning-visitor figure anywhere in Stats4U. It is not missing because nobody got round to it. It was built, run once against real data, and taken back out on 27 August 2026,…
-
Why our config file is mostly comments
The .htaccess on this server is 478 lines long. 98 of them are rules. 309 are comments. 309 — comment lines 98 — rules 11 lines carry a date, 12 carry a measurement 478 lines in total Three…
-
How we check every translation
This blog has 64 posts in eleven languages: 704 rows and about 2.2 million characters. No post is missing in any language, which is a claim that only means something if something enforces…
-
Why we don't email our old users
The counter table on this service holds 4,148 e-mail addresses. They belong to counters created over the past twenty years, back when a counter came with an address field and people filled…
-
Counters that follow dark mode
A counter is an image on somebody else's page. When that page has a dark mode, the image does not know: it was drawn on the server, long before the visitor's system preference existed as a…
-
Why the AI doesn't run on our server
No language model runs on the machine that serves this site. The summaries are computed on a second device that fetches jobs, does the work, and brings the sentences back. The reason is…
-
Why the AI usually writes nothing
The summary feature has been offered 2,061 counters. It has written 262 sentences. Every one of the remaining jobs ended with the same result, and it is not an error message even though it…
-
What the AI may and may not write
At the top of a public statistics page here there can be two or three sentences describing what the counter did this month. They are written by a language model. The model invents nothing,…
-
One crawler made most of our bot traffic
Counters here keep robots in a column of their own. They are recorded, but they do not move the number on your badge unless you switch them on. That separation makes it easy to ask a…
-
How we detect a broken counter
A counter can break quietly. The site gets redesigned, the embed does not survive the move, and nothing announces it — the statistics simply stop, and the owner finds out months later, if…
-
Caching counter images in memory
Close to a fifth of the counter images this service draws no longer change anything. A mouse-tracking script from the previous generation reloads the image on every movement, and since…
-
We built a toplist and never linked it
This site has a toplist: the busiest public counters, plus per-country and per-language sub-lists. It is built, it is translated into eleven languages, it has an opt-out, and it has been…
-
Not every table keeps thirty days
A statistics page here is not one table. It is twelve, one per question — countries, pages, browsers, hours, devices, operating systems, languages, regions, referrers, bots, screen…
-
A fifth of the page list isn't pages
The page list on a statistics page tells you which of your pages the visits landed on. On 26 August 2026 that table held 101,485 rows, and 20,055 of them — 19.8 % — have the page recorded…
-
A 2015 script still reloads counters
The previous generation of this service shipped a mouse-tracking script. It loaded the counter image once, normally, and then loaded it again on every mouse movement — with coordinates in…
-
461 designs, 39 of them in use
This service offers 461 counter designs. On 25 August 2026 it drew 24,285 counter images, 22,985 of which named a design. Thirty-nine distinct designs appeared in that day's traffic.…
-
Counter numbers were handed out twice
Every counter here has a number. It appears in the embed code, in the statistics address, and on however many pages the owner put it. Numbers are handed out by picking a random one between…
-
Putting a counter in a chomikuj profile
chomikuj.pl is a Polish file-sharing community. Every account has a description field, and a great many people put a visit counter in it. When we finally counted where the counters of this…
-
Which platforms our counters live on
The last step of adding a counter here has a section called "Where does it go?" — a short paragraph for each platform, explaining where the code belongs. WordPress, WordPress.com, Blogger,…
-
Two ways to miscount your access log
A week of changes here rested on counts taken from one day of the access log: a million lines, a hundred thousand of them ours. To find out whether any of it worked, the same counts have to…
-
What stats2.gif actually is
There is a file in this project's image folder called stats2.gif. It is 366 bytes, dated March 2018, and it appears in exactly zero lines of source code. On 23 August 2026 it was served…
-
Six features nobody could reach
On 23 August 2026 this site answered 101,461 requests. In all of them, the owner token — the ?t= that unlocks the settings box on a statistics page — appeared exactly zero times. Not…
-
How we count clicks privately
A counter answers "how many came". The more useful question is usually "how many did something" — clicked the contact link, opened the download, went out to a social profile. This site has…
-
A counter that needs no cookie banner
Most analytics need a consent banner because most analytics store something on the visitor's device: a cookie, an entry in local storage, an identifier that survives until tomorrow. That…
-
Three columns nothing writes to
The main counter table here has 166,436 rows and a number of columns that look like they matter. Three of them are lastdomain, firstdomain and userdomain. They hold data: lastdomainnot…
-
We stopped collecting screen sizes
This service used to record screen resolution. The browser script read window.screen and sent it along as res=1920x1080, and the statistics page had a panel for it. It does not any more.…
-
What a password costs on a Raspberry Pi
Statistics pages here can be protected with a password. Hashing that password is the one operation in this service that is supposed to be slow — that is what makes a stolen hash expensive…
-
How the toplist works, and opting out
stats4u.net has ranked its busiest counters since the beginning — a 2012 post already talks about improving it. The current version lives at /top, and it works differently underneath than…
-
A backup in the web root is a source leak
Before editing a large file, the natural move is to copy it first. cp index.php index.php.vor-aenderung, then work. If that file sits in the directory the web server publishes, you have…
-
New privacy policy, terms and DPA
As of 19 August 2026, stats4u.net has three legal documents where it used to have one: a rewritten privacy policy, a terms of service, and — new — a data processing agreement (DPA) under…
-
A language code that looked like Perl
On 19 August 2026 we added a rule to .htaccess blocking a class of file that should never be served directly to a browser: leftover source-code copies sitting in the web root after an edit…
-
Compressing the same file every time
Apache compresses responses on the fly. For a page that is different every time, that is the only option. For a stylesheet that changes once a month, it means the server does the same work…
-
Why the exclusion list is not hashed
If you build a site, you open it twenty times a day. On a counter with forty visitors a month, half the statistics are you. So there is a setting: do not count visits from my own address.…
-
A long URL took the counter down
On 9 August 2026, twenty counter images failed to render. Not drew wrong, not drew slowly — the visitor got nothing at all where a counter should have been. The cause was a page address…
-
Four things on our about page weren't true
The old about page had a feature list on it. Rebuilding that page meant reading the list properly for the first time in a while, and four things on it were no longer true. One of them had…
-
Where the about page numbers come from
There are six numbers across the top of the about page now: people online right now, visitors yesterday, counters in use, countries in the last thirty days, designs to choose from, and the…
-
The header and footer now run full width
A small change you will see on every page here: the dark band at the top and the footer at the bottom now run the full width of the window. Until today they sat inside the same 1180-pixel…
-
The number on the badge is not visitors
A recurring question here is why the number printed on the counter image does not match the number in the statistics. Both are correct. They are answers to different questions, and the…
-
How to read your referrer list
The referrer list is the part of your statistics that looks the most like insight and misleads the most reliably. It is a list of the places people came from. Reading it correctly takes…
-
Export your data as CSV or JSON
There is a link on your statistics page marked CSV, and next to it one marked JSON. They hand you your numbers as a file. No account, no request form, no waiting for an email with a…
-
Animated counters without JavaScript
A fair number of the counter designs here move. The number counts itself up, or the panel draws itself in, or something falls into place and settles. None of them use a single line of…
-
An invisible counter for your page
Not everybody wants a counter on their page. Plenty of people want the numbers and would rather not have a badge in the corner announcing them — a portfolio, a company site, a page where a…
-
Adding a Stats4U counter with Google Tag Manager
There is a guide to this on the blog from 2015. Its screenshots show a Tag Manager that no longer looks like that, and one of its seven steps — ticking document.write — is no longer needed…
-
Your counter on an HTTPS page
Your site is on HTTPS. Your visitors see a padlock. Then you paste in something from another site, and the padlock goes away — or the thing you pasted simply does not appear. That is mixed…
-
A counter for static sites
Static hosting has quietly become the sensible way to put a small site on the internet. GitHub Pages, Codeberg Pages, Neocities, or a folder of files on any cheap host: no database, no…
-
What to do with the country map
The map is the page people look at first and use least. It is pleasant to see that somebody in Chile read your post, and then the tab gets closed and nothing follows from it. This article…
-
We finally built the who-is-online list
On 25 August 2012, a post on this blog announced that the statistics fields had started refreshing by themselves, and finished with a sentence: "The planned feature, the 'Who is online'…
-
Counter number one has been running since 2006
The first counter ever created on this site was created on 18 November 2006, at three minutes past eleven at night. It has the ID 1. It counted visitors today. It stands at 703,428, and it…
-
Why we kept the 2006 counter designs
The rebuild came with an obvious temptation: throw out the counter graphics from 2006 and start clean. They are bitmaps. They are dated. Nobody would design them that way now. They stayed.…
-
Your counter has been counting robots
Your counter has been counting robots. So has everybody's. Until this month nobody here could tell you how many, because nothing was measuring it — and a crawler that requests a counter…
-
A counter or an analytics suite?
The honest answer to the question in the title is: it depends what you are asking your statistics to tell you. A visitor counter and a full analytics suite are not two grades of the same…
-
Counting without a cookie
A visitor counter has one awkward job: it has to tell two visits apart. If it cannot, then one person reloading a page ten times looks like ten people, and the number on your site is…
-
What happened between 2015 and 2026
Before this week, the most recent post on this blog was dated September 2015. That is an eleven-year hole in the middle of it, and it seemed better to explain the hole than to quietly…
-
Stats4U 3 is here
The site you are reading this on was rebuilt this month — not restyled, rebuilt, starting at the counting path. There is a separate post about the eleven quiet years that led up to it. This…
-
User's Tab shows now active / inactive and offline users
Stats4U is getting better and better. You can now see live, who is actualy viewing your page or who has only opened your page in a background-tab in the browser. That means you will see the…
-
First Windows 10 Users coming in!
We are excited to announce that you can now see the new Windows 10 Users in real time in our stats. Microsoft launched Windows 10 on the 29th July 2015 and we are ready to collect users…
-
7 Steps to Implement Stats4U into the Google Tag Manager
Update, August 2026: the Tag Manager interface in the screenshots below no longer exists, and step 5 — picking document.write — is no longer needed. There is a current version of this…
-
Flag Counter Wizard
Under /flag-counter you can find our new Flag Counter wizard system. You can now choose between cubic, horizontal or vertical flag counters and choose three sizes. Customize your new Flag…
-
New Flag Counters and site speed stats
Stats4U.net is expanding its features with brand new stylish flag counters for your websites! You can place them on all your websites to show from where your visitors come from. Beside…
-
New iOS and Android Version charts and ToS change
Your personal statistics for your website can show you which iOS and Android versions are in use! Get more information about your mobile visitors with Stats4U!We have also modified our…
-
New OSs, Browsers and stats
We now support Windows 8 and Internet Explorer 10 in our statistics, ready for you to check out how many users use the newest technologies. Beside this, we have a new category in the…
-
Firefox Versions
Since there are many Firefox Versions coming we have a new Chart in the "LIVE Statistics" > "Browsers" section. You can check how many people use each Firefox version on your website for…
-
New live stats!
The fields "Today, Yesterday, Average: New visitors, Tod. Bounce, Forecast, Total, Bounce rate, Visit time, Sites/Visits and Toplist Rank" are now live reloading! See in real time what is…
-
Stats4U World Maps and improvements
Stats4U officialy launches new Onmouseover World Maps for your statistic pages! Check out where your visitors come from on country and region level! We offer now regional maps of the USA,…
-
Wizard possibilities
Check out the new wizard functions. You can set your own border and text for each element. If you have any suggestions just write a comment below! The wizard catalogue offers hundrets of…
-
Toplist improvements
This site features its users so the Stats4U toplist is more usefull now. You can see our daily top 20 customers and their most viewed web page. Every user that puts a Stats4U Counter on a…
-
New counter globes
You can now choose between three different globe styles and set them up for your needs. Just go to the main page > animated and check them out. You can find the first globe on your…
-
New account management system
Stats4U has now a new system to handle more and more customers. Create accounts for your websites comfortably on our mainpage. You can even copy the HTML Code for a counter without signing…