Visitor counters for READMEs, profiles and sites

One counter. Infinite possibilities.

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.

Count, the counthis robot
Free counters show up to 369. Past that they read 369+ and keep counting.

Make a badge

Pick what you're counting, copy the link, paste it where people read.

What are you counting?

For one total across several, separate them with commas, like andreimerlescu,playandprosper. A combined badge shows its number once you verify you own each one.

Preview Your badge preview
Markdown ![Visitors](https://counthis.app/github?user=andreimerlescu)
HTML <img src="https://counthis.app/github?user=andreimerlescu" alt="Visitors">

The preview does not count as a visit.

What counts as a visit

A number you can trust: real readers, counted once, with nothing kept about them.

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.

GitHub views, at most one every ten seconds

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.

Bots and servers don't count

Crawlers, link previews, command-line tools and requests from cloud providers are left out, so a script can't pad your number.

Pricing

Counters are free to start. When one passes 369, its badge reads 369+ in red until you unlock it. Nothing stops counting.

Free

$0

  • 369 counters
  • Badges show up to 369, then 369+
  • One total for several names, once you verify each one
  • Nothing to pay

Unlocked

$7.77 a year for each 500 counters

  • 500, 1000, 1500 counters and up
  • Badges show the full number
  • The full total across your verified names
  • Pay by card, or with RLUSD on the XRP Ledger

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

Your integer. Your rules. One reliable source.

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