Vibe coded website SEO usually fails before anyone reads a word. Most sites built with an AI builder send Google and AI assistants a nearly empty file and fill in the page with JavaScript later, so the fix is to make every page ship as real HTML first, then give each page its own title and description, and only then touch the copy.
This matters more to an AI founder than to most. You know what your product does, and the site you shipped in a weekend says it clearly when you open it in Chrome. A crawler does not open it in Chrome. It reads the raw file, and on most vibe-coded sites that file holds almost nothing, so the stranger who asked about your category never meets you.
Thirty lines of source and one empty div
Picture an example: an AI tool that checks building plans against the local code before an architect files for a permit. Its marketing site was built over a weekend in an AI builder. In the browser it looks finished. A hero that reads Catch code issues before the plan checker does, a screenshot of a marked-up floor plan, three pricing tiers and an FAQ.
Now press Ctrl+U to view the source of the homepage. There are about thirty lines. The body holds one div with the id root, empty, and one script tag pointing at a file named something like index-B7xQ2.js. The headline, the pricing and the FAQ are not in the file. That script builds all of them after the page loads.
Keep going. The browser tab says Vite + React + TS on the homepage, on /pricing and on /security, because nobody changed the title from the template. Every route carries the homepage description. Typing /sitemap.xml into the address bar shows the hero again, not a sitemap. So does /robots.txt. So does /this-page-does-not-exist, and it answers with a 200 status, which tells Google the page is real. And Pricing in the nav is a button that swaps the view in JavaScript, not a link with an address of its own.
He checks the company name in Google most mornings
The founder in this example has rewritten the hero headline twice this month. He types the company name into Google most mornings, and the first results are his LinkedIn page and a launch post. Search Console, connected the week he launched, lists four pages as indexed and eleven as Discovered, currently not indexed. He has opened that report and closed it without knowing what to do with it.
He asks ChatGPT what his company does and gets a confident paragraph about a different company with a similar name. He reads that as an awareness problem and books a copywriter. The copywriter will do good work, and it will live inside a JavaScript file that many of the readers he cares about never run. He knows the product better than anyone, and the one place a stranger meets it is a file that only renders for people who already found him.
Google can render JavaScript. The assistants mostly cannot.
The usual reassurance is that Google renders JavaScript now. That is half true. Google's own JavaScript SEO guide describes three phases, crawling, rendering and indexing, and says a page can sit in the render queue for a few seconds, though it can take longer than that. The same guide still calls server-side or pre-rendering a great idea, partly because not all bots can run JavaScript.
The bots that cannot are the ones your buyers now ask. Vercel looked at AI crawler traffic on its network and found that none of the major AI crawlers render JavaScript, naming GPTBot, ClaudeBot and PerplexityBot among them. They fetch the script file and never run it. Google's Gemini is the exception the study names, because it rides on Googlebot. So when a founder in your category asks an assistant for tools like yours, that assistant is working from a crawl that saw your empty div.
Why fixing the copy first is wasted effort
Most advice for a vibe-coded site starts with the words: name the customer, show the product, cut the jargon. That advice is right, and we give it ourselves in our four fixes for a vibe-coded website. If you are still deciding whether your site reads as vibe-coded at all, how to tell a vibe-coded site from a designed one covers the tells a visitor sees. This post is about the tells nobody sees.
Here is the part most advice skips. On a client-rendered site, a sharper headline changes what your existing visitors read. It does nothing for the people who have not found you yet, because the crawler that decides whether they find you sees the same empty file before and after the rewrite. Rendering decides whether the words count. Titles decide whether a page can rank for anything specific. Copy decides whether the visitor stays. Do them in that order, or your best sentences go to an audience of you and the people who already know you.
What an unreadable site costs before the A
Search is the one channel where the hundredth visitor costs the same as the first, which is nothing per click. A site that cannot be indexed closes it. Every visitor then has to be bought, with ads, outbound, or the founder's own evenings on LinkedIn, and acquisition cost lands whether or not anyone understands the page. You swap a channel that compounds for one that resets every month.
The assistant gap is quieter. If the crawlers behind those assistants read an empty page, you are left off the shortlist, and no event in your analytics records a visit that never happened. Meanwhile the clock runs. The median gap from seed to Series A is around 616 days across all sectors, and search takes months to build. Every month the site stays unreadable comes out of that window, and an investor who searches your name before the second meeting finds a LinkedIn page instead of the company you have become.
Check yours in five minutes
You need a browser, a terminal and Search Console. No engineer.
- View the source of the homepage and of /pricing (Ctrl+U, or Cmd+Option+U on a Mac). Search the source for your headline. If it is not there, any crawler that skips JavaScript sees nothing.
- In a terminal, run curl -s on three of your addresses and look for the title line in each. If all three titles match, Google sees one page three times.
- Open /sitemap.xml and /robots.txt. You should get a plain list of addresses and a short text file. If you get your homepage, you have neither.
- Open a made-up address such as /zzz. A real site shows a not-found page. If you see your homepage, the server says every address exists, which Google treats as a soft 404.
- Right-click Pricing in the nav. If the menu does not offer Open link in new tab, it is a button. Google only discovers links that are real anchor tags with an href.
- In Search Console, run URL Inspection on /pricing, choose Test live URL, then View tested page. Read the HTML tab, not the screenshot.
- Ask ChatGPT and Perplexity what your company does, and save the answers. Ask again a month after the fix.
The fix order, and when to move the site
If two or more of those checks failed, fix in this order. First, ship HTML: add a pre-render step to the build so each route is written out as its own file with the words inside it, or move to a stack that does this by default. Second, give every route its own title, meta description and Open Graph tags, the image and line a link shows when someone pastes it into Slack. Third, generate a sitemap of real addresses, point robots.txt at it, return a true 404 for everything else, and submit the sitemap in Search Console. Fourth, turn nav buttons into links. Only then rewrite the copy.
Whether to keep the build comes down to who edits it. If the site is under about fifteen marketing pages and someone who is not an engineer will change it every week, move it to Framer or Webflow, which publish each page as HTML with its own title and description fields. If it shares components with the product or will hold hundreds of generated pages, such as integrations or comparisons, use Next.js with static pages and check the source of every route before launch. Keep the vibe-coded build only if an engineer owns the pre-render setup and the copy rarely changes.
There is a neat example of the first path. Dualite is itself an AI vibe-coding tool, where people ship apps by prompting. For its own marketing site, we led brand direction and designed and built it in Framer. The case study quotes its co-founder saying the new site gave them a better impressions-to-signup ratio. If you would rather hand the move to someone, our ranking of design agencies for startups replacing a vibe-coded site compares who does it well.
Studio Maydit designs and builds marketing sites for AI founders in Framer, Webflow and custom code, and we start where this post starts: with the source a crawler receives, before anyone argues about the headline. A fixed-scope project runs three to four weeks and ends with a site that a stranger, a search engine and an assistant can all read as the company you are now. If you want a straight answer on whether yours needs a pre-render step or a move, book a 30-minute call with Studio Maydit.





