Once per visitor every six hours
Refreshing the page thirty times still counts once. A visitor is a network address and browser, kept as a scrambled number in memory and forgotten after six hours.
Visitor counters for READMEs, profiles and sites
Paste one image link into a README, a profile or any web page. Each visitor counts once every six hours, and the badge shows the total. Every number has a source of truth.
Pick what you're counting, copy the link, paste it where people read.
A number you can trust: real readers, counted once, with nothing kept about them.
Refreshing the page thirty times still counts once. A visitor is a network address and browser, kept as a scrambled number in memory and forgotten after six hours.
GitHub loads README images through its own image proxy, so every reader looks the same to us. We count proxy fetches per badge, no faster than one every ten seconds.
Crawlers, link previews, command-line tools and requests from cloud providers are left out, so a script can't pad your number.
Counters are free to start. When one passes 369, its badge reads 369+ in red until you unlock it. Nothing stops counting.
$0
$7.77 a year for each 500 counters
If a year lapses, your badges keep their numbers for 90 days and turn gradually red over the last 25. Checkout opens in an upcoming release. Badges work without an account.
For developers
Put /json in front of any badge path to get the number instead of the image. Reading a count never adds to it.
The count is a string, so values beyond what JavaScript numbers hold stay exact. Websites are counted with /a?href=your.site and dev.to profiles with /dev.to?user=you.
With an account, API tokens let your scripts create private counters and change them, for anything you want to count: deploys, downloads, sign-ups. Private counters have badges too, at /c/…, and groups add several counters into one badge at /g/….
# Read any badge's count. Reading never adds to it.
curl https://counthis.app/json/github?users=andreimerlescu,playandprosper
{"capped":false,"count":"1204","state":"ok"}
# Add one to a private counter. A retry with the same
# Idempotency-Key within 24 hours is not counted twice.
curl -H "Authorization: Bearer $COUNTHIS_TOKEN" \
-H "Idempotency-Key: deploy-4812" \
-d '{"by": "1"}' \
https://counthis.app/api/v1/counters/deploys/add