The short version
- Google’s spam policies target pages made in bulk to rank without helping anyone. A comparison that helps a buyer decide is not that.
- Each page needs something that is only true of that pairing: real differences, who each option suits, and where your product is weaker.
- Quote competitor prices and limits only from their own pages, with the date you checked.
- Use a template for layout and facts. Write the verdict, the trade-offs and the “who it suits” section by hand.
- Publish fewer pages than you could, and recheck each one on a schedule.
What Google’s policies say
Two of Google’s spam policies apply directly to comparison pages produced from a list of competitor names.
Scaled content abuse is when many pages are generated for the primary purpose of manipulating search rankings and not helping users, however they are made. Google’s examples include using generative AI or similar tools to generate many pages without adding value for users, and stitching or combining content from different web pages without adding value.
Doorway abuse is when sites or pages are created to rank for specific, similar search queries and lead users to intermediate pages that aren’t as useful as the final destination. The examples include generating pages to funnel visitors into the actual usable or relevant portion of a site, and creating substantially similar pages that are closer to search results than a clearly defined, browseable hierarchy.
Fifty “alternatives to X” pages that share every paragraph and all end in the same signup button fit both descriptions. Google says sites that violate the policies may rank lower or not appear in results at all.
Neither policy bans comparison pages or templates. Both turn on purpose and value. Google’s helpful content guidance offers questions to ask of a page. The ones that bite here: does it provide original information or analysis, does it provide substantial value compared with other pages in the search results, will a reader leave feeling they’ve learned enough to achieve their goal, and are you mainly summarising what others have to say without adding much value?
Google’s guidance on reviews is more concrete, and it covers ranked lists. It asks writers to explain what sets something apart from its competitors, to cover comparable things to consider or which option is best for certain uses, to discuss benefits and drawbacks based on original research, and to focus on the most important decision-making factors.
What makes each page distinct
A simple test: remove the product names from the page. If you can’t tell which competitor it was about, the page has nothing of its own. These are the parts that can’t be swapped between pages.
Real differences
Compare on the points where the two products actually diverge: the data model, integrations, hosting options, export, support. A feature table where every row is a tick for both products tells the reader nothing. Three rows that differ, each with a sentence on why it matters, do more than thirty that match.
Who each option suits
Say plainly when the competitor is the better choice. “Choose them if you need SSO and audit logs today. Choose us if you’re a team of three and want to be set up in an afternoon.” This is the section readers came for, and it is the hardest one to fake, because it requires knowing both products.
Honest limits of your own product
List what you don’t do. A page that finds no weakness in its own product reads as an advert, and readers discount everything else on it. Stating a limit also spares a signup from someone the product won’t suit.
Pricing with dates and sources
Take prices and plan limits only from the competitor’s own pricing page, link to it, and print the date you checked, for example “as of November 2026”. Compare like with like: the same billing period, the same seat count, the plan that includes the feature being compared. If you can’t keep a number current, leave it out and link to their pricing page.
Fairness and accuracy about competitors
You are an interested party, and readers know it. Say so near the top: “We make Acme, so read this with that in mind.” Then keep to rules that make the page hold up when the competitor reads it.
- State facts you can source. Link each claim about a competitor to their docs, pricing page or changelog. Drop anything you can only attribute to a forum thread or your own memory.
- Separate fact from opinion. “Their editor has no offline mode” is a fact to verify. “Their editor feels dated” is an opinion. Label it as yours or cut it.
- Describe the current product. A missing feature they shipped last quarter is now a false statement on your site.
- Use their name in plain descriptive terms. Name the product in text to say what you’re comparing against. Don’t use their logo or brand styling as if it were yours, and don’t word the page so it looks affiliated with or endorsed by them. Avoid titles that could be mistaken for their official page.
None of this is legal advice. Rules on comparative claims and trademarks vary by country. If a page makes strong claims about a named competitor, have someone qualified read it.
Templates and hand-written sections
A shared layout is fine. The problem starts when the template supplies the sentences too.
Safe to template:
- Page structure, headings and the comparison table’s rows.
- Structured facts pulled from one data file: a one-line description, platforms, links to the competitor’s site and pricing page, the date last checked.
- Your own product’s facts, which are the same on every page.
Write by hand, per page:
- The opening paragraph: why someone leaves or compares this specific product.
- The differences that matter and what they mean in use.
- Who should pick which.
- Migration notes, if you support importing from that product.
If you can’t write those four for a competitor, you don’t know the product well enough to publish the page. Start with the three or four competitors your users actually switch from, which you can learn by asking at signup, and stop there until you have more to say. Google’s helpful content questions ask whether you’re using extensive automation to produce content on many topics. A generated paragraph per competitor is what that question describes.
An empty or half-built page shouldn’t be in the index. Give it a noindex until it has real content. As one example, IndieTide’s alternatives pages list products that makers have marked as an alternative to a given tool, and a page stays noindexed until enough products are listed on it. Its editorial notes carry no prices or plan limits, because those go stale.
Internal linking
Google’s doorway examples mention pages that sit outside a clearly defined, browseable hierarchy. Give comparison pages a proper place on the site:
- A hub page, such as
/compareor/alternatives, that lists every comparison and is linked from the footer. - Links from each comparison to related ones, and to the feature pages and docs that back up its claims.
- Links in from relevant places: the pricing page, the import docs, a blog post about switching.
Google advises that every page you care about should have a link from at least one other page on your site, with anchor text that is descriptive and makes sense by itself (source). “Acme vs Basecamp” is better link text than “see comparison”. Give each page its own title, description and self-referencing canonical, and check them with the meta tag checker.
Keeping pages current
A comparison page starts going stale the day it is published, because you don’t control half of its subject. Plan the upkeep before you decide how many to write.
- Keep the facts for each competitor in one data file, with a “last checked” date per entry.
- Set a recurring review, quarterly for instance. Reopen each competitor’s pricing page and changelog and update what changed.
- Show the “last checked” date on the page, next to the pricing.
- Change the date only when you have rechecked the content.
- When a competitor shuts down or is acquired, rewrite the page or redirect it to the hub.
On the fourth point, Google’s helpful content guidance lists changing the date of pages to make them seem fresh when the content has not substantially changed as a warning sign (source). The same applies to the sitemap: Google asks for lastmod to reflect the last significant modification, not a footer tweak (source).
If a comparison page you care about doesn’t get indexed, Crawled – currently not indexed walks through the checks.
More guides
- How to get your site indexed by Google and BingSet up Search Console and Bing Webmaster Tools, submit a sitemap, fix robots.txt, noindex and canonical mistakes, use IndexNow, and check whether your pages are indexed.
- Meta tags that matter on a product landing pageWhich head tags Google supports and which it ignores, how it rewrites titles and snippets, the Open Graph tags to add, and a head block to copy.
- Open Graph images: sizes, caching and debuggingThe og:image tags, the sizes and file limits Meta and LinkedIn document, why an old image keeps showing, how to refresh it, and how to debug a broken card.
- Canonical tag mistakes on Next.js and single-page appsThe canonical tag mistakes common on Next.js sites and single-page apps, what Google says about each, and how to set canonicals with the Next.js metadata API.
- “Crawled – currently not indexed”: causes and fixesWhat “Crawled – currently not indexed” means in Search Console, how it differs from similar statuses, what to check and fix, and when to leave it alone.
- Sitemap and robots.txt for a small SaaSWhat belongs in a sitemap and robots.txt on a small SaaS, what to block and what never to block, with working examples and Next.js code.
- Structured data for a software productWhich schema.org types fit a SaaS landing page, what Google requires for each, a JSON-LD example, how to test it, and the markup that leads to manual actions.