Why is your staging site showing up in Google search?
Usually because it was reachable, linked from somewhere, and never told search engines to stay out. Blocking crawlers in robots.txt alone does not reliably fix it. Google's own documentation says robots.txt is not a mechanism for keeping a page out of Google. You need noindex, password protection, or both.
This happens on almost every platform. A staging copy lives on a subdomain such as staging.example.com, or on a platform default address like a webflow.io site. Someone shares a preview link in a public channel, a tool crawls it, or an old sitemap points at it, and suddenly buyers can land on half-finished pages.
The damage is real even if it looks minor. Duplicate copies of your pages compete with the live site, old pricing or messaging can surface, and AI assistants that retrieve from search may quote the wrong version. Here is how I think about the controls and the order I apply them.
What is the difference between crawling and indexing?
Crawling is a search engine fetching a page. Indexing is the engine storing that page so it can appear in results. Robots.txt controls crawling. The noindex rule controls indexing. Mixing them up is the most common reason staging sites leak, because teams block crawling and assume that also blocks indexing.
Google's robots.txt introduction is direct about this. It says that if other pages point to a URL with descriptive text, Google could still index the URL without visiting the page. Such a URL can still appear in search results, just without a description. So a blocked staging page can show up as a bare link.
That bare listing is often what people notice first. A search for the brand name shows the live site and, a few lines down, a staging URL with no snippet. The robots.txt block is working as designed. It stopped the crawl. It just never prevented the URL from being known and listed.
Why can robots.txt make the problem worse?
Because a crawler blocked by robots.txt never sees a noindex rule on the page. Google's documentation on blocking indexing says the page must not be blocked by robots.txt for noindex to work, or the crawler will never see the rule. Teams who add both often cancel out the one that matters.
This is the trap. Someone adds a noindex tag to staging, then a colleague adds a robots.txt disallow to be extra safe. Now Google cannot fetch the page, cannot see noindex, and may keep any URL it already knew about. The extra safety step removed the actual protection.
Google also states that specifying noindex inside robots.txt is not supported. Older advice sometimes suggested a noindex line in robots.txt. If your staging setup relies on that, it is doing nothing for Google. Move the rule into the page or the HTTP header where it belongs.
Which control actually keeps staging out of Google?
Password protection is the strongest, because crawlers cannot fetch content behind a login at all. Noindex is the next best, and works when crawlers can reach the page and read the rule. Google's robots.txt guide lists both noindex and password protection as the ways to keep a page out of search results.
For noindex, Google's documentation describes two implementations: a robots meta tag in the page head, or an X-Robots-Tag HTTP response header. It says that when Google sees the rule, it will drop the page from search results regardless of whether other sites link to it. That is the behavior you want for staging.
The header approach is handy for staging environments because it can be applied to every response from the subdomain at the server or CDN level, including PDFs and images. I explained when a header beats a meta tag in what an X-Robots-Tag header does that a meta tag cannot. For many teams, a single header rule is the cleanest fix.
How should you handle a Webflow staging subdomain?
Use Webflow's built-in indexing control for the staging subdomain, then confirm the result yourself. Webflow's help center has articles on the staging subdomain and on disabling search engine indexing. Check those for the current setting location and plan requirements, since platform settings and plan rules change over time.
After changing any platform setting, verify what the staging subdomain actually serves. Fetch its robots.txt, view the page source of a few pages, and look for a robots meta tag or an X-Robots-Tag header. You want to know whether the platform is blocking crawling, adding noindex, or both, because that decides how already indexed URLs behave.
Remember that a staging setting usually covers only the staging address. If you have also connected a custom staging domain, treat it as a separate site with its own controls. Webflow is the build layer for many of the sites I work on, and this two-domain gap is an easy one to miss.
What if staging pages are already indexed?
Let Google recrawl the pages and see noindex. Make sure robots.txt allows crawling of those URLs, add noindex through a tag or header, and wait for Google to revisit. If you need the listings gone quickly, use Search Console's removal tool as a temporary measure while noindex does the permanent work.
Ordering matters. If you password protect pages that are already indexed, Google may eventually drop them, but it cannot read a noindex rule behind a login either. For a fast clean up, many teams first apply noindex while the pages are open, wait until the URLs fall out, then add password protection for the long term.
Search Console's removal tool is useful but limited, and it is not a substitute for noindex. I covered when it helps and when it does not in when to use the Search Console removals tool. Verify the staging subdomain as its own property if you need to act on it directly.
How do you stop staging from leaking again?
Make protection part of the launch checklist and the environment itself, not a manual step someone remembers. Apply a noindex header to every staging response by default, put staging behind a password where the platform allows it, and keep staging out of sitemaps and canonical tags. Then check it monthly.
Canonical tags deserve special attention. If staging pages carry canonical tags pointing at themselves, they look like independent pages. If a copied template leaves staging canonicals inside the live site, you have a worse problem in the other direction. Check both environments whenever templates are copied between them.
The launch moment is the riskiest. When you move a site from staging to a new domain, protections can be copied to production by mistake, which blocks your live site. My list of what to check before you point a domain at a new site includes removing staging noindex from production before launch.
How would I audit a staging setup in ten minutes?
Search Google for site: plus your staging hostname to see what is indexed. Fetch the staging robots.txt. Open the page source of the homepage and one deep page and look for noindex. Check response headers for X-Robots-Tag. Try an incognito window to confirm whether a password prompt appears.
Then do the same checks on production, looking for the opposite problem. Production should not carry noindex or a blanket disallow. It is surprisingly common to find a live site that inherited staging protections and quietly vanished from search for weeks after a relaunch.
Write the results down with the date. If staging URLs are indexed, note whether they are blocked by robots.txt, because that tells you the first fix is to unblock crawling and let noindex be seen. A short written audit also gives the next person a baseline when the site is rebuilt.
What should you do next?
Run the ten minute audit on your staging and production hostnames today. If staging is indexed and robots.txt blocks it, remove the block, add noindex through a header or meta tag, and let Google recrawl. Add password protection afterward. If production shows any noindex, remove it before anything else.
Then make the fix permanent. Put a default noindex header on the staging environment, add a staging check to your launch checklist, and verify both hostnames once a month. That turns a recurring scare into a routine that takes a few minutes.
If you want help auditing your environments or setting up the headers and checks so staging never leaks again, reach out through pravinkumar.co. I build websites and the automations behind them for lead generation, and keeping the right pages visible is the foundation of that work.
Get found, cited and the back office automated
Let's make your site the source AI engines quote and wire up the systems behind it.
Read more blogs
Let's get your website found and cited by AI
Tell me what you're working on, whether AI search is skipping your product, your back office is buried in manual work, or you need a build that does both.