A visitor map counts requests. Some of those requests are people. Some are scripts: search crawlers, uptime checks, scrapers, and preview bots that fetch a link so an app can show a card. If you read every dot as a person, a noisy afternoon becomes a fake market.
You will not get a perfect split. You can get a split that is good enough to stop you acting on junk.
Signs that a burst is not an audience
Look at the visits together, not one at a time.
- The user agent is a library or a crawler. Strings containing
bot,spider,crawler,curl,python-requests,Go-http-client, or a monitoring vendor are not a browser someone opened. A normal visit looks like Chrome, Safari, or Firefox plus an operating system. The header is called a user agent. - There is no referrer and the hits share one URL. A person who bookmarked you does that too. A hundred of them in ten minutes, all on
/or on a single asset, usually do not. - The country is a datacenter story. A sudden pile of visits from a country you do not publish for, with hosting-looking networks rather than phone and home ISPs, is a scan until proven otherwise.
- The pages are ones humans do not read. Requests for
wp-login.php, old plugin paths, or random.envfiles are probes. They belong in a security note, not in "top content."
One odd visit is noise. A pattern across user agent, speed, and URL is a bot.
What still counts as a person
A reader on a phone, a VPN, or a privacy browser can look a little like a bot: no referrer, a country that is "wrong," a short stay. Do not delete a country from your mental map because of that. City geolocation is already approximate. The user agent and the pages are the better test.
Search-engine crawlers are bots you often want. They are how the site gets indexed. Exclude them when you are describing an audience. Do not block them to make the counter look cleaner.
How to use the map once you know
Filter the story, not necessarily the data. When you write "readers in 20 countries," ignore the datacenter spike you already recognized. When you decide to translate a page, use the country table after that spike, over a month, and check that the visits hit the article rather than only the homepage.
MapMyVisitors plots the request and stores the user agent with it. It does not label every hit "human" or "bot" for you. That judgment is the short check above, and it takes less time than celebrating a number that a script produced. A visitor counter has the same limit: it counts loads, including loads no one watched.