Many AI-built sites have a finished link preview and an empty page

Published 402registryabout 6 minutes to read

77% of empty AI-built pages had a finished link preview: a robot holds a glowing picture card before an empty glass browser.

On 27 September 2026 we fetched 105 sites made with AI app builders the way a crawler fetches them, without running any JavaScript. On 62 of them (59%) the crawler found under 300 characters a person could read. Yet 48 of those 62 carried a complete link preview: an image, a description and a card type for X. Paste such a link into a chat and it looks like a finished site. Read the HTML behind it and there is almost nothing there.

A link preview is assembled from a handful of tags in the <head> of the page, and so are the title and summary that a search engine or an AI crawler starts from. None of it appears in the browser window, which is why the owner of a site rarely looks. We read those tags on the same sites three times. The empty pages themselves are the subject of our first measurement; this one is about what sits in front of them, and about the defaults the builder put there that nobody replaced.

What we measured

  • The sites. The 120 AI-built sites from our first run on 20 September; the largest share came out of the Made with Lovable showcase. On 27 September 105 answered with HTML. 5 established, server-rendered sites went through every step as a control group.
  • One request per site, sent under our own bot name. Redirects were followed only when the server issued them, and nothing on the page was executed. We kept the response headers, the Open Graph and X card tags, any <noscript> block, and any script that sends the visitor to a different address.
  • The builder’s defaults come from the first run, 20 September: which sites still had the template’s title, description or preview image.
  • A real preview service. On 18 October we passed 38 of these addresses through the link-card service that the Bluesky app calls when someone pastes a URL, and compared each card with the tags on the page. X, LinkedIn, Facebook and Slack build their previews only for a signed-in account, so we did not test them.

The results

27 SeptemberAI-built (n = 105)Control (n = 5)
Fewer than 300 visible characters without JavaScript62 (59%)0
… and still a complete preview: og:image, og:description and twitter:card48–
Has an og:image92 (88%)5
og:image is a path, not a full address90
No twitter:card13 (12%)0
Text inside <noscript>60
A script that redirects the visitor to another address30
20 SeptemberAI-built (n = 104)
The preview image is the builder’s own advertisement15 (14%)
The title is still “Lovable App”6
The description is still “Lovable Generated Project”11 (11%)
No description at all4

Previews that advertise the builder

On 20 September, 15 of the 104 live sites pointed og:image at the stock picture that Lovable puts into a new project: the Lovable logo above the line “Build apps and websites by chatting with AI”. 13 of them were on lovable.app addresses and 2 on domains of their own. Shared anywhere, such a link shows a card for the builder instead of the site.

A month later nothing had moved. On 18 October all 15 still had the stock image in their HTML, and the Bluesky card for 14 of them displayed it. All 15 were also empty without JavaScript. We read that pairing as a sign of one thing: nobody had opened the head of the file, and the empty body lives in the same file.

The template’s other defaults travel with it: the title “Lovable App” on 6 sites, and the description “Lovable Generated Project” on 11. That is the title a search engine starts from, and on an empty page a crawler has nothing better to go on.

A path in og:image did less harm than we expected

Of the 92 sites with an og:image, 9 wrote it as a path on their own server, such as /images/share.jpg, instead of a full https:// address. The Open Graph protocol defines its URL values as addresses that use http:// or https://, and SEO checklists routinely call a bare path a broken preview. We expected cards without a picture.

Bluesky disagreed. On 18 October 7 of the 9 still used a path, and the service completed every one of them with the site’s own address and showed the image. The 9 sites with full addresses that we sent alongside them, and the 5 control sites, got their images as well, while a page with no og:image got a card with no picture. So the service is not simply attaching something to every link.

A path is therefore not fatal everywhere. We could not check the previews that need a signed-in account, so for X, LinkedIn, Facebook and Slack the question stays open. A full address costs nothing and closes it.

Text for a reader without JavaScript

The <noscript> element holds content for visitors that do not run scripts. 6 of the 105 sites had text in one. Only 2 of them were among the 62 empty pages, and they used it well: the name of the site and a line about what it does, in an HTML file that otherwise carried a script tag and very little else. The other 4 already had plenty of visible text.

We cannot see from outside whether a particular AI crawler keeps or drops <noscript> text. It is a cheap fallback, not a fix. Rendering the page on the server, or prerendering it at build time, puts the words in front of every reader regardless of what that reader does with scripts.

Redirects that only a browser follows

On 3 sites a script moved the visitor elsewhere: from www to the bare domain, or from http:// to https://. A browser runs it. A crawler that skips JavaScript never does. On 2 of them the server also answered with a 301, so nothing was lost. On the third, the www address had answered our first run with the whole page and a 200. For a crawler that meant two copies of one site; for an owner testing in a browser, a redirect that appeared to work.

How to see what the machines see

1. Read your own head. This lists the tags your preview is built from:

curl -s https://your-site/ | grep -Eo '<meta (property|name)="(og|twitter):[^>]*>'

If the image belongs to your builder, or the title is the template’s, that is the first thing to change.

2. Replace the defaults in index.html, or in your framework’s metadata: your own title, a description of one or two sentences, and an image that shows your product.

3. Write og:image as a full address that starts with https:// and your domain. Bluesky forgives a path. There is no need to find out who else does.

4. Check the page, not the card. A finished preview says nothing about the body. Take a sentence you can see on your site and count it in the raw HTML; 0 means a crawler that skips JavaScript misses it too:

curl -s https://your-site/ | grep -c "a sentence you can see"

5. Redirect on the server. The first line should show a 301. A redirect that exists only in a script does not exist for a crawler.

curl -sI http://www.your-site/ | head -1

Caveats

These are three snapshots of the same sites, taken on 20 September, 27 September and 18 October 2026, and every number above carries its date. A single builder’s showcase supplied the bulk of the sample, so the defaults we found are that builder’s defaults; people who build elsewhere will leave other ones behind.

We tested a single preview service. X, LinkedIn, Facebook and Slack may treat a path in og:image differently from Bluesky, and we did not check whether each preview image loads at a size those networks accept. Nor can we observe which tags an AI crawler actually uses: whether it reads Open Graph, a meta description or <noscript> text at all is decided inside the crawler, where we cannot look.