FREE CHECKLIST

Why isn't my site showing up on Google?

When a new site isn't getting indexed, the problem is almost always in the same few places. That goes double for a site vibe coded in an afternoon. Work down the list in order: every item tells you what to look at and how to fix it.

14 items · no sign-up · your ticks stay in this browser only

0 of 14 done

01

Access

Can Google even request the page? If this part is closed, nothing below it matters.

  • HOW TO CHECK

    WHY IT MATTERS

    One line closes the whole site to crawling. It gets added during development, and nobody opens the file again on launch day.

    HOW TO CHECK

    Open yourdomain.com/robots.txt. The line you want is "Disallow: /". If there is no "Allow" underneath loosening it, the entire site is closed.

    HOW TO FIX IT

    Delete the line. Blocking here and adding noindex to the page at the same time backfires: a blocked page is never read, so the noindex inside it is never seen either, and the URL hangs around untitled instead of dropping out.

  • HOW TO CHECK

    WHY IT MATTERS

    A meta robots noindex keeps a page out of the index on its own. Adding it during development and forgetting it at launch is a classic. The X-Robots-Tag header does the same job and is sneakier: it never shows up in the page source, so anyone checking with Ctrl+U assumes there isn't one.

    HOW TO CHECK

    Open the source with Ctrl+U and search for "noindex". For the header, use developer tools: Network tab, the page's own request, Response headers.

    HOW TO FIX IT

    Delete the tag. If the header is coming from your provider rather than your code, the problem is the environment, not the tag. See the next item.

  • HOW TO CHECK

    WHY IT MATTERS

    Preview URLs are born closed to indexing on most providers. That is why "I'm not on Google" is premature before you connect a domain. And if the preview URL stays reachable after you connect one, the same content is now published in two places.

    HOW TO CHECK

    Confirm your real address first. Then paste the old preview URL into the browser: if it still opens, you are not done.

    HOW TO FIX IT

    Connect the domain and set a permanent redirect from the preview URL to the real one. If your provider won't let you redirect, close the preview to indexing instead.

  • HOW TO CHECK

    WHY IT MATTERS

    Google does not log in. A password wall, a "coming soon" page, or an app that lives entirely behind authentication looks like an empty shell to it.

    HOW TO CHECK

    Open the site in a private window. What you see there is what Google sees.

    HOW TO FIX IT

    Make your landing, category and content pages reachable without an account. The product itself can stay behind the login; what needs indexing is the public side anyway.

02

Visibility

Can Google actually see the content? This is where vibe-coded sites get stuck most often.

  • HOW TO CHECK

    WHY IT MATTERS

    In single-page apps the server sends empty HTML and the text arrives once JavaScript runs. Google does run JavaScript, that part is true. But it does it in two passes: the HTML is crawled first, then the page goes into a separate queue. That queue does not move instantly and the share allocated to a new domain is small. The result is a site that looks completely unindexed for weeks.

    HOW TO CHECK

    Ctrl+U. Not the Inspect panel in developer tools, which shows you the page after JavaScript has run and will mislead you. In the raw source that opens, look for your heading and your first paragraph.

    HOW TO FIX IT

    Server-side rendering or static generation. Next.js, Nuxt and Astro do this by default; a project built on Vite and React needs it handled separately. If you can't touch the stack at all, at least get the title, description and main text into the HTML.

  • HOW TO CHECK

    WHY IT MATTERS

    Everything after the # in a URL is never sent to the server. The only address Google sees is the root; a page at /#/products does not exist for it.

    HOW TO CHECK

    Go to a sub-page and look at the address bar. If it contains a # or never changes as you click around, this item is red.

    HOW TO FIX IT

    Switch to history-based routing: createBrowserRouter instead of createHashRouter in React Router, createWebHistory instead of createWebHashHistory in Vue Router. You also need a server rule sending unknown paths to the app, or your pages will start returning real 404s.

  • HOW TO CHECK

    WHY IT MATTERS

    Google gets around a site by following links. A button that swaps the page through onClick works in a browser but leaves nothing in the HTML to follow. That page stays orphaned even when it is listed in the sitemap.

    HOW TO CHECK

    Search the source for your menu and category links. What you are looking for is an a href.

    HOW TO FIX IT

    Use real links in navigation; your library's Link component counts. It can look like a button, that part doesn't matter. What matters is a destination written into the HTML.

03

The right URL

Does Google know which URL to index?

  • HOW TO CHECK

    WHY IT MATTERS

    This tag tells Google "the real address for this content is here". In starter templates it is often left hardcoded, pointing at the template's own site or the preview domain. Google then indexes that address instead of yours, and treats yours as the copy.

    HOW TO CHECK

    Search the source of four or five different pages for "canonical". Each should carry that page's own full address. If they all say the homepage, or a different domain shows up, this is your problem.

    HOW TO FIX IT

    Generate the value per page. If you can't produce the right one, remove the tag entirely. Google will pick an address itself, and at least it will pick one of yours.

  • HOW TO CHECK

    WHY IT MATTERS

    http and https, www and non-www: these are four separate addresses to Google. If all four open, you have published the same content four times and none of the four builds up value on its own.

    HOW TO CHECK

    Type all four into the address bar and see. They should all land on the same address.

    HOW TO FIX IT

    Pick one as the real address and 301 the other three to it. Most hosting panels have a switch for this.

  • HOW TO CHECK

    WHY IT MATTERS

    Google treats pages carrying the same title as copies and leaves most of them out. On generated sites the title usually sits exactly where setup left it: "Create Next App", "Vite + React", or the name of the project folder.

    HOW TO CHECK

    Open a few sub-pages and read the browser tab. If the same text is sitting there every time, this item is red.

    HOW TO FIX IT

    Generate the title and description per page. Around 50-60 characters for the title and 120-160 for the description works; both should say what that page is about rather than repeating the product name.

  • HOW TO CHECK

    WHY IT MATTERS

    A sitemap guarantees nothing, but it hands your list of addresses straight to Google. On a new site whose internal linking is still thin, it is the fastest way to get pages discovered.

    HOW TO CHECK

    Does yourdomain.com/sitemap.xml open, and are there real addresses in it? Then confirm the "Sitemap:" line is still in robots.txt.

    HOW TO FIX IT

    Turn on your tooling's sitemap generator, add the "Sitemap:" line to robots.txt, submit it in Search Console. Those are three separate jobs and doing one while skipping the others is common.

04

Content quality

Does Google consider these pages worth indexing?

  • HOW TO CHECK

    WHY IT MATTERS

    Single-page apps return the homepage with a 200, a "success" status, for every unknown path. Google calls this a soft 404. The consequence: every invented or previously existing address looks like a page, crawl budget goes to those ghost addresses, and your real pages never reach the front of the queue. The bigger the site, the wider the gap.

    HOW TO CHECK

    Visit yourdomain.com/this-does-not-exist-12345. If the homepage or any normal page opens, you have soft 404s. The "Soft 404" row in the Pages report in Search Console says the same thing.

    HOW TO FIX IT

    Return a real 404 for unknown addresses. But if the address used to exist, a 404 isn't the right answer either: redirect it to its new equivalent with a 301. That is the only way the value built up on the old address carries over.

    How does no404 solve this?
  • HOW TO CHECK

    WHY IT MATTERS

    Pages that are three sentences long, half of them still placeholder text, don't get indexed. Google gives a new domain a limited budget; if what it sees first is weak, it puts the rest on hold.

    HOW TO CHECK

    Open the Pages report in Search Console and look at the "Crawled - currently not indexed" row. Those addresses are usually the ones judged too thin.

    HOW TO FIX IT

    Fill in the pages worth publishing first. You don't have to delete the rest, marking them noindex is enough.

  • HOW TO CHECK

    WHY IT MATTERS

    Search Console won't speed up indexing. But it is the only place that answers "why wasn't this indexed", and without it you have been checking the thirteen items above by guesswork.

    HOW TO CHECK

    Go to search.google.com/search-console, add a property, verify your domain.

    HOW TO FIX IT

    Add the property, submit the sitemap, run one page through the URL Inspection tool. On a new site, first indexing taking a few days to a few weeks is normal.

VIBE CODING AND INDEXING

Why do vibe-coded sites take longer to show up on Google?

The list applies to any site. But if you described the site to a chat window and shipped what came out, the same three items come up red almost every time. The cause is the tools' defaults.

The default output is a single-page app

Site builders generate a browser-side single-page app (SPA) for speed and easy previews. It feels fast to click through, but it is the hardest possible starting point for first indexing.

Everything is built on the preview URL

The site is developed on a preview domain, so canonical, sitemap and robots values are generated against that domain and then stay there. After you move to your own domain they keep pointing at the wrong place, and nobody notices.

Nothing is decided on the server

HTTP-level decisions like status codes, redirects and 404s are never made at all on static hosting. Visitors don't notice anything, but for Google half the site stays undefined.

THE MOST OVERLOOKED ITEM ON THE LIST

Soft 404s: returning the homepage for an address that doesn't exist

A site that returns its homepage for an address that doesn't exist is offering Google an unlimited supply of fake pages. The bigger the site, the worse it gets: every deleted product in a shop, every renamed post on a blog becomes one more fake page. Over time your Search Console report fills up with "crawled - currently not indexed".

This is the one item out of fourteen that no404 solves. And when the address used to exist, a 404 doesn't help either: no404 compares the incoming address against your site's current catalog, finds the closest valid page and sends the visitor there with a permanent redirect. When nothing matches, the page stays a 404 and we don't invent a destination for it. The other thirteen items are on your side.

COMMON QUESTIONS

About indexing

Why is my vibe-coded site nowhere on Google?
Usually three things stack up: the content isn't in the raw HTML, the canonical still points at the preview URL, and missing addresses return the homepage instead of a 404. All three come from the tools' defaults. Work through Visibility first and The right URL second; the remaining items won't help until those two are clear.
How do I know whether my site is on Google at all?
Search Google for site:yourdomain.com. No results means the site isn't indexed. A few pages means it is partly indexed, which tells you something too: access is working and the problem is further down the list. The count that search shows is approximate; the exact number is in the Pages report in Search Console.
How long does it take for a new site to be indexed?
Anywhere from a few days to a few weeks is normal. With a sitemap submitted and none of the blockers above, the first pages usually appear within a week, though crawling the whole site can take months. If it has been over a month and Search Console shows no reason, it usually comes back to the access or visibility items.
Search Console says "not indexed". What does that actually mean?
There are two similar-looking rows in the Pages report and they say different things. "Discovered - currently not indexed": Google knows the address but hasn't been to look yet. That is a queue problem, and internal links plus a sitemap help. "Crawled - currently not indexed": it went, it looked, and it didn't think the page was worth indexing. That second one is about content, so go to the Quality section of the list.
Can I force Google to index my site?
No. The URL Inspection tool in Search Console lets you request indexing for a single address, and that does help for that one page, but Google still makes the call. Requesting indexing will not make a blocked page, or one whose content it can't see, indexable.
Does Google index JavaScript sites?
It does, when their turn comes. The detail is in the Visibility section above; the short version is that if your content is in the raw HTML, you never wait in that queue.
Is submitting a sitemap enough on its own?
No, a sitemap only gets your list of addresses to Google. A page that is blocked, marked noindex or judged too thin will not be indexed just because it is on that list.
Do I need backlinks to get indexed?
Not strictly. A site set up in Search Console with a submitted sitemap gets indexed without any backlinks. A new domain with no incoming links just gets crawled more slowly.
Where does no404 fit into this list?
In exactly one item: the right answer for missing and deleted addresses. no404 compares the incoming address against your site's current catalog and redirects to the closest valid page; if nothing matches, it leaves the page as a 404. The other thirteen items on the list are not something no404 solves. Those stay with you.

Next step: broken links

Once the indexing blockers are cleared, the next thing to deal with is the broken links inside your own site. They lose visitors and waste crawl budget at the same time.