Otter.ai SEO Teardown: 2,157 Pages, 12,631 Broken Links, and a Blog Migration Gone Wrong

15 min read
Otter.ai SEO crawl analysis showing broken links, dead pages, and blog migration issues across 10 subdomains

Crawl data as of March 12, 2026. Analysis powered by redCacti.


Otter.ai has become the default reference point in the AI meeting notes category. It invented the space, has a recognizable brand, and an established content presence. When you crawl the full infrastructure - across all ten subdomains - you find a product with serious reach and a technical debt problem that has been accumulating for years.

The headline number is 12,631 broken links. That sounds like site-wide chaos. It isn’t. Trace every broken link back to its source and three discrete root causes account for essentially the entire count. Fix the three root causes, and the broken link problem is largely resolved. The harder issue is the blog, where a migration left 81% of pages without meta descriptions and 426 out of 527 crawled URLs returning 404.


What We Crawled

Otter.ai runs across ten distinct domains:

Crawl summary:

  • otter.ai - 772 pages (main marketing and blog content)
  • blog.otter.ai - 527 pages (Ghost-hosted blog, migration in progress)
  • www.otter.ai - 522 pages (www mirror of main site)
  • get.otter.ai - 275 pages (App Store and install redirect pages)
  • help.otter.ai - 27 pages (Zendesk help center)
  • go.otter.ai - 18 pages (campaign and tracking redirects)
  • public.otter.ai - 8 pages (shared conversation pages)
  • home.otter.ai - 4 pages
  • assets.otter.ai - 3 pages (desktop app downloads)
  • feature-01.staging.otter.ai - 1 page (staging environment, publicly crawlable)
  • Total: 2,157 pages crawled

The 664 pages returning 404 are concentrated almost entirely in two subdomains: 426 on blog.otter.ai and 237 on get.otter.ai. The main otter.ai domain has only 1 dead page.


Section 1: The Blog Migration - 426 Dead Pages and a Broken Navigation

The single largest technical SEO problem in this crawl is blog.otter.ai.

Of the 527 blog pages crawled, 426 return 404. That’s 81% of the subdomain. What’s left is 101 live pages, many of which are legacy posts that survived the transition.

The dead URLs follow a clear pattern:

  • Author profile pages: blog.otter.ai/author/chang, blog.otter.ai/author/darius-contractor, blog.otter.ai/author/joel, blog.otter.ai/author/josh-gould, and dozens more
  • Tag archive pages: blog.otter.ai/tag/productivity-hacks, blog.otter.ai/tag/press-releases, blog.otter.ai/tag/product-update, blog.otter.ai/tag/ai
  • Section index pages: blog.otter.ai/blog, blog.otter.ai/press, blog.otter.ai/careers
  • Agent-specific pages: blog.otter.ai/sales-agent, blog.otter.ai/education-agent, blog.otter.ai/media-agent, blog.otter.ai/recruiting-agent, blog.otter.ai/sdr-agent
  • Individual blog posts that no longer exist

The blog navigation template was not updated when the migration happened. That’s the compounding problem. Every live blog page using the old navigation template now contains 30+ broken links to the dead section pages. The crawl found 867 broken links pointing to blog.otter.ai/tag/productivity-hacks alone - one per every surviving page that uses the template.

The section pages (/blog, /press, /careers, /sales-agent) each rack up approximately 202 broken links from the same source.

The impact on metadata is severe. Of the 101 live blog pages, 81 are missing meta descriptions entirely. That’s 80% of surviving blog content going to search without a meta description. Schema markup exists on only 97 of 527 total blog URLs (18%) - and most of those are on dead pages.

What the live blog content actually looks like: The 101 surviving pages include genuinely useful long-form posts. Averages around 1,932 words per live page. Titles like “The Best Work From Home Apps of 2022” (3,658 words), “The 17 Best Productivity Apps” (2,968 words), “The Ultimate Guide to Recording Interviews” (2,812 words), “How to Record a Webinar” (2,711 words). This is substantial content that deserves to be discoverable. In its current state, it’s on a subdomain where 81% of URLs are dead and the navigation is pointing nowhere.

How to fix it:

  1. Identify which blog URLs have existing backlinks or organic traffic before deciding whether to redirect or remove them
  2. Update the blog navigation template to reflect the current site structure - eliminates hundreds of recurring broken links
  3. Add meta descriptions to all live blog posts - this is the most underutilized piece of the content Otter already has
  4. Redirect deleted author and tag pages to the blog index rather than serving 404

The second major broken link source is more subtle. The crawl found 2,517 broken links pointing to help.otter.ai - but not because the help center is down. The base URL help.otter.ai/hc/en-us is a valid Zendesk help center page. The problem is how those links were constructed.

Here’s what the broken URLs look like:

https://help.otter.ai/hc/en-us?_gl=1%2A1djb34%2A_ga%2ANzk4MjYxNDczLjE2OTc3NDYzNDY.%2A_ga_F0G9HT49XE%2AMTc0MjgxNTU4Mi40NS4xLjE3NDI4MjQzMzguNTguMC45NzA2ODY5MTI.%2A_ga_718GRVQGD7%2AMTc0MjgxNTU4Mi40NS4xLjE3NDI4MjQzMzguNjAuMC45NTU5ODQ3Mjc.

These links have Google Analytics cross-domain tracking parameters (_gl, _ga, _ga_*) baked directly into the href. GA cross-domain parameters contain session tokens that are time-limited. When these links were added to the site, they worked. Over time, the encoded session data expired and the links began returning 4xx errors.

The clean version of the URL - https://help.otter.ai/hc/en-us - works fine. The 2,517 broken versions are the same destination with garbage session parameters appended.

This pattern appears across two distinct tracked versions (1,268 and 1,249 occurrences respectively), suggesting two separate deployment events where help links were added with live session state embedded.

How to fix it: Audit all internal links that point to help.otter.ai. Strip any _gl, _ga, or _ga_* parameters from help center URLs in templates and CMS content. GA cross-domain tracking should use JavaScript-level link decoration, not hardcoded href parameters. A find-and-replace across templates catches most of this in a single pass.


The third root cause is the get.otter.ai subdomain, which hosts localized Apple App Store redirect pages.

The crawl found 275 pages on get.otter.ai, each following the pattern:

https://get.otter.ai/clkn/https/apps.apple.com/us/app/otter-voice-notes/id1276437113?l=en-US
https://get.otter.ai/clkn/https/apps.apple.com/us/app/otter-voice-notes/id1276437113?l=fr-FR
https://get.otter.ai/clkn/https/apps.apple.com/us/app/otter-voice-notes/id1276437113?l=ko

These are branch.io or similar deep link pages - one per locale. Each page contains the same navigation template. That template links to blog.otter.ai section pages that no longer exist (/blog, /press, /careers, etc.). The result: each of the 275 App Store redirect pages carries 187 broken links pointing to dead blog sections.

These pages are unlikely to receive organic traffic - they exist for App Store redirect flows, not search. But they’re publicly crawlable, and the broken links they contain add noise to any crawl. More importantly, they reveal the same template problem causing the blog navigation issue: a sitewide or wide-template navigation update that didn’t account for all the surfaces using the old blog structure.

How to fix it: Exclude the get.otter.ai subdomain from public crawlability via robots.txt if these pages serve no organic search purpose. Alternatively, update the shared navigation template these pages use to reflect the current blog structure. Either approach eliminates the 51,000+ link-noise instances these pages generate.


Section 4: Metadata Coverage Across Subdomains

The main otter.ai domain is well-maintained by comparison to the blog. Here’s how metadata coverage breaks down:

SubdomainPagesSchemaOG TagsMissing Meta Desc
otter.ai772595 (77%)761 (99%)18 (2%)
www.otter.ai522432 (83%)521 (100%)5 (1%)
blog.otter.ai52797 (18%)101 (19%)426 (81%)
get.otter.ai27522 (8%)32 (12%)239 (87%)
help.otter.ai270 (0%)0 (0%)27 (100%)

The main domain is in solid shape: 77% schema coverage, 99% OG coverage, only 2% missing meta descriptions. That’s consistent metadata management across a 772-page domain - most SaaS sites at this size have larger gaps.

The blog and get.otter.ai subdomains are the outliers. These aren’t content quality problems - the blog has substantive long-form articles and the get.otter.ai pages aren’t meant to rank. But the blog metadata gap specifically is a missed opportunity. If those posts are going to be live, they should have meta descriptions.

The help center is a different case. Zendesk often manages its own metadata independently, and 27 pages without OG or schema is unlikely to move the needle. The help center content isn’t what drives acquisition.


Section 5: The 31 Orphaned Pages

redCacti flagged 31 orphaned pages on otter.ai - pages with zero incoming internal links. Unlike the broken link problems, these aren’t mass template failures. They’re specific page types that were created and then not connected to the rest of the site.

The orphaned pages cluster into recognizable patterns:

Demo landing pages (13+ words, no internal links):

  • otter.ai/blog-demo
  • otter.ai/pricing-demo
  • otter.ai/recruiting-demo
  • otter.ai/product-teams-demo
  • otter.ai/subscribe-now-demo
  • otter.ai/business-demo
  • otter.ai/education-demo
  • otter.ai/general-demo

These pages appear to be paid traffic destinations or specific CTA landing pages. They’d reach users through ads or email, not organic discovery. Making them orphaned from internal navigation is intentional - you wouldn’t want navigational links pointing to single-purpose conversion pages.

Sales agent comparison pages (0 words, no internal links):

  • otter.ai/sales-agent/better-than-gong-lp
  • otter.ai/sales-agent/better-than-fireflies-lp
  • otter.ai/sales-agent/better-than-fathom-lp
  • otter.ai/sales-agent/better-than-copilot-lp
  • otter.ai/sales-agent/better-than-chorus-lp
  • otter.ai/sales-agent/close-more-deals-lp
  • otter.ai/sales-agent/win-with-otter-lp
  • otter.ai/sales-agent/sales-teams-lp

These pages each have 0 crawlable words and exist in duplicate A/B variants (-lp and -lp-b suffixes). They’re clearly paid landing pages for competitor comparison campaigns, not organic content.

The pages worth rescuing: A few orphaned pages carry enough content to potentially rank organically. otter.ai/resources (1,177 words, 53% image alt coverage) and otter.ai/affiliate (128 words, Organization schema) are pages with actual content that would benefit from internal linking. These aren’t paid landing pages - they’re destinations that should be discoverable.

Fix: Leave the demo and comparison landing pages orphaned - they’re working as intended. Add internal links to /resources from the homepage or navigation. Add internal links to /affiliate from the pricing or partner pages.


Section 6: The Staging Environment Is Publicly Crawlable

A minor but notable finding: feature-01.staging.otter.ai was crawled and returned 200 OK. Staging environments should not be publicly accessible or crawlable. If search engines can find and index staging URLs, they can appear in results alongside production pages, create duplicate content signals, and expose in-development features.

Fix: Block feature-01.staging.otter.ai via robots.txt disallow or restrict access at the network/auth level. Add a noindex meta robots tag as a belt-and-suspenders measure.


Section 7: What Otter Gets Right

The crawl surfaces real problems. It also shows what a well-maintained large-scale site looks like in the areas that are working:

Main domain metadata is tight. otter.ai has schema on 77% of pages and OG tags on 99%. That level of consistency across 772 pages is genuinely good execution. Most sites this size have patchwork coverage where blog posts have schema but core product pages don’t, or vice versa. Otter’s main domain doesn’t have that problem.

www subdomain management is clean. www.otter.ai mirrors the main domain with 83% schema coverage and 100% OG coverage. Canonical tags are in place. The www and non-www versions are properly aligned.

The main domain has almost no dead pages. Only 1 page on otter.ai returns 404. For a 772-page marketing site, that’s excellent upkeep. The 404 problem is entirely a blog and redirect subdomain issue - not a main site content management failure.

Long-form content on blog.otter.ai has genuine depth. The 101 live blog pages average 1,932 words. Posts like “The Ultimate Guide to Recording Interviews” (2,812 words), “How Teams Use Automated Transcription to Improve Meeting Notes” (3,325 words), and “How Otter.ai Is Helping Companies Transition to Remote Work” (3,129 words) represent real content investment. These posts exist and have Article schema. What they’re missing is meta descriptions and a healthy surrounding subdomain.

Competitor comparison content is indexed and substantial. The crawl found 23 comparison and alternative pages, including direct Gong, Fireflies, Fathom, and Microsoft Copilot comparisons. These are high-intent commercial pages in a competitive category. They’re live and have content.


Action Plan

Quick Wins (Template-Level Changes)

  • Update blog.otter.ai navigation template - Remove or update links to /blog, /press, /careers, /sales-agent, /education-agent, /media-agent, /recruiting-agent, /sdr-agent. These sections no longer exist. Every live blog page uses this template. One change eliminates hundreds of recurring broken links.
  • Strip tracking parameters from help center links - Find all internal links pointing to help.otter.ai with _gl= or _ga= parameters. Replace with clean base URLs. This removes 2,517 broken links from sitewide templates.
  • Add robots.txt disallow for get.otter.ai - These App Store redirect pages serve no organic search purpose and each carries 187 broken internal links. Blocking them from crawling cleans up the noise.

Next Phase (Content Operations)

  • Add meta descriptions to all live blog.otter.ai posts - 80% of surviving blog content has no meta description. These posts have 1,900+ average word counts. They deserve a 150-character summary.
  • Redirect deleted blog.otter.ai author and tag pages - 301 redirect author pages to the blog index, deleted tag pages to the blog index or relevant category pages. Stops link equity from draining to dead URLs.
  • Block or secure the staging subdomain - feature-01.staging.otter.ai returning 200 OK publicly should be addressed before it accumulates any indexed presence.

Final Action Items

  • Add internal links from product pages and the pricing page to otter.ai/resources - it has 1,177 words and no incoming links
  • Audit whether the 426 dead blog.otter.ai URLs had meaningful backlinks or traffic before deciding between redirect and removal
  • Evaluate whether blog.otter.ai migration is complete or ongoing - the metadata gaps suggest the migration work isn’t finished

Key Takeaways

  • 2,157 pages across 10 subdomains - a distributed site where template problems compound quickly
  • 12,631 broken links, three root causes - blog navigation pointing to dead pages, expired tracking parameters in help links, and App Store redirect pages using an outdated template
  • 664 pages returning 404 - concentrated in blog.otter.ai (426) and get.otter.ai (237), main domain is clean
  • blog.otter.ai: 81% of pages dead, 80% missing meta descriptions - a migration that created a two-front problem: dead pages and missing metadata on surviving pages
  • Main domain metadata is strong - 77% schema coverage and 99% OG coverage across 772 pages is above-average for a SaaS site this size
  • 31 orphaned pages, most intentional - demo and comparison landing pages designed for paid traffic. The few worth rescuing are /resources and /affiliate
  • The broken link problem looks massive at 12,631. It’s three addressable template issues. Fix the templates, and the site’s actual crawlable health is substantially better than the headline number suggests.

Want to run a crawl like this on your own site? Try redCacti →

Newsletter

Weekly SEO teardowns

Internal linking, broken links & orphan pages — straight to your inbox, every week.

Subscribe free

redCacti Team

The team behind redCacti - helping websites improve their SEO through better internal linking.

Related Posts