Back to blog

Why Your SaaS Pages Rank on Page 2 (and the Technical Fixes That Move Them)

A page stuck at position 12 usually isn't a content problem. It's a technical one. Here are the crawl, indexing, and structure fixes that move SaaS pages from page 2 to page 1.

When a page ranks on page 2, the instinct is to add more content. Sometimes that's right. But a page stuck at position 12 for months, despite covering the topic well, usually has a technical problem holding it back — something Google can measure but a reader can't see.

Here are the technical fixes that move SaaS pages, roughly in the order you should check them. (If the page's content is the suspect rather than its plumbing, start with our guide to the on-page quick wins instead — this one assumes the writing is fine and something technical is holding it back.)

Start by confirming the page is actually indexed correctly

Before you change anything, open Google Search Console and use the URL Inspection tool on the page. You're checking three things:

  • Indexing status: "URL is on Google" — if it says "Crawled - currently not indexed," no on-page fix will help until that's resolved.
  • The indexed canonical: Google shows you which URL it chose as canonical. If it picked a different URL than the one you're trying to rank, you have a canonicalization conflict.
  • Last crawl date: If Google last crawled the page three months ago, your recent changes haven't been seen yet. Request indexing to force a re-crawl.

Most founders skip this step and spend a week rewriting a page that Google hasn't recrawled since the edit. Confirm the fundamentals first.

Fix 1: Canonicalization conflicts

SaaS sites generate duplicate URLs constantly — trailing slashes, UTM parameters, www vs non-www, HTTP vs HTTPS, and marketing pages that overlap with blog content. When two URLs cover similar content, Google picks one to rank and suppresses the other.

The symptom: your page hovers at position 11–15 and never moves, even with good content. Google is splitting ranking signals across two near-duplicate URLs.

The fix:

  • Every page needs a self-referencing canonical tag pointing to the exact preferred URL (with or without trailing slash — pick one and be consistent site-wide).
  • Redirect www/non-www and HTTP/HTTPS variants to a single version with 301s.
  • Strip or canonicalize parameter URLs so /pricing?utm_source=x doesn't compete with /pricing.

If GSC shows Google chose a different canonical than you intended, that's your first lever. Point the signals at one URL and rankings often consolidate within a few weeks. (When the two competing URLs are both real content pages rather than parameter variants, that's a content decision, not just a tag fix — see consolidate or split.)

Fix 2: Slow Largest Contentful Paint on the pages that matter

Core Web Vitals are a real ranking factor, and SaaS marketing pages are often the worst offenders — hero videos, large above-the-fold images, and heavy client-side JavaScript that delays the main content.

The metric that matters most is Largest Contentful Paint (LCP), the time until the largest visible element loads. Google's threshold for "good" is under 2.5 seconds. Many Next.js and React marketing pages ship an LCP over 4 seconds because the hero renders client-side.

Check the page in PageSpeed Insights, look at the field data (real Chrome users, not just the lab test), and if LCP is over 2.5s:

  • Serve the hero image at the right size with a modern format, and mark it high-priority so it loads first.
  • Move heavy third-party scripts (chat widgets, analytics, A/B tools) to load after the main content.
  • Server-render the above-the-fold content instead of hydrating it client-side.

A page that drops from 4.2s to 1.8s LCP won't jump ten positions on speed alone, but if it's competing at position 11 against pages that all load in under 2s, speed can be the tiebreaker that pushes it onto page 1.

Fix 3: Thin or missing structured data

Structured data (schema markup) doesn't directly boost rankings, but it changes how your result looks in the SERP, and a richer result earns more clicks, which reinforces position over time.

For SaaS content:

  • Article schema on every blog post.
  • FAQ schema on pages that answer specific questions (this can produce expandable Q&A directly in the result).
  • SoftwareApplication or Product schema on your main product and pricing pages, with aggregate rating if you have legitimate reviews.
  • BreadcrumbList schema so your URL shows a clean breadcrumb path instead of a raw slug.

Validate everything with the Rich Results Test before shipping. Broken schema is worse than none — Google will flag it in GSC and may ignore the page's markup entirely.

Fix 4: A rendering problem hiding your content

This one is specific to JavaScript-heavy SaaS sites, and it's the most damaging because it's invisible in a browser. If your key content, the H1, the body copy, the internal links — only appears after client-side JavaScript runs, Google may be indexing a nearly empty page.

Test it: open GSC's URL Inspection, click "View Crawled Page," and read the rendered HTML Google actually stored. If your main content isn't there, or the internal links are missing, Googlebot isn't seeing what your users see.

The fix is architectural: server-render or statically generate the content that needs to rank. For a Next.js app, that means the page's core content should come from the server, not a useEffect that fetches after load. A page that renders its content server-side gives Google clean, immediate HTML — no rendering budget required.

Fix 5: An orphaned page with no internal links

Google discovers and weights pages partly through internal links. A blog post that nothing else on your site links to is an "orphan" — it's harder to crawl, and it inherits none of your site's authority.

Check how many internal links point to the stuck page. If the answer is "one, from the blog index," that's the problem. Add contextual, in-body links to it from three or four related pages, using descriptive anchor text. This both helps Google find and recrawl the page and passes it authority from pages that already rank.

This is the fix founders most often overlook because it's not on the page itself — it's about the page's place in the site structure.

The order to work through them

For a page stuck on page 2:

  1. Confirm it's indexed and Google chose the right canonical (5 minutes in GSC).
  2. Check for canonicalization conflicts across URL variants.
  3. Verify Google can actually render the content (View Crawled Page).
  4. Add internal links if the page is orphaned.
  5. Fix LCP if field data shows it's slow.
  6. Add or repair structured data.

Only after all six should you conclude the problem is the content itself.

How to find these systematically

Auditing one page by hand is manageable. Auditing every page 2 keyword across a growing site is not, and technical issues tend to be systemic. If one product page has a canonicalization conflict, they probably all do.

This is why the fastest technical wins come from catching the pattern once and applying the fix site-wide, then tracking which pages actually move. WriteGap surfaces your page 2 keywords each week and flags the specific pages worth auditing first, the ones with real impressions where a technical fix has the most upside.

The pages already ranking on page 2 are your best technical-SEO investment. Google has told you it thinks they belong on page 1. Your job is to remove whatever's keeping them from getting there.

Put this into practice automatically

WriteGap finds your keyword gaps and writes the article drafts — every Monday.

Start free →