Skip to content
Tolinku
Tolinku
Sign In Start Free
Marketing · · 5 min read

When to Use Noindex for App-Only Content

By Tolinku Staff
|
Tolinku qr codes short links dashboard screenshot for marketing blog posts

Not everything in your app belongs in Google's index. Indexing the wrong content wastes crawl budget, dilutes your search presence, and can create a poor user experience when someone clicks a search result and lands on a page that only works in the app.

The decision is straightforward in principle: index content that provides value to searchers on the web, and noindex content that only makes sense inside the app. In practice, the line is blurry. This guide helps you draw it. For the general app indexing setup, see app indexing and SEO for mobile apps. For canonical URL strategy, see canonical URLs for app content.

The Indexing Decision Framework

Index This Content

Content should be indexed when it meets all three criteria:

  1. Standalone value: The content is useful to someone who does not have your app installed.
  2. Web representation: You have (or can build) a web page that adequately presents the content.
  3. Search demand: People actually search for this type of content.

Examples:

Content Type Why Index
Product listings Users search for products by name, price, features
Articles and guides Informational content with high search volume
Restaurant menus Users search for "[restaurant] menu"
Event listings Users search for events by name, date, location
Public profiles Users search for people or businesses by name

Noindex This Content

Content should be noindexed when any of these apply:

  1. Personalized: The content is specific to a logged-in user (dashboard, settings, feed).
  2. Transient: The content expires quickly and has no lasting search value (live chat, temporary promotions).
  3. No web equivalent: The content requires the native app to function (AR features, camera-based interactions).
  4. Duplicate or thin: The content is too similar to other indexed pages or has too little substance.
  5. Gated: The content requires authentication and cannot be shown to Googlebot.

Examples:

Content Type Why Noindex
User dashboards Personalized, requires authentication
In-app messages Transient, no search value
Shopping cart Personalized, ephemeral
App settings No search demand, app-only functionality
Push notification history User-specific, no web value
AR/camera features No web equivalent

How to Implement Noindex

Meta Robots Tag

The most common approach. Add to the <head> of web pages that should not be indexed:

<head>
  <meta name="robots" content="noindex, follow">
</head>

The noindex directive prevents indexing. The follow directive tells Google to still follow links on the page, which preserves link equity flow to other pages.

X-Robots-Tag HTTP Header

For pages where you cannot modify the HTML (API responses, PDFs, images), use the HTTP header:

HTTP/1.1 200 OK
X-Robots-Tag: noindex, follow

Robots.txt vs. Noindex

These are different tools:

  • robots.txt blocks crawling. Google cannot see the page at all, which means it cannot see the noindex tag.
  • noindex allows crawling but prevents indexing. Google sees the page, reads the noindex tag, and removes it from the index.

If you block a page in robots.txt AND it has inbound links, Google may still index the URL (without content) based on the anchor text of those links. Use noindex instead of robots.txt when you want to guarantee a page stays out of the index.

# robots.txt - blocks crawling (not the same as noindex)
User-agent: *
Disallow: /app/settings/
Disallow: /app/dashboard/
Disallow: /app/notifications/

Content Categories: Detailed Analysis

User-Generated Content

User-generated content (reviews, comments, forum posts) requires case-by-case evaluation:

Index: Reviews and forum posts that:

  • Are publicly visible (no login required to read).
  • Contain substantive text (not just a star rating).
  • Target long-tail keywords (specific questions, product opinions).

Noindex: User content that:

  • Is mostly duplicate (short comments like "great product").
  • Requires authentication to view.
  • Contains personal information.
  • Is moderated and may be removed.

Paywalled Content

Google supports paywalled content indexing with structured data. If your app has premium content behind a paywall:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Premium Travel Guide: Hidden Beaches in Portugal",
  "isAccessibleForFree": false,
  "hasPart": {
    "@type": "WebPageElement",
    "isAccessibleForFree": false,
    "cssSelector": ".premium-content"
  }
}
</script>

Show a preview (first few paragraphs) on the web with a prompt to read more in the app. This gives Google enough content to index while driving installs.

Search Results Pages

Internal search results pages (e.g., /search?q=hotels+in+paris) should almost always be noindexed:

  • They duplicate your main content pages.
  • They create an infinite number of indexable URLs.
  • They waste crawl budget.
  • Google has its own search results and does not want to index yours.
<!-- On internal search result pages -->
<meta name="robots" content="noindex, follow">

Paginated Content

For paginated lists (page 2, 3, 4… of hotel listings):

  • Page 1: Index (this is the canonical entry point).
  • Pages 2+: Noindex, or use rel="canonical" pointing to page 1 if the pages are very similar.
<!-- Page 2 of hotel listings -->
<meta name="robots" content="noindex, follow">
<link rel="prev" href="/hotels/barcelona?page=1">
<link rel="next" href="/hotels/barcelona?page=3">

Crawl Budget Considerations

Why Crawl Budget Matters for Apps

Apps often generate many more URLs than traditional websites. A travel app with 100,000 hotels across 50 cities, each with multiple room types and date combinations, could generate millions of URLs. Google allocates a limited crawl budget to each domain.

If Google spends its crawl budget on low-value pages (settings, empty search results, expired listings), it may not crawl your high-value pages frequently enough.

Crawl Budget Optimization

  1. Noindex low-value pages so Google stops recrawling them.
  2. Block truly private pages in robots.txt (user settings, admin panels).
  3. Return HTTP 410 (Gone) for expired content so Google removes it quickly.
  4. Use sitemaps to signal which pages are important and fresh.
  5. Fix soft 404s (pages that return HTTP 200 but show "content not found").

Monitoring Your Noindex Strategy

Search Console Coverage Report

Check the Coverage report regularly:

  • "Excluded by noindex tag": These are pages where your noindex is working correctly.
  • "Crawled, currently not indexed": Google crawled the page but chose not to index it (may indicate thin content).
  • "Discovered, currently not indexed": Google knows about the page but has not crawled it yet.

Common Mistakes

  1. Noindexing pages that should be indexed: Check that your noindex rules are not accidentally catching valuable content pages.
  2. Not noindexing pages that should be noindexed: Look for indexed pages with zero impressions, these may be candidates for noindex.
  3. Using robots.txt instead of noindex: As discussed above, these are different tools with different effects.
  4. Forgetting to remove noindex after launch: Staging or pre-launch noindex tags that are left in production.

Tolinku and Content Indexing

Tolinku routes deep links to both app and web content. When you configure routes in the Tolinku dashboard, the web fallback pages are what Google indexes. For routes that point to app-only content, configure the web fallback to either show a meaningful preview with an "Open in App" prompt, or use noindex if the content has no web value.

For getting app content into search results, see app content in search results. For the broader app indexing strategy, see app indexing and SEO for mobile apps.

Get deep linking tips in your inbox

One email per week. No spam.

Ready to add deep linking to your app?

Set up Universal Links, App Links, deferred deep linking, and analytics in minutes. Free to start.