Category: SEO

  • Meta Robots vs Robots.txt: What’s the Difference? (2026)

    Meta Robots vs Robots.txt: What’s the Difference? (2026)

    Robots.txt controls crawling; meta robots and X-Robots-Tag control indexing and other search behaviour after a resource is fetched. To remove a public page with noindex, Google must be allowed to crawl it and read the instruction.

    The one-sentence difference

    Robots.txt controls crawling (whether a bot is allowed to fetch a page). The meta robots tag controls indexing (whether a page that’s been fetched is allowed to appear in search results). Crawling and indexing are two separate stages, and each tool governs a different one.

    What robots.txt does

    Robots.txt is a single file at the root of your domain that tells crawlers which paths they may or may not request. It’s a crawl instruction, issued before the bot ever loads the page:

    robots.txt

    User-agent: *
    Disallow: /wp-admin/
    Disallow: /cart/
    
    Sitemap: https://example.com/sitemap.xml

    Key point: Disallow stops a bot from crawling a URL — it does not guarantee the URL stays out of Google. If other sites link to a disallowed page, Google can still index the URL (usually with no description, because it was never allowed to read the content). If you need to generate a robots.txt file, our Robots.txt Generator builds one in your browser, and the complete robots.txt guide covers every directive.

    What the meta robots tag does

    The meta robots tag lives in the <head> of an individual page and tells search engines what to do after they’ve crawled it. The most common use is keeping a page out of the index:

    In the page <head>

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

    This says: don’t show this page in search results, but do follow its links. Because it’s a per-page instruction that Google reads directly, noindex is the reliable way to keep a page out of search — unlike a robots.txt Disallow.

    Common values:

    • index, follow — the default; permits indexing and link following but does not guarantee either.
    • noindex, follow — exclude the page from indexing while permitting link following; neither crawling nor link-equity transfer is guaranteed.
    • noindex, nofollow — hide the page and ignore its links.
    • noindex can also be sent as an HTTP header (X-Robots-Tag) for non-HTML files like PDFs.

    The mistake almost everyone makes

    Here’s the trap: to reliably noindex a page, Google must be able to crawl it and read the meta robots tag. If you Disallow that same page in robots.txt, Google never fetches it, never sees the noindex, and the URL can linger in search results anyway.

    ❌ Conflicting signals

    # robots.txt
    Disallow: /private-page/
    
    # /private-page/ <head>
    <meta name="robots" content="noindex">
    # Google never crawls it, never sees noindex → may stay indexed

    Rule of thumb: if you want a page gone from Google, use noindex and make sure robots.txt allows crawling of it. Only use robots.txt Disallow to save crawl budget on sections you don’t care about indexing at all.

    When to use which

    Goal Use
    Keep a page out of Google reliably Meta robots noindex (allow crawling)
    Stop bots wasting crawl budget on admin/cart/search URLs robots.txt Disallow
    Exclude a public page while permitting link following noindex, follow
    Block a whole folder from crawling robots.txt Disallow: /folder/
    Keep a PDF or image out of search X-Robots-Tag: noindex header
    Point crawlers to your sitemap robots.txt Sitemap: line

    Choose the right method for your goal

    Method Where it is set What it cannot do
    robots.txt Public file at the origin root Guarantee removal from search or prevent access by people
    Meta robots HTML head of a crawlable page Protect confidential data or apply to a PDF’s HTML-free response
    X-Robots-Tag HTTP response header for HTML or other files Work when the crawler cannot fetch the response
    Authentication and authorization Application or server access controls Instantly erase an already indexed public copy

    A public page that should not appear in search

    Use noindex, keep the page crawlable, and remove it from the XML sitemap. This is appropriate only if anyone with the URL may still view it. In WordPress, use the page’s SEO controls and verify the resulting HTML rather than placing a visible meta tag in the article body. See WordPress robots.txt and indexing checks.

    A PDF that should stay publicly downloadable

    Send X-Robots-Tag: noindex in the PDF’s actual HTTP response. Ask the hosting provider or use the appropriate server configuration. A meta tag on the page linking to the PDF does not control the PDF itself. Keep the PDF crawlable until Google can process its header.

    HTTP/1.1 200 OK
    Content-Type: application/pdf
    X-Robots-Tag: noindex

    Private or confidential information

    Require authentication and restrict access to authorized users. Neither noindex nor robots.txt is a security feature. If private information has already been published, restrict access immediately and investigate removal separately. Search Console’s removal process can temporarily hide results; it does not replace a permanent access or indexing change.

    Duplicate public URLs

    First decide which URL should be the preferred version. Consistent internal links, canonical signals and appropriate redirects address duplication. Do not assume a noindex instruction is a substitute for choosing and linking to the canonical page.

    Apply and verify noindex step by step

    1. Confirm the exact URL and desired outcome

    Record whether you need public access without search visibility, permanent deletion, or restricted access. Check the final URL after redirects; inspecting a different protocol or host can produce misleading results.

    2. Allow crawling and add the directive

    Check the applicable rules with the robots.txt URL tester. For an HTML page, add the robots tag through your SEO system. For a PDF, configure the response header. Avoid using two SEO systems to issue conflicting directives.

    3. Inspect what the live response contains

    Inspect a page’s meta robots tag using the Meta Tag Analyzer, then inspect response headers separately in your browser’s Network panel. Check for a redirect, another robots tag or a crawler-specific directive. A page-source check alone will not reveal an X-Robots-Tag header.

    4. Update discovery signals and verify in Search Console

    Exclude noindex URLs from the sitemap using the XML sitemap validation checklist. Inspect the exact URL in Search Console and distinguish stored indexing data from a live test. Allow time for recrawling and processing; a live test does not promise immediate removal.

    Resolve conflicting directives

    Disallow plus noindex

    Remove the crawl block if the resource is intentionally public and you need Google to read noindex. Keep access controls for private information. Do not temporarily expose confidential content just to let a crawler see a tag.

    Index plus noindex

    Check both HTML tags and HTTP headers, including crawler-specific directives. For Google, the more restrictive applicable instruction generally controls conflicts. Remove an unintended noindex at its source and clear relevant caches; adding index elsewhere does not cancel it.

    Noindex plus follow

    Follow permits link following; it does not guarantee that Google will continue crawling the page indefinitely or transfer ranking value through every link. Link important pages directly from other indexable pages. Consult the complete robots.txt rule-matching guide when user-agent groups make crawl results unexpected.

    How they work together

    Used correctly, they’re a team: robots.txt keeps crawlers out of the areas that would waste their time (admin, cart, faceted URLs), while meta robots precisely controls which of your crawlable pages actually show up in search. Neither one forces Google to index a page — that’s always Google’s call — but together they give clear crawl and index signals.

    The bottom line

    Remember the split: robots.txt = crawling, meta robots = indexing. To remove a page from search, reach for noindex and leave it crawlable. To conserve crawl budget on junk URLs, reach for robots.txt Disallow. Never block a page in robots.txt and expect a noindex on it to work — that’s the contradiction that quietly leaves public pages in Google.

    Frequently asked questions

    Does robots.txt Disallow remove a page from Google?

    Not reliably. Disallow stops crawling, but if the URL is linked from elsewhere, Google can still index it (often without a description). To remove a page from search, use a meta robots noindex tag and keep the page crawlable.

    Can I use both robots.txt and meta robots on the same page?

    You can, but be careful: if robots.txt disallows the page, Google can’t crawl it and therefore can’t read its noindex tag. For a noindex to work, the page must be crawlable.

    What’s the difference between noindex and nofollow?

    noindex keeps the page out of search results. nofollow tells search engines not to follow the links on that page. They’re independent — noindex, follow is a common combination.

    Where does the meta robots tag go?

    In the <head> section of the individual page’s HTML: <meta name="robots" content="noindex, follow">. For non-HTML files like PDFs, use the X-Robots-Tag HTTP header instead.

    Which should I use to save crawl budget?

    robots.txt. Disallowing large, low-value sections (admin, internal search, faceted URLs) stops crawlers wasting requests there. Meta robots doesn’t save crawl budget because the page still has to be crawled to read the tag.

    Related tools & guides

    Reference documentation

    See Google’s robots meta tag and X-Robots-Tag documentation for supported directives and conflict handling.

    Editorial note: Updated September 29, 2026 with AI assistance. Instructions were reviewed against the relevant tool implementation and documentation; examples are illustrative rather than claims of personal experience.

  • The Complete XML Sitemap Guide (2026)

    The Complete XML Sitemap Guide (2026)

    An XML sitemap lists the canonical URLs you want search engines to discover. Create or locate the sitemap, check its URLs, and submit it in Search Console. A successful submission does not guarantee indexing.

    What is an XML sitemap?

    An XML sitemap is a machine-readable file — almost always at /sitemap.xml — that lists the URLs on your site you want search engines to crawl and index. Each entry can include a few optional hints: when the page was last modified, how often it changes, and its relative priority.

    Think of it as the index at the back of a book. Search engines can find your pages by following links, but a sitemap provides another discovery path but does not guarantee that every listed URL will be crawled or indexed — especially deep pages, newly published content, or pages that aren’t linked from many places yet.

    What a real sitemap looks like

    A minimal, valid XML sitemap follows the sitemaps.org protocol and looks like this:

    sitemap.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
      <url>
        <loc>https://example.com/</loc>
        <lastmod>2026-07-01</lastmod>
      </url>
      <url>
        <loc>https://example.com/blog/</loc>
        <lastmod>2026-07-15</lastmod>
      </url>
    </urlset>

    A URL sitemap requires the <urlset> wrapper with the correct namespace, a <url> element for each entry, and a <loc> inside each entry. Everything else is optional. In practice, <lastmod> is the one extra field worth keeping accurate — Google uses it as a hint for re-crawling. Google ignores <changefreq> and <priority>, so don’t lose sleep over them.

    Sitemap index files (for bigger sites)

    A single sitemap can hold up to 50,000 URLs or 50 MB uncompressed, whichever comes first. Larger sites split their URLs across several sitemaps and tie them together with a sitemap index file:

    sitemap-index.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
      <sitemap>
        <loc>https://example.com/post-sitemap.xml</loc>
      </sitemap>
      <sitemap>
        <loc>https://example.com/page-sitemap.xml</loc>
      </sitemap>
    </sitemapindex>

    This is exactly how WordPress, Yoast and most CMS platforms structure things by default: one index that points to separate sitemaps for posts, pages, categories and so on. You submit the index once and search engines discover the rest.

    Do you actually need a sitemap?

    Honest answer: a small, well-linked site (say, under 100 pages where everything is reachable from the menu) will get crawled fine without one. But a sitemap becomes genuinely valuable when:

    • Your site is large, or grows quickly.
    • You publish new content often and want it discovered fast.
    • Some pages aren’t well linked internally (orphan pages).
    • Your site is new and has few backlinks pointing in.
    • You have rich media (images, video) you want surfaced in the right places.

    There’s no downside to having one, so the practical rule is simple: always publish a sitemap. It costs nothing and only helps discovery.

    Choose which URLs to include

    Start with public pages you want indexed. For each entry, prefer the final canonical URL returning a successful response. A sitemap is not a list of every address your server can generate.

    • Include: useful articles, product or service pages, and other canonical public pages intended for search.
    • Exclude redirects: list the final destination instead of its old URL.
    • Exclude missing pages: remove deleted URLs returning 404 or 410.
    • Exclude noindex pages: keep search-excluded pages out of the sitemap, even when they return HTTP 200.
    • Remove duplicates: avoid fragments, tracking parameters and alternate URLs for the same content unless they are intentionally distinct canonical pages.

    If a URL is blocked or noindexed unintentionally, fix the page’s configuration rather than merely deleting it from the sitemap. Read how to check noindex conflicts before submitting URLs.

    How to create an XML sitemap

    WordPress

    Since WordPress 5.5, core generates a sitemap automatically at /wp-sitemap.xml. If you use an SEO plugin (or the WPOS SEO engine), you’ll usually get a richer, cleaner sitemap at /sitemap.xml or /sitemap_index.xml. You rarely need to build one by hand.

    Shopify

    Shopify auto-generates /sitemap.xml for every store, split into products, collections, pages and blogs. It updates automatically — you just submit the URL.

    Static or custom sites

    For a hand-built site or a small custom app, the fastest route is a generator: paste the complete URLs you want to include and download a ready-to-upload file. Our free XML Sitemap Generator does exactly this — no signup, and the file is built right in your browser.

    Build a sitemap from a manual URL list

    1. Collect canonical URLs

    Export or assemble the full public URLs you intend to list. Check the hostname and protocol, remove duplicates, and keep a copy of the list for later updates. Our generator does not crawl a homepage or verify that each URL is indexable.

    2. Generate and inspect the XML

    Open the XML Sitemap Generator to build a sitemap from a URL list. Choose Paste multiple URLs, enter one address per line, and click Add All URLs. Review the generated entries. The tool exposes priority and change-frequency fields, but Google ignores those fields; increasing priority is not a ranking or crawl-speed setting.

    3. Publish through your site’s normal deployment method

    Download sitemap.xml and publish it at a stable public URL. Do not overwrite an automatically maintained CMS sitemap with a static file unless you deliberately intend to maintain the replacement. For WordPress, first find your WordPress sitemap and active robots.txt source.

    Validate before submitting

    1. Open the sitemap URL and confirm HTTP 200 with actual XML, not an HTML error or browser challenge.
    2. Check the XML namespace, closing tags and URL escaping. An ampersand in a URL must be encoded as &amp; in XML.
    3. Open representative listed URLs. Confirm final destinations, canonical tags and absence of unwanted noindex directives.
    4. Keep each sitemap within 50,000 URLs and 50 MB uncompressed. Split larger lists and reference them from a sitemap index.
    5. Confirm any child sitemaps in an index also load. Submitting an index that references broken files does not repair those files.
    6. Use honest last-modified dates and retain ordinary internal links to the listed pages.

    Use the Meta Tag Analyzer to review page-level indexing signals; inspect HTTP headers separately for X-Robots-Tag. Then add a sitemap directive to robots.txt using the full sitemap URL.

    How to submit your sitemap to Google

    1. Open Google Search Console and select your property.
    2. In the left menu, go to Sitemaps.
    3. Enter the sitemap URL or the path requested by the selected property’s interface (e.g. https://example.com/sitemap.xml) and click Submit.
    4. Wait for the status to read Success — Google will report how many URLs it discovered.

    You don’t need to resubmit every time you publish; search engines re-fetch known sitemaps on their own schedule. Submit once, then monitor fetch errors and URL coverage as you publish or remove content.

    Link your sitemap from robots.txt

    Beyond Search Console, the other standard way to advertise your sitemap is a single line in your robots.txt file. Every major crawler reads it:

    robots.txt

    User-agent: *
    Allow: /
    
    Sitemap: https://example.com/sitemap.xml

    This is the belt-and-suspenders approach: the Sitemap: directive means bots that never touch Search Console (Bing, DuckDuckGo, and AI crawlers) still find your sitemap. If you don’t have a robots.txt yet, our Robots.txt Generator can create one with the sitemap line already included. For the full breakdown, see our complete robots.txt guide.

    Troubleshoot sitemap and indexing reports

    “Couldn’t fetch” or an HTML response

    Check the exact submitted address, response status, redirect destination and public accessibility. Confirm that a login, firewall or challenge is not replacing the XML. A successful browser load does not prove Google receives the same response; hosting logs can help establish the difference.

    “Success” but some pages are not indexed

    Success means Google processed the sitemap; it is not approval of every page. Inspect an affected URL and distinguish “Discovered — currently not indexed” from “Crawled — currently not indexed.” The first says Google knows the URL but has not yet crawled it; the second says a crawl occurred without indexing. Neither status alone identifies the underlying cause.

    Submitted and indexed counts differ

    Review representative URLs for duplicates, alternate canonicals, noindex directives, soft errors and weak internal discovery. Assess whether the content offers useful, distinct information. Correct the actual issue, update links or sitemap entries when needed, and monitor later processing. Repeatedly submitting an unchanged sitemap is not a fix.

    A migration leaves old URLs behind

    Regenerate the sitemap with final URLs, check redirects from old pages, update internal links and submit the current index. Avoid simultaneously listing old redirects and their replacements as canonical pages.

    Common sitemap mistakes

    • Listing non-canonical or redirected URLs. Only include the final, indexable version of each page. Never list URLs that 301/302 or 404.
    • Including noindexed pages. If a page is noindex, keep it out of the sitemap — mixing signals confuses crawlers.
    • Blocking the sitemap in robots.txt. Make sure you haven’t accidentally disallowed the path the sitemap lives on.
    • Stale lastmod dates. Use the date of the last significant content change. An unchanged page can correctly keep the same date; do not refresh every date merely because the sitemap was regenerated. Omit the field if you cannot keep it accurate.
    • Forgetting to update after a migration. After changing domains or URL structures, regenerate and resubmit.

    Sitemaps vs robots.txt: what does what

    These two files are often confused, but they do opposite jobs:

    • The sitemap says “here’s what I want you to crawl.” It’s an invitation.
    • robots.txt says “here’s what I don’t want you to crawl.” It’s a boundary.

    Used together, they give search engines a clear map plus clear no-go zones. Neither one forces indexing — that’s still Google’s call — but together they make its job far easier.

    The bottom line

    An XML sitemap won’t magically boost your rankings, but it provides a discovery signal for pages that may otherwise be hard to find. Publish one, keep it clean (indexable, canonical URLs only), reference it from robots.txt, and submit it once in Search Console. Then get back to the work that actually moves rankings — great content and links.

    Frequently asked questions

    Where should my sitemap be located?

    At the root of your domain, typically https://yoursite.com/sitemap.xml. It can technically live elsewhere if you submit it directly in Search Console, but the root is the convention every crawler expects.

    How often should I update my sitemap?

    If it’s generated automatically (WordPress, Shopify, most SEO plugins), it updates itself whenever you publish. For a hand-built file, regenerate it whenever you add or remove pages. You don’t need to resubmit each time — search engines re-crawl known sitemaps on their own.

    What’s the maximum size of a sitemap?

    50,000 URLs or 50 MB uncompressed per file, whichever comes first. Beyond that, split your URLs across multiple sitemaps and reference them from a single sitemap index file.

    Do I need both an XML sitemap and a robots.txt?

    Not every site needs both, and neither guarantees indexing. They do different jobs. The sitemap lists pages you want crawled; robots.txt sets rules for what shouldn’t be crawled. Adding a Sitemap: line to robots.txt is the best-practice way to link the two.

    Will a sitemap improve my Google rankings?

    Not directly. A sitemap helps Google discover and crawl your pages faster and more completely, which is a prerequisite for ranking — but the ranking itself still depends on content quality, relevance and links.

    Should I include images and videos in my sitemap?

    You can, using the image and video sitemap extensions, if visual content is important to your traffic (e.g. a photography or recipe site). For most sites the standard URL sitemap is enough.

    Related tools & guides

    Reference documentation

    Consult Google’s sitemap creation guidance and the Sitemaps XML protocol for limits, fields and escaping requirements.

    Editorial note: Updated September 29, 2026 with AI assistance. Instructions were reviewed against the relevant tool implementation and documentation; examples are illustrative rather than claims of personal experience.

  • Robots.txt for WordPress: The Complete 2026 Guide

    Robots.txt for WordPress: The Complete 2026 Guide

    Before editing WordPress robots.txt, identify whether WordPress, a plugin, or a physical file serves it. Back up the current rules, make the smallest necessary change, and verify the public response and important URLs.

    What robots.txt actually does on WordPress

    A robots.txt file sits at the root of your domain (https://yoursite.com/robots.txt) and tells search engine crawlers which parts of your site they are welcome to request. It is the first file Googlebot looks for when it visits.

    Two things are worth burning into memory before you touch anything:

    • Robots.txt controls crawling, not indexing. Blocking a URL here stops bots from fetching it — but a blocked URL can still appear in search results if other pages link to it. To keep something out of the index, you need a noindex meta tag, not a Disallow rule.
    • It is a public file. Anyone can read yours. Never use it to “hide” login pages, private folders, or sensitive URLs — you are just handing out a map.

    The virtual file gotcha (this trips up everyone)

    Here is the part unique to WordPress. By default there is no physical robots.txt file on your server. WordPress creates a virtual one on the fly every time a bot requests it, through WordPress’s robots response, which plugins can customize with the robots_txt filter. If you FTP into your site and look in the root folder, you will find nothing named robots.txt — but the URL still works.

    This matters because it changes how you edit it:

    • If no physical file exists, WordPress serves its virtual default (shown below).
    • The moment you upload a real robots.txt file to the site root, WordPress stops generating the virtual one and serves your file instead. Your file wins.
    • SEO plugins differ: some filter the virtual response, while file editors may create or modify a physical file. Editor availability depends on the plugin, permissions and hosting setup. Check the active plugin’s documentation before assuming where changes are stored.

    What WordPress puts in the default robots.txt

    Out of the box, a WordPress site serves something close to this:

    Default WordPress robots.txt

    User-agent: *
    Disallow: /wp-admin/
    Allow: /wp-admin/admin-ajax.php
    
    Sitemap: https://yoursite.com/wp-sitemap.xml

    It is intentionally minimal, and honestly it is close to correct for most sites. It blocks the admin area, keeps admin-ajax.php open (many themes and plugins need it for front-end features), and points to the core sitemap. If your whole SEO setup is “leave it alone,” you could do a lot worse.

    Identify what serves your file

    Check the public URL and save a copy

    Open the exact site’s /robots.txt. Record the date, content and sitemap address. A WordPress site in a subdirectory still needs the appropriate robots file at the origin root. Confirm that you are checking the production hostname rather than a staging or www variant.

    Check Settings → Reading

    On a public site intended for search, review Discourage search engines from indexing this site. This setting is a visibility request, not authentication. Check the generated page-level robots directives as well as robots.txt; behaviour depends on WordPress and the active SEO configuration. Keep private staging sites protected with access controls.

    Identify physical files, plugins and caches

    Check whether a physical file exists in the public document root through your host’s file manager. Determine whether an active plugin filters the virtual response. Server configuration normally gives a physical file precedence, but hosting rules can alter routing. Compare your intended edit with the public response rather than guessing from the editor screen.

    Edit robots.txt safely

    Choose one authoritative editing route

    If the active plugin provides the intended editor, use it and confirm what it manages. If a physical file controls the response, use the host’s supported file editor. Do not maintain conflicting copies in several plugins. Preserve the old content before changing anything.

    Make one narrow change

    Write down which URLs should become allowed or blocked. Avoid adding broad exclusions for uploads, scripts or styles. If your actual goal is search exclusion, choose noindex instead of Disallow and keep public resources crawlable so Google can read that instruction.

    Publish, clear the relevant cache and recheck

    After saving, request the public robots URL again. If the response is unchanged, check the physical-versus-virtual source and the applicable hosting/CDN cache. Clear only the relevant cache through the supported controls, then repeat your tests. Do not assume repeated editor saves will resolve a routing conflict.

    Start with minimal rules

    A minimal baseline is usually easier to verify than a long collection of copied exclusions. Replace the example domain and sitemap path with the sitemap your site actually serves:

    User-agent: *
    Disallow: /wp-admin/
    Allow: /wp-admin/admin-ajax.php
    
    Sitemap: https://example.com/wp-sitemap.xml

    This is a starting point, not a universal prescription. A plugin may use /sitemap_index.xml or another endpoint. Keep the active sitemap and avoid introducing another SEO plugin just to obtain a different filename. Use the robots.txt generator and URL tester to check the complete rules before publication.

    Handle optional exclusions deliberately

    Internal search and parameter URLs

    Before adding /?s=, /search/ or reply-parameter rules, collect actual URL examples from your site. A root-anchored rule may not cover nested paths or a parameter in a different position. Conversely, a broad wildcard can match useful content. For every intended block, test a nearby URL that should remain allowed.

    Archives and store pages

    Decide whether category and tag archives offer useful landing pages before excluding them. Public noindex pages must remain crawlable for the directive to be read. Cart, checkout and account privacy relies on application access controls; a robots rule is not protection for customer information.

    Crawler-specific groups

    A separate Googlebot group can supersede the wildcard group for Google. An Allow: / group can therefore discard restrictions you expected it to inherit. Keep a single general group unless you need a deliberate difference, and understand user-agent selection and rule matching before adding exceptions.

    What you should NOT block on WordPress

    This is where most robots.txt damage happens. A few Disallow lines that look tidy will actively hurt your rankings:

    • Never block /wp-content/. Your images, and often your CSS and JavaScript, live here. If Google cannot fetch your CSS/JS, it cannot render your pages properly and may judge them as broken or non-mobile-friendly.
    • Never block /wp-includes/ wholesale. Older “SEO hardening” guides told you to. Modern Google explicitly asks you not to — it needs those assets to render.
    • Do not block /wp-content/uploads/. That is your media library. Blocking it kills Google Images traffic.
    • Do not block your category or tag archives here if you want them indexed. If you want them out of the index, use a noindex tag (via your SEO plugin) instead — see the distinction below.

    Blocking specific bots

    You can set rules per crawler. A common example is allowing Google fully while slowing down or blocking a scraper:

    Per-bot rules

    User-agent: Googlebot
    Allow: /
    
    User-agent: AhrefsBot
    Crawl-delay: 10
    
    User-agent: SemrushBot
    Disallow: /

    A word of caution: well-behaved bots (Google, Bing) respect these rules; malicious scrapers ignore robots.txt entirely. Use it for crawl management, not security. And in 2026, many site owners also add explicit rules for AI crawlers like GPTBot and PerplexityBot — check each operator’s documentation: search, user-requested fetches and training may use different agents.

    WooCommerce and plugin considerations

    If you run a store, WordPress and WooCommerce generate URLs you almost certainly do not want crawled:

    WooCommerce additions

    Disallow: /cart/
    Disallow: /checkout/
    Disallow: /my-account/
    Disallow: /*add-to-cart=*

    The cart, checkout, and account pages are user-specific and have no search value, and the add-to-cart query strings create endless duplicate URLs. Blocking them keeps crawlers focused on your product and category pages, where the traffic actually is.

    Common WordPress robots.txt mistakes

    • Leaving a Disallow: / from a staging site. Developers block everything during a build. If that line survives launch, you have told Google to crawl nothing. This is one possible cause of blocked crawling, not proof of the cause of a traffic drop.
    • Using robots.txt to deindex. Blocking a page here does not remove it from Google — it just stops Google from seeing the noindex tag on it. To remove a page, allow crawling and add noindex.
    • Blocking CSS/JS. Covered above, but it is worth repeating: it breaks rendering.
    • Forgetting the sitemap line. It is a free, direct signal to crawlers. Always include it.
    • Editing the wrong file. If your SEO plugin manages a virtual robots.txt but you also uploaded a physical one, the physical file wins and your plugin edits do nothing.

    Robots.txt vs noindex: which to use

    This is the distinction that fixes 90% of confusion. They solve different problems:

    When to use which

    Goal: Save crawl budget on junk URLs  → robots.txt Disallow
    Goal: Keep a page out of Google       → noindex meta tag
    Goal: Exclude a public page from search → allow crawl + noindex
                                            (NOT Disallow — the bot must
                                             be able to see the noindex)

    Rule of thumb: if you never want a bot to fetch it, use robots.txt. If you are fine with fetching but want it kept out of search results, use noindex. If you want a page gone from Google, do not block it in robots.txt, because then Google can’t read the noindex tag telling it to leave.

    How to test your robots.txt

    Test representative URLs

    Use the robots.txt tester to test your WordPress robots.txt rules against the homepage, a recent post, a category, an upload, a stylesheet, a script and the admin AJAX endpoint. Add the search or parameter URLs you intend to exclude. Save expected and actual results for the relevant crawler.

    Check the actual sitemap and page directives

    Open the address named by the Sitemap directive. Follow the XML sitemap validation checklist to confirm XML, canonical URLs and no unwanted noindex entries. Check a representative page’s head and response headers; a permissive robots file does not cancel noindex elsewhere.

    Review Search Console after publication

    Check the robots.txt report’s fetched version and date, then inspect an important URL. Separate stored indexing information from a live test. Watch for recrawling rather than repeatedly changing working rules to force indexing.

    Investigate access errors separately

    If requests receive 403, 429 or 5xx responses, involve hosting support and provide the affected URL and time. Ask for verified Googlebot log evidence. A challenge shown to your own browser does not establish that Googlebot is blocked. Restore your backup if an actual rule regression is found.

    Frequently asked questions

    Does WordPress have a robots.txt file by default?

    Yes, but it is virtual — generated in memory, not saved as a file on your server. Visiting yoursite.com/robots.txt shows it. As soon as you upload a real file to the site root, WordPress serves that instead.

    How do I edit robots.txt in WordPress without FTP?

    Use an SEO plugin. Check whether your active SEO plugin provides a robots.txt editor and whether it changes a physical file or filters the virtual response. Features and permissions vary. If no editor is available, use your host’s supported file-management workflow.

    Should I block wp-admin in robots.txt?

    WordPress already does, and that is fine — but always keep the Allow: /wp-admin/admin-ajax.php line, because many themes and plugins use that endpoint for front-end functionality that Google needs to render.

    Will robots.txt remove a page from Google?

    No. Blocking a URL stops crawling, but the page can still be indexed from external links. To remove a page, allow crawling and add a noindex meta tag so Google can see the instruction to drop it.

    Do I need a robots.txt file at all?

    Not strictly — a site with no robots.txt is crawled normally. But a good one saves crawl budget on junk URLs and points bots to your sitemap, so it is worth having on any WordPress site.

    Where do I add the sitemap in robots.txt on WordPress?

    Add a line Sitemap: https://yoursite.com/wp-sitemap.xml (or your plugin’s sitemap URL) anywhere in the file — it is not tied to a User-agent block. Point it at whichever sitemap your site actually serves.

    The short version

    For most WordPress sites, the default robots.txt is nearly right — the wins come from a few careful additions (block internal search and store-only URLs, always include your sitemap) and, more importantly, from not making the classic mistakes: never block CSS/JS or /wp-content/, never leave a staging Disallow: / in place, and never confuse robots.txt with noindex. Get those right, verify in Search Console, and review the file again after migrations, plugin changes or indexing problems.

    Ready to build yours? Generate a valid file in seconds with the Robots.txt Generator, pair it with the XML Sitemap Generator, and if you want the full background, read The Complete Robots.txt Guide 2026.

    Reference documentation

    See WordPress’s robots response documentation and Google’s robots.txt specification. Plugin editors differ, so use the documentation for the plugin active on your own site.

    Editorial note: Updated September 29, 2026 with AI assistance. Instructions were reviewed against the relevant tool implementation and documentation; examples are illustrative rather than claims of personal experience.

  • The Complete Robots.txt Guide 2026

    The Complete Robots.txt Guide 2026

    Robots.txt tells compliant crawlers which URLs they may request. It does not reliably prevent indexing or protect private content. This guide explains how to write rules, test their effects, and publish changes safely.

    What is robots.txt?

    Robots.txt is a plain text file that lives in the root folder of your website. Its job is to tell automated visitors — search engine crawlers, bots, and scrapers — which parts of your site they’re allowed to request and which parts they should leave alone.

    When a well-behaved crawler like Googlebot arrives at your site, the first thing it does is look for a file at a very specific address:

    https://yourdomain.com/robots.txt

    If it finds one, it reads the rules before crawling anything else. If it doesn’t find one, it assumes everything is fair game and crawls whatever it can reach. That’s an important point people miss: no robots.txt file means “crawl everything,” not “crawl nothing.”

    The name is short for “robots exclusion” and the format is governed by the Robots Exclusion Protocol, a standard that’s been around since 1994 and was finally formalized by the IETF in 2022. Every major search engine respects it.

    Robots.txt is a request, not a lock. Good bots obey it. Malicious bots and scrapers can — and do — ignore it completely. Never use robots.txt to hide sensitive information; use passwords and proper access control for that.

    Why robots.txt matters for SEO

    You might be wondering why you’d ever want to stop search engines from crawling parts of your site. Isn’t more crawling better? Not always. Here’s why the file matters.

    It protects your crawl budget

    Search engines don’t crawl every page on every site on every visit. They allocate a rough budget of how many pages they’ll fetch from you in a given window. If a big chunk of that budget gets spent on pages that don’t matter — internal search results, filter combinations, admin URLs — your genuinely important pages get crawled less often. Robots.txt lets you steer crawlers away from the low-value stuff.

    It keeps clutter out of the crawl path

    Most sites generate a surprising number of throwaway URLs: session parameters, faceted navigation, print versions, staging directories. Blocking these keeps crawlers focused on the content you actually want ranked.

    It points crawlers to your sitemap

    Robots.txt is also the conventional place to announce where your XML sitemap lives, which helps search engines discover your important pages faster. We’ll cover that pairing in detail later.

    It prevents server strain

    On large or resource-heavy sites, aggressive crawling can slow things down for real visitors. Thoughtful robots.txt rules reduce unnecessary requests.

    The flip side is the danger I opened with: because robots.txt is so powerful, a careless rule can prevent crawling of pages you want ranked. Respect it, test it, and change it deliberately.

    Robots.txt syntax explained

    The good news is that the syntax is genuinely simple. A robots.txt file is a list of rules, and each rule has two parts: who the rule applies to, and what they can or can’t do.

    Here is the smallest useful example:

    User-agent: *
    Disallow: /private/

    Read out loud, that says: “To every crawler (* means all of them), you are not allowed to crawl anything inside the /private/ folder.” Everything else on the site is allowed by default.

    A few rules of the road for the format itself:

    • Each directive goes on its own line.
    • Directive names are not case-sensitive (User-agent and user-agent both work), but the paths you list are case-sensitive.
    • Lines starting with # are comments and are ignored by crawlers — use them to leave notes for yourself.
    • Paths are relative to the root, always starting with a /.
    • A blank line separates one rule group from the next.

    How Google selects and matches rules

    Select the applicable user-agent group first

    For Google, the most specific matching user-agent group takes precedence over the wildcard group. Rules in a Googlebot group do not automatically inherit the restrictions in User-agent: *. Multiple groups for the same matching user agent are combined. When adding a special group, repeat the restrictions that crawler must still follow.

    User-agent: *
    Disallow: /search/
    
    User-agent: Googlebot
    Disallow: /preview/

    In this example Googlebot is blocked from /preview/, but the wildcard group’s /search/ restriction does not apply to it. If both paths should be blocked for Googlebot, put both rules in its group. Avoid a special group unless you need different behaviour.

    Use the longest matching path; Allow wins a tie

    Within the applicable group, Google uses the most specific matching path. Where Allow and Disallow have equal specificity, the less restrictive Allow wins. File order is not a reliable way to override a rule. For the standard WordPress admin example, /wp-admin/admin-ajax.php is more specific than /wp-admin/, so it remains crawlable.

    Test wildcards, case and query strings

    * matches a sequence of characters and $ anchors the end. Rules match the path and query string, not the URL fragment after #. Paths are case-sensitive. A pattern beginning /?sort= does not cover a parameter on every product or category path.

    Rule Test URL path Expected result from this rule
    Disallow: /search /searching-tips/ Blocked: the prefix is broader than /search/
    Disallow: /*.pdf$ /report.pdf Blocked
    Disallow: /*.pdf$ /report.pdf?download=1 Not blocked by this rule: the URL does not end in .pdf
    Disallow: /Private/ /private/ Not blocked by this rule: case differs

    These are isolated examples; another rule can change the final result. Use the robots.txt generator and URL tester with the complete file and actual URL variants, including parameters. Treat its output as a rule check, not proof of what Google has fetched.

    The common directives

    You only need to understand four directives to handle 95% of real-world situations. Let’s take them one at a time.

    User-agent

    This line names the crawler a rule group applies to. The asterisk * is a wildcard meaning “all crawlers.” You can also target specific bots by name:

    # Rules for everyone
    User-agent: *
    Disallow: /cart/
    
    # A special rule just for Google's image crawler
    User-agent: Googlebot-Image
    Disallow: /private-photos/

    Some crawler names worth knowing: Googlebot (Google’s main crawler), Bingbot (Microsoft Bing), Googlebot-Image, and increasingly the AI crawlers like GPTBot and ClaudeBot that fetch content for large language models.

    Disallow

    This tells the named crawler not to request URLs that begin with the given path. A few examples make the pattern clear:

    Disallow: /admin/        # blocks the whole /admin/ folder
    Disallow: /search        # blocks any URL starting with /search
    Disallow: /*.pdf$        # blocks every URL ending in .pdf
    Disallow:                # an empty Disallow blocks nothing — allows all

    Notice the last one. An empty Disallow: value is the standard way to say “this crawler may access everything.”

    Allow

    Allow is the exception-maker. It’s most useful when you’ve blocked a whole folder but want to permit one specific thing inside it:

    User-agent: *
    Disallow: /wp-admin/
    Allow: /wp-admin/admin-ajax.php

    That blocks the entire WordPress admin area except the one file that themes and plugins legitimately need crawlers to reach. When rules conflict, most modern crawlers follow the most specific (longest) matching path, so the Allow wins here.

    Sitemap

    The Sitemap directive announces the full URL of your XML sitemap. Unlike the others, it isn’t tied to any user-agent — it’s a standalone line, usually placed at the bottom of the file:

    Sitemap: https://yourdomain.com/sitemap.xml

    You can list more than one sitemap line if you have multiple sitemaps. Always use the full, absolute URL here, not a relative path.

    A note on Crawl-delay

    You may see Crawl-delay: 10 in older files, meant to tell a crawler to wait ten seconds between requests. Be aware that Google ignores this directive entirely — the former Search Console crawl-rate limiter is no longer available. Investigate server capacity and crawl behaviour instead. Bing and a few others still honor it, so it’s not useless, just misunderstood.

    WordPress robots.txt examples

    WordPress is where most people meet robots.txt for the first time. By default WordPress generates a small virtual file for you, but the moment you want real control you’ll want your own. Here’s a sensible, safe starting point for a typical WordPress site:

    User-agent: *
    Disallow: /wp-admin/
    Allow: /wp-admin/admin-ajax.php
    Disallow: /?s=
    Disallow: /search/
    
    Sitemap: https://yourdomain.com/wp-sitemap.xml

    What each line is doing:

    • Disallow: /wp-admin/ keeps crawlers out of the dashboard.
    • Allow: /wp-admin/admin-ajax.php re-opens the one file plugins need.
    • Disallow: /?s= and /search/ stop internal search-result pages from being crawled — these are classic crawl-budget wasters.
    • The Sitemap line points to WordPress’s built-in sitemap.

    Notice what’s not here. You’ll sometimes find old tutorials telling you to block /wp-content/ or /wp-includes/. Don’t. Modern Google needs to fetch your CSS and JavaScript from those folders to render and understand your pages. Blocking them can actively hurt your rankings.

    Shopify robots.txt examples

    Shopify generates robots.txt automatically. Keep the platform defaults unless you have identified a specific crawling problem. If you customize robots.txt.liquid, preserve the default groups and add the narrowest necessary change using Shopify’s current documentation. A fragment copied without its surrounding Liquid loop may not work. Preview the rendered public robots.txt and test product, collection, asset and checkout URLs before relying on the change.

    WooCommerce robots.txt examples

    WooCommerce runs on top of WordPress, so you get full control again — and a store adds a few URLs worth managing. Cart, checkout, and account pages hold nothing a search engine needs to index, and blocking them keeps crawlers on your products and categories:

    User-agent: *
    Disallow: /wp-admin/
    Allow: /wp-admin/admin-ajax.php
    Disallow: /cart/
    Disallow: /checkout/
    Disallow: /my-account/
    Disallow: /*add-to-cart=*
    Disallow: /?orderby=
    Disallow: /?filter_*
    
    Sitemap: https://yourstore.com/wp-sitemap.xml

    The two lines to pay attention to are the parameter blocks. /*add-to-cart=* stops crawlers from following those “add to cart” action links, and /?orderby= and /?filter_* keep them out of the endless sorted-and-filtered variations of your shop pages. Those parameter URLs can multiply into thousands of near-identical pages — exactly the kind of thing that drains crawl budget on a busy store.

    One caution specific to stores: never block /product/ or your shop and category pages. It sounds obvious written down, but it’s a mistake I’ve seen happen when someone copies an overly aggressive rule set from a forum.

    Common mistakes and how to avoid them

    Most robots.txt disasters come from a small handful of mistakes. Here are the ones worth burning into memory.

    1. Accidentally blocking the whole site

    The single most damaging line in existence:

    User-agent: *
    Disallow: /

    That forward slash means “the root and everything under it.” Do not leave this rule on a public site you want crawled. For private staging environments, use authentication; robots.txt is not access control. If your traffic ever falls off a cliff for no obvious reason, this is the first thing to check.

    2. Using robots.txt to hide a page from search results

    This is the most common misconception in all of SEO. Blocking a URL in robots.txt stops crawling, but it does not guarantee the page stays out of Google’s index. If other sites link to that URL, Google can still list it in results — just without a description, showing “No information is available for this page.” To truly keep a page out of search, use a noindex meta robots tag and allow crawling so Google can see the tag. More on that difference below.

    3. Blocking CSS and JavaScript

    Google renders pages like a browser does. If you block the resources it needs to render — stylesheets, scripts, fonts — it sees a broken version of your page and may judge it poorly. Let crawlers reach your assets.

    4. Getting case wrong

    Paths are case-sensitive. Disallow: /Blog/ will not block /blog/. Match your real URLs exactly.

    5. Forgetting the file after a site migration

    When you move from staging to production, the staging robots.txt often comes along for the ride, complete with its Disallow: /. Migration checklists exist for a reason — put “review robots.txt” near the top of yours.

    How to test a robots.txt file

    1. Save a baseline and choose test URLs

    Copy the current file before editing. List URLs that must stay crawlable: the homepage, a recent article, a category, an image, a stylesheet and a script. Add examples of the paths you intend to block. Include both trailing-slash and parameter variants where they exist.

    2. Change one rule and check its scope

    Use the robots.txt generator and URL tester to create or inspect the full rule set. Test the relevant user agent against both your allowed and blocked URL samples. Check custom user-agent groups separately, rather than assuming the wildcard group covers them.

    3. Publish at the correct origin

    Serve the file at /robots.txt on the correct scheme, hostname and port. A subdomain is a separate origin. Verify the response is the intended plain text, not a login page, challenge page, HTML error or stale cached file. For WordPress, follow the WordPress robots.txt setup and verification steps.

    4. Verify the live file and Google’s fetched version

    Repeat the same URL tests against the published text. In Search Console, review the robots.txt report and inspect an important URL. Distinguish the last indexed result from a live test. If a change should restore crawling, watch for a subsequent fetch; publishing does not instantly update Google’s cached version or guarantee indexing.

    5. Keep a rollback copy

    If a new rule blocks a required page or resource, restore the previous file and recheck the public response. Record the rule, publication time and affected URLs so later traffic changes can be investigated against evidence.

    Troubleshooting blocked crawling

    Robots rule or server response?

    A rule marked Disallow is different from a page returning 403, 429 or 5xx. Inspect the page response and robots.txt separately. A browser challenge does not prove that verified Googlebot gets the same challenge; ask hosting support to check logs for verified crawler traffic, URL, time and response status.

    Missing file or failed fetch?

    Google normally treats a robots.txt 404 as no robots restrictions. Server errors, network failures and rate limiting are different and can interrupt crawling; investigate them rather than assuming the file is simply absent. An HTML page returned with HTTP 200 is also not evidence that the intended rules were served.

    Crawlable but still not indexed?

    Check meta robots, X-Robots-Tag, canonical selection, internal links and content usefulness. Read robots.txt versus noindex before changing a crawl rule to solve an indexing problem. Use the Meta Tag Analyzer to inspect page-level directives, then check HTTP headers separately. Review how to create and submit an XML sitemap without expecting a sitemap submission to force indexing.

    Robots.txt vs meta robots

    This is the distinction that separates people who understand crawling from people who guess at it. Robots.txt and the meta robots tag sound similar and are constantly confused, but they do genuinely different jobs.

    Robots.txt Meta robots tag
    A file at your site root A tag inside a page’s HTML <head>
    Controls crawling (whether a bot fetches the URL) Controls indexing (whether a fetched page appears in results)
    Applies to files, folders, and URL patterns Applies to a single page
    Cannot reliably remove a page from the index Can remove a page from the index with noindex

    Here’s the practical takeaway: to keep a page out of Google, use noindex, and do not block it in robots.txt. Those two instructions fight each other — if you block crawling, Google never fetches the page, so it never sees the noindex tag telling it to drop the page. The meta tag lives in the page’s head like this:

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

    Use robots.txt to manage crawling at scale (whole folders, parameters, budget). Use meta robots to control the indexing of specific pages. You can check what meta tags a page is actually serving with the ToolBrainy Meta Tag Analyzer.

    Robots.txt and XML sitemaps

    Robots.txt and your XML sitemap are two halves of the same conversation. Robots.txt tells crawlers where not to go; the sitemap tells them where you’d most like them to go. They work best together.

    Linking your sitemap from robots.txt is a small step with a real payoff — it helps search engines discover your important URLs without waiting to stumble across them through internal links:

    User-agent: *
    Disallow: /wp-admin/
    Allow: /wp-admin/admin-ajax.php
    
    Sitemap: https://yourdomain.com/sitemap.xml

    One rule that catches people out: never list a URL in your sitemap that you’ve blocked in robots.txt. You’d be sending a mixed signal — “please crawl this” and “don’t crawl this” about the same page. Keep the two files consistent. If you need to build or refresh your sitemap, the ToolBrainy Sitemap Generator produces a valid XML file you can point to from this exact directive.

    Crawl budget considerations

    “Crawl budget” is one of those phrases that sounds intimidating and turns out to be simple. It’s just the number of pages a search engine is willing to crawl on your site within a given timeframe, shaped by two things: how much crawling your server can handle without slowing down, and how much Google actually wants to crawl based on your site’s importance and freshness.

    For most small sites — a few hundred pages — crawl budget is a non-issue. Focus first on useful content, internal links, indexability, and server reliability; a small site is not guaranteed to have every URL crawled. It starts to matter when you have:

    • Tens of thousands of URLs or more.
    • Lots of auto-generated pages (faceted navigation, filters, calendars, internal search).
    • A large store with countless product-variant and sort-order URLs.

    On sites like those, robots.txt becomes a budget tool. By blocking the low-value, near-duplicate, and infinite-URL traps, you concentrate crawling on the pages that earn you traffic. Think of it as clearing the path so crawlers spend their limited time on your best work rather than wandering through filter combinations no human will ever search for.

    A few habits that protect crawl budget: block internal search results, block obvious parameter clutter, keep your sitemap clean and current, and fix or redirect long chains of broken and redirected URLs so crawlers aren’t chasing dead ends.

    Frequently asked questions

    Where should the robots.txt file be located?

    It must live in the root directory of your domain and be reachable at https://yourdomain.com/robots.txt. Crawlers only look in that exact spot — a robots.txt file placed in a subfolder is ignored. Each subdomain needs its own file too; blog.yourdomain.com uses its own robots.txt, separate from the main domain.

    Do I even need a robots.txt file?

    Not strictly. If you’re happy for search engines to crawl your entire site, you can skip it and nothing breaks. That said, having one is good practice — it lets you point to your sitemap, block low-value URLs, and gives you a place to make crawl decisions later. A simple, permissive file is better than none.

    Will robots.txt keep my page out of Google?

    No, not reliably. Blocking a URL stops crawling, but the page can still appear in search results if other sites link to it. To truly keep a page out of the index, use a noindex meta robots tag and allow crawling so Google can read that tag.

    How often do search engines check robots.txt?

    Google typically caches your robots.txt for up to 24 hours, so changes usually take effect within a day. If you’ve made an urgent fix, you can prompt a faster re-fetch through Google Search Console rather than waiting.

    Can I block AI crawlers like GPTBot in robots.txt?

    Yes. AI crawlers that respect the standard — such as GPTBot and ClaudeBot — read robots.txt like any other bot. Add a rule group naming the crawler and disallow what you want. Keep in mind this only works for bots that choose to obey; it isn’t an enforceable block.

    What happens if my robots.txt has a syntax error?

    Crawlers are fairly forgiving and will ignore lines they can’t parse, applying the rest. The danger is subtler: a malformed rule might silently fail to block what you intended, or an overly broad one might block more than you meant. That’s exactly why testing and validating before publishing is worth the two minutes.

    Bringing it all together

    Robots.txt rewards a little bit of care and punishes carelessness, which is why it’s worth understanding properly rather than copying a random file off a forum. Remember the essentials: it controls crawling, not indexing; an empty file or a robots.txt 404 generally places no robots exclusion restrictions on crawling; a lone Disallow: / can hide your whole site; and it should always be kept in sync with your XML sitemap.

    Start simple. Block the genuinely useless URLs — admin areas, internal search, cart and checkout on stores — point to your sitemap, and leave your real content and assets fully crawlable. Test the file, watch Search Console for a week, and adjust only when you have a specific reason to.

    Do that, and this tiny text file becomes exactly what it’s meant to be: a quiet, reliable doorman that sends crawlers straight to your best pages and keeps them out of the clutter. If you’d rather skip the hand-editing, the free Robots.txt Generator builds a valid file for you in seconds, and pairing it with the Sitemap Generator, Meta Tag Analyzer, and SERP Preview gives you a complete, no-signup technical-SEO toolkit to get the rest right too.

    Reference documentation

    Google robots.txt specification covers rule matching, response handling and caching. Check crawler-specific documentation before applying Google behaviour to another bot.

    Editorial note: Updated September 29, 2026 with AI assistance. Instructions were reviewed against the relevant tool implementation and documentation; examples are illustrative rather than claims of personal experience.