
Your site does not count shares
When someone shares a post, the share happens on the network. Your site never sees it. A share counter is therefore a request to each network asking how many times it has seen a given address, followed by some arithmetic. The old explainer on this domain, on how Facebook and other networks calculate share count, was widely linked because this surprises almost everyone the first time.
What Facebook's number includes
Facebook's Graph API reports engagement for a URL as separate figures: shares, reactions, comments, and comments made through its comments plugin. Many counters add some or all of these together and label the total "shares". That is why a post can show more shares in your counter than anyone remembers sharing, and why two plugins can show different numbers for the same page.
How share counts are calculated, step by step
The arithmetic is simple once you see the inputs. In our worked example, the counts are invented but the shape is what the Graph API returns as of the cited reference. One post, published at https://example.com/post/, has been shared under four addresses because the site moved from http to https two years ago and a newsletter added a tracking parameter.
URL variant asked for share_count reaction_count comment_count
https://example.com/post/ 212 96 14
http://example.com/post/ 37 20 3
https://www.example.com/post/ 4 0 0
https://example.com/post/?utm_source=newsletter 11 2 0| Method | What it adds up | Counter shows |
|---|---|---|
| Shares, https only | 212 | 212 |
| Shares, all four variants | 212 + 37 + 4 + 11 | 264 |
| Engagement, https only | 212 + 96 + 14 | 322 |
| Engagement, all four variants | 264 + 118 + 17 | 399 |
| Plus a Pinterest pin count of 9 | any of the above + 9 | 273 to 408 |
Four honest tools can therefore show 212, 264, 322 or 399 for the same post on the same day, and none of them is lying. Which figure you want depends on what you tell readers the number means. A counter labelled "shares" should add the share_count fields only; a counter labelled "engagement" or shown as a bare number can add everything. Pick one, and apply it to every post.
Networks that removed counts
X stopped publishing tweet counts for URLs in November 2015. LinkedIn removed its share count in 2018. Google+ closed to consumers in 2019. Pinterest has long exposed a pin count through the endpoint its own widget uses, but that endpoint is undocumented and can change. Some services estimate counts from their own data, which is a different thing from the network's figure.
Why counts disagree
| Cause | Effect |
|---|---|
| http versus https, www versus apex | The network counts each as a different URL |
| Tracking parameters in shared links | Shares split across many URL variants |
| Changed permalinks | The count starts again at zero on the new address |
| Engagement versus shares | Totals that mix reactions and comments look inflated |
| Cache age | Counts lag real activity by hours or days |
Plugins that were careful asked for several variants of the address and added them, which recovers some of the split. After a site moves to https, counts often drop for exactly this reason. The fix list in share counts not updating walks through the variants in order.
What goes wrong
- Counting on every page view. A plugin that asks the network each time a page loads hits the rate limit on the first busy day, receives errors, and shows zero. Counts belong in a per-post cache with a timestamp; the schedule in fetching the Facebook share count from the Graph API is a sensible default.
- Mixing definitions across networks. Adding a Facebook engagement total to a Pinterest pin count produces a number that means nothing. Add like with like, or show each network separately.
- Losing the old address. After a permalink change, the network still holds the old count on the old URL. Keep a redirect in place and ask for both addresses, or the count restarts at zero.
- Trusting a third-party estimate. Some services report a number for X or LinkedIn long after those networks stopped publishing one. It is an estimate from that service's own sample, and it should be labelled as such or left out.
- Reading a count as a quality signal. A high number says a link travelled; it says nothing about who wrote the page or whether a machine did. The publisher notes on what a share count cannot tell you about who made the post cover that gap.
Should you show a counter at all?
Counts work as social proof when they are high. Low numbers, or a row of zeros from networks that no longer report, do the opposite. A common compromise is to show a total only above a threshold you choose, and hide it otherwise. In our worked example a threshold of 100 would show the 264 on the post above and hide the counter on a new post with 6 shares.
Check it worked
- Pick one post and write down the number your counter shows and the time you read it.
- Request the same URL from the Graph API yourself, with your app token, and note share_count and the other three fields; see how to create a Facebook access token if you have none.
- Repeat for the http and www variants. Your counter's number should equal one of the sums in the table above; if it equals none of them, the plugin is adding something else or reading a stale cache.
- Wait one full refresh cycle and read the counter again. It should change only when the API figures change.
- Confirm that networks which no longer publish counts are hidden rather than shown as zero.
For the wider picture, see the share counts section. Readers who get this far often also need how to create a Facebook app ID or tracking shares and pageviews in analytics.
Sources
- Meta for Developers, Graph API URL node reference (Internet Archive copy, April 2025)
- WordPress developer handbook: the Transients API
Questions
Why does my share count differ from another tool's?
Tools differ in which networks they ask, which URL variants they check, whether they include reactions and comments, and how old their cache is.
Can I still get X share counts?
Not from X. Public URL counts were removed in 2015; any number shown now is an estimate from another source.
Does Facebook's share count include likes?
The engagement data separates shares, reactions and comments, but many counters add them into one total.
How often do share counts update?
As often as your plugin asks the network, which is typically on a schedule from hourly for new posts to weekly for old ones. Page caching adds a further delay because visitors see the stored HTML until it expires or is purged.
Why did my share counts go down?
The most common causes are a move to https or a permalink change, which leaves the old count on the old address, and a plugin update that changed from adding engagement to adding shares only. Rate limit errors shown as zero are the third.
Hannah Voss, Editor. Checks every guide against a working WordPress install and the networks' current documentation. Last reviewed September 2026.
Related reading
- Facebook share count: getting it from the Graph APIHow to get the Facebook share count for a URL from the Graph API, why the old REST API stopped working, rate limits, and how plugins should cache the result.6 min read
- Share count not updating or not accurate: a fix listShare counts stuck at zero or wrong? Work through tokens, caches, cron, URL variants and rate limits in order, and why you should never add fake shares.6 min read
- How to create a Facebook access tokenCreate the right Facebook access token for share counts and plugins: user, page and app tokens compared, how long each lasts, and how to keep the token safe.6 min read