Why Tags Matter More Than Categories for Related Posts

Most related-posts plugins treat “category” as the whole story: pick a category, get posts from that category, done. Ariadne uses categories too, but if you only set categories and skip tags, you’re leaving the single biggest signal in the scoring formula turned off. Here’s the actual math, and why it works out that way.

Two different jobs: getting into the pool, and winning the pool

Ariadne’s matching runs in two stages, and it’s easy to blur them together because both involve categories. The first stage is the candidate gate: before any scoring happens, the plugin decides which posts are even eligible to be compared against the one you’re reading. By default, that gate is category only: a post has to share a category with the current post just to be considered.

The second stage is scoring. Once a pool of candidates exists, four signals compete to rank them: tag overlap, title overlap, body text (a blend of local keyword matching and, on Pro, AI semantic similarity), and category overlap again, this time as a genuine scoring input rather than a gate. On this site, like most fresh installs, those four signals carry default weights of tag 50, body 35, category 25, and title 15. Once normalized against each other, tags end up contributing about 40% of a candidate’s final score, more than any other single signal.

So category decides who’s allowed to compete. Tags mostly decide who wins.

Why tags outscore categories once they’re both in play

Categories aren’t unimportant. They’re just too broad to discriminate much once you’re already comparing posts that share one. Most sites run somewhere between five and twenty categories, each covering a wide swath of content. Say your site has a “Guides” category with 200 posts in it. Sharing that category with another post tells the scoring formula almost nothing about which of those 200 posts is actually the relevant one.

Tags don’t have that problem, because there are usually a lot more of them and they’re applied more specifically. A post tagged “voyage-ai”, “embeddings”, and “api-pricing” is describing itself in a way a single “Guides” category never could. Ariadne’s tag-overlap score is a capped, diminishing-returns calculation: sharing one tag with another post contributes a small amount, sharing three contributes noticeably more, and sharing five or more tops out the signal, since beyond that point more shared tags stop meaningfully distinguishing one candidate from another. Category overlap uses the same capped-overlap idea, but because most posts on most sites only carry one or two categories at all, compared to several tags, there’s usually a much smaller range of real values for it to work with.

SignalDefault weightNormalized share
Tag overlap50≈ 0.40
Body (text + AI on Pro)35≈ 0.28
Category overlap25≈ 0.20
Title overlap15≈ 0.12

Default weights, adjustable per site at Settings → Matching. Normalized share is each weight divided by the sum of all four, which is what actually gets applied to a candidate’s score.

What this looks like on posts that only carry categories

If every post on your site has a category and nothing else, Ariadne still works: the category gate still filters candidates, and category overlap still contributes 20% of the score. Title overlap and body text pick up the rest. But you’re running with one of your four signals switched off, on the exact one carrying the most weight. Two posts about completely different things can still tie on category and beat a post that’s actually closer in subject but sits in a different category bucket.

The fix isn’t complicated: tag posts the way you’d tag them if a person were trying to find related reading, not the way you’d file them into three or four broad sections. A handful of specific tags per post is enough to give the tag-overlap signal something real to work with.

A practical target: three to five tags per post, each one specific enough that it would only reasonably apply to a handful of other articles on your site. A tag like “wordpress” applied to every post is functionally the same as no tag at all, since it never distinguishes one candidate from another. A tag like “voyage-ai-pricing” or “cornerstone-posts” does real work, because sharing it actually means something. If you’re retagging an older archive, you don’t need to do it all at once: Ariadne recomputes a post’s related list automatically the next time you save it, so tagging can happen gradually, post by post, without a separate migration step.

How this compares to plugins that gate on category and stop there

In our comparison of related-posts plugins, YARPP’s own matching runs on weighted tags, categories, and text similarity, not category alone, which puts it closer to Ariadne’s approach than a pure category filter. But plenty of related-posts setups, including the simplest custom queries built directly on WP_Query‘s category__in, treat category as both the gate and the entire ranking logic. Same category, it shows up. Different category, it doesn’t. Nothing inside that pool gets ranked against anything else, so a strong match and a weak one look identical as long as both happen to share a category.

Ariadne’s gate is also configurable, not fixed. Settings → Matching lets you turn the category gate off, turn a tag gate on instead (OR’d with category if both are on), or open the pool to every published post with no gate at all, relying on the cap and background scoring to keep things fast. But regardless of which gate you choose, the scoring stage behind it is where tags do the real work of telling two same-category posts apart.

If you’re setting Ariadne up for the first time, a good rule of thumb: spend more time on tags than categories. Categories organize your site for readers browsing by section. Tags are what Ariadne actually uses to figure out what a specific post is about.

Related Posts

  • Does a Related Posts Plugin Slow Down Your Site?
  • How Much Does AI-Powered Related Posts Actually Cost?
  • Pinning, Excluding, and Cornerstone Posts: Manual Control Over Related Posts
  • What Happens to Your Related Posts Data If You Downgrade from Pro or Pro+?
  • Inline vs. End-of-Post: Where Should Related Posts Actually Go?