---
title: "Lovable Link Previews Not Working? Fix OG Images and Meta Tags (2026) | Encited Blog"
description: "Blank or duplicate link previews on a Lovable site: the three causes, the fix for each stack, image specs, and how to force every platform to rescrape."
lang: en
json-ld: |
  [
    {
      "@context": "https://schema.org",
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": " https://encited.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": " https://encited.com/blog"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Lovable Link Previews Not Working? Fix OG Images and Meta Tags (2026)",
          "item": " https://encited.com/blog/lovable-og-image-link-preview"
        }
      ]
    },
    {
      "@context": "https://schema.org",
      "@type": "Article",
      "headline": "Lovable Link Previews Not Working? Fix OG Images and Meta Tags (2026)",
      "description": "Blank or duplicate link previews on a Lovable site: the three causes, the fix for each stack, image specs, and how to force every platform to rescrape.",
      "image": " https://encited.com/blog/thumbnails/lovable-og-image-link-preview.webp",
      "datePublished": "2026-09-16",
      "dateModified": "2026-09-16",
      "author": {
        "@type": "Person",
        "name": "Aki from Encited"
      },
      "publisher": {
        "@type": "Organization",
        "name": "Encited.com",
        "alternateName": "LovableHTML.com",
        "logo": {
          "@type": "ImageObject",
          "url": "https://encited.com/brand/logo.svg"
        }
      },
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": " https://encited.com/blog/lovable-og-image-link-preview"
      }
    },
    {
      "@context": "https://schema.org",
      "@type": "HowTo",
      "name": "Fix Open Graph link previews on a Lovable site",
      "description": "Repair blank, duplicated or outdated link preview cards on a Lovable site by moving Open Graph tags per route, fixing the image, and forcing each platform to rescrape.",
      "totalTime": "PT30M",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Identify which Lovable stack you are on",
          "text": "Open the live site and use View Source, not the inspector. An empty div with id root means the Vite stack. Real body content in the source means the TanStack stack. A routeTree.gen.ts file in the repository is the same signal from the code side."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Move Open Graph tags out of index.html",
          "text": "On TanStack, add a head export to each route file returning route specific title, description, og:title, og:description, og:image, og:url, og:type and twitter:card. On Vite, create an SEOHead component with react-helmet-async, then remove the static title, description, canonical and social tags from index.html so they cannot override the per page values."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Confirm the route is server rendered",
          "text": "On TanStack Start each route carries an ssr flag. Search the routes folder for ssr: and set any route people share links to as ssr: true. A route set to ssr: false is client rendered and its head tags are invisible to scrapers."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Use a preview image that every scraper accepts",
          "text": "Export the image at 1200 by 630 pixels as PNG or JPEG, not WebP, keep it under 300 KB, store it in the public folder, and reference it with an absolute https URL in og:image."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Force each platform to rescrape the URL",
          "text": "Run the URL through Facebook's Sharing Debugger and press Scrape Again two or three times, then LinkedIn's Post Inspector and X's Card Validator. Slack, WhatsApp, Discord and iMessage have no public tool, so repost the link with a query parameter such as ?v=2 to bypass the stored unfurl."
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Verify what the scrapers receive",
          "text": "Check the card with an OG image previewer and read the raw served HTML with a crawler simulator as facebookexternalhit and LinkedInBot. Test the homepage, a static route and a dynamic route, because they fail in different ways."
        }
      ]
    },
    {
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Why does every page on my Lovable site show the same preview?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "The Open Graph tags are in index.html, which is the response for every route, so every URL hands the scraper the same card. The fix is per route tags: a head export on each route on TanStack, or an SEOHead component on Vite followed by deleting the static tags from index.html."
          }
        },
        {
          "@type": "Question",
          "name": "Why does WhatsApp show no preview at all?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Across the Lovable sites we tested, WhatsApp received no card at all, while LinkedIn and X got the right title with the wrong image. WhatsApp offers no debugger, so share the URL with a query parameter such as ?v=2 to see what a first time scrape returns, and use a crawler simulator to confirm whether the tags are in the served HTML."
          }
        },
        {
          "@type": "Question",
          "name": "How do I clear the LinkedIn preview cache?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Paste the URL into LinkedIn's Post Inspector. One inspection refetches the page and replaces the stored card. Publish the tag change first, otherwise you re-cache the old card."
          }
        },
        {
          "@type": "Question",
          "name": "Does Lovable's SSR fix link previews?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Partly. On a TanStack project, tags in a route's head export are in the served HTML and scrapers read them, as long as that route is ssr: true. On an older Vite project, we could not verify Lovable's automatic pre-rendering is reaching social scrapers, and we found Slack and iMessage still falling back to root index.html metadata on every URL."
          }
        },
        {
          "@type": "Question",
          "name": "Can I use a WebP image for og:image?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "No. Facebook's scraper still rejects WebP, and a rejected image produces the same empty card as a missing tag. Use PNG for images with text or a logo and JPEG for photographs, at 1200 by 630 pixels and under 300 KB."
          }
        },
        {
          "@type": "Question",
          "name": "How do I set a different image per blog post?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "On TanStack, fetch the post in the route loader and read loaderData inside the head function to build og:title, og:description and og:image from the post record. The data must come from the loader, not from a hook inside the component. On Vite there is no server to write the tag before the response is sent, so a dynamic route needs either a move to TanStack or a pre-render layer that stores the finished HTML per URL."
          }
        }
      ]
    }
  ]
---

[![Encited logo](/brand/logo.svg)](/)

-   Features
-   Resources

[Pricing](/pricing)Login[Contact Sales](/contact-sales)Get started free

Get started free

![Lovable Link Previews Not Working? Fix OG Images and Meta Tags (2026)](/blog/thumbnails/lovable-og-image-link-preview.webp)

# Lovable Link Previews Not Working? Fix OG Images and Meta Tags (2026)

September 16, 2026 · by Aki from Encited 

Blank or duplicate link previews on a Lovable site: the three causes, the fix for each stack, image specs, and how to force every platform to rescrape.

![](/logos/chatgpt.svg)Open in ChatGPT

Table of contents 

You paste your Lovable site into Slack and get a bare URL. You share a blog post on LinkedIn and the card shows your homepage image. Someone forwards it in WhatsApp and there is no card at all. Those are three symptoms of one thing: the scraper that built the card read different HTML than your browser did.

This page covers what to check, what to change on each of the two Lovable stacks, and how to make every platform read your page again. It is a support page for the [Lovable SEO guide](/blog/fix-lovable-seo), which carries the rest of the technical checklist.

## [](#the-quick-fix)The quick fix

If you want the four things to check before reading any further:

1.  **Size and format.** One image at 1200x630, PNG or JPEG. Not WebP. Facebook's documentation still lists only JPG, PNG and GIF, and anything under 600x315 gets a small square thumbnail or nothing.
2.  **Absolute URL.** `og:image` must be a full `https://` address, not `/og.png`. Scrapers do not resolve relative paths.
3.  **Tags in the first response.** View source, not Inspect Element, and search for `og:`. If the tags are missing from the raw HTML, no scraper ever saw them.
4.  **Rescrape.** Paste the URL into the [Meta Sharing Debugger](https://developers.facebook.com/tools/debug/) and press Scrape Again two or three times. Each platform caches separately, so repeat per platform.

html

Copy Download 

< meta  property \= " og:title "  content \= " Your page title "  /> 

< meta  property \= " og:description "  content \= " One clear sentence. "  /> 

< meta  property \= " og:image "  content \= " https://yourdomain.com/og-image.png "  /> 

< meta  property \= " og:url "  content \= " https://yourdomain.com/page "  /> 

< meta  property \= " og:type "  content \= " website "  /> 

< meta  name \= " twitter:card "  content \= " summary\_large\_image "  /> 

If that did not fix it, the rest of this page explains why.

One term, defined once. Open Graph, written `og` in the markup, is a set of `<meta>` tags in the page head that tell Facebook, LinkedIn, Slack, WhatsApp, Discord, iMessage and X which title, description and image to put on the card. X reads its own `twitter:` tags first and falls back to Open Graph. Every one of these platforms fetches those tags with a single HTTP request and reads what comes back. None of them run your JavaScript.

## [](#why-your-lovable-link-preview-is-not-working)Why your Lovable link preview is not working

Three causes, in the order you will hit them.

### [](#the-tags-are-in-indexhtml-so-every-page-shares-one-card)The tags are in index.html, so every page shares one card

A Lovable project keeps one set of Open Graph tags in `index.html`. That file is the response for every route, so `/pricing`, `/blog/how-we-built-it` and `/` all hand the scraper the same title, description and image. Nothing is broken. The site-level card is doing its job on a page-level link.

This is the most common cause, and it is the one people misread as a caching problem. The tell is that the card is correct, just correct for the wrong page.

### [](#the-platform-cached-an-old-scrape)The platform cached an old scrape

Platforms scrape a URL once and keep the result. Facebook and LinkedIn hold a card for weeks. So you fix the tag, publish, reshare, and still get the old image back. Nothing you do in Lovable clears that. There is a per-platform list further down.

### [](#the-tag-never-existed-as-far-as-the-scraper-is-concerned)The tag never existed as far as the scraper is concerned

If your tags are set with `react-helmet-async`, React adds them to the document after the bundle loads and runs. Your browser shows them in the inspector, so the tags look fine. The scraper asked for the URL, got the HTML off the wire, read the head and stopped. The tag your component would have added was never in that response.

Googlebot has a second pass where it renders JavaScript. Social scrapers do not have a second pass.

## [](#what-linkedin-whatsapp-slack-and-imessage-show-today)What LinkedIn, WhatsApp, Slack and iMessage show today

In May 2026 Lovable published its [SEO and AEO page](https://lovable.dev/seo-aeo). Two claims on it matter here: new projects ship on TanStack Start with server-side rendering, and older Vite projects get an automatic pre-rendered snapshot served to crawlers, free on every tier with nothing to switch on.

Both are real, and neither one finishes the job for link previews. We tested this across more than 50 live Lovable sites. The findings that bear on cards:

-   We could not verify the automatic pre-rendering is being applied. We asked ChatGPT, Claude and Gemini to read the pages after the update and ran the same URLs through a crawler simulator, and the responses carried no page content. Lovable documents no way to check it, and you cannot inspect your own snapshot.
-   LinkedIn and X build a card with the right title and the wrong image.
-   WhatsApp shows no card.
-   Slack and iMessage fall back to the root `index.html` metadata for every URL, so every link from the site looks identical.
-   Dynamic routes such as `/blog/[slug]` are not pre-rendered.
-   AI crawlers, including ChatGPT, Claude and Perplexity, receive no content.

Reproduce that on your own URLs before you act on it. Their test and your project are not the same project, and the rollout has been inconsistent enough that the stack you are on changes the answer.

Which stack you are on decides which fix applies. Open your live site and use View Source, not the inspector, because the inspector shows you the rendered DOM and will tell you everything is fine. An empty `<div id="root">` in the source means Vite. Real body content in the source means TanStack. From the code side, a `routeTree.gen.ts` file in the repo is the same signal. The full version of that story is in [the SSR explainer](/blog/lovable-seo-update).

## [](#fix-on-tanstack-put-the-tags-in-the-route-head)Fix on TanStack: put the tags in the route head

On TanStack Start the head tags belong to the route, not to `index.html`. Each route file exports a `head` function returning the meta for that URL, and the server writes those tags into the response before it leaves.

tsx

Copy Download 

// src/routes/pricing.tsx 

export  const  Route  \=  createFileRoute ( "/pricing" ) ( { 

  head :  ( )  \=>  ( { 

    meta :  \[ 

      {  title :  "Pricing | Acme"  } , 

      {  name :  "description" ,  content :  "Plans from $19 a month."  } , 

      {  property :  "og:title" ,  content :  "Pricing | Acme"  } , 

      {  property :  "og:description" ,  content :  "Plans from $19 a month."  } , 

      {  property :  "og:image" ,  content :  "https://acme.com/og/pricing.png"  } , 

      {  property :  "og:url" ,  content :  "https://acme.com/pricing"  } , 

      {  property :  "og:type" ,  content :  "website"  } , 

      {  name :  "twitter:card" ,  content :  "summary\_large\_image"  } , 

    \] , 

  } ) , 

  component :  PricingPage , 

} ) ; 

Prompt to paste into Lovable:

text

Copy Download 

Move all Open Graph and Twitter card meta tags out of index.html. For every route 

file, add a head export returning route specific meta: title, description, 

og:title, og:description, og:image as an absolute https URL, og:url as that 

route's canonical URL, og:type, and twitter:card set to summary\_large\_image. 

Keep one generic fallback set on the root route only. 

Check one thing afterwards. TanStack Start renders per route, and every route carries a rendering flag: `ssr: true`, `ssr: false` or `ssr: "data-only"`. A route set to `ssr: false` is client rendered again, and its head tags go back to being invisible to scrapers. The agent sets these flags without mentioning it, so read them yourself:

bash

Copy Download 

grep -rn "ssr:" src/routes 

Any route people share links to should be `ssr: true`.

## [](#fix-on-vite-helmet-first-then-the-part-it-cannot-reach)Fix on Vite: helmet first, then the part it cannot reach

On the Vite stack the tags are managed in React with `react-helmet-async`. Two prompts, in this order.

text

Copy Download 

Create an SEOHead component using react-helmet-async that takes title, 

description, canonical, ogImage and ogType as props, and use it on every page 

above the main tag with page specific values. 

text

Copy Download 

Remove the canonical, title, description and social preview meta tags from 

index.html so they do not override the per page values. 

Run only the first and the static tags keep winning, because they are in the document from the first byte and several scrapers take the first tag they find and ignore the rest.

Now the part a prompt cannot reach. Those tags are added by JavaScript, and a social scraper reads the raw response and leaves. So per-page cards on a Vite project need the finished HTML to exist before the request arrives. Two ways to get there: move the project to TanStack with Lovable's `/migrate`, which costs credits and needs the `ssr` flags checked afterwards, or put a pre-rendering layer in front of the site so the HTML served to scrapers already carries the tags. The trade-offs between the two are in the [SSR explainer](/blog/lovable-seo-update), and [converting a Lovable site to crawlable HTML](/blog/lovable-to-html) covers the same ground from the output side.

## [](#lovable-og-image-specs-that-pass-every-scraper)Lovable OG image specs that pass every scraper

-   1200 by 630 pixels. Every platform crops from this, so keep text and logo near the middle.
-   PNG or JPEG. Not WebP. Facebook's scraper still rejects it, and a rejected image reads as a missing image.
-   Under 300 KB. Large files make some platforms give up before the card is built.
-   An absolute `https://` URL in `og:image`. A relative path such as `/og.png` works in your browser and fails in every scraper.
-   Store the file in `/public` so it ships with the build and resolves at `https://yourdomain.com/og/pricing.png`.
-   `og:image:width` and `og:image:height` are optional. They let a platform lay out the card before it has downloaded the file.

A broken image URL and a missing `og:image` tag look the same in every debugger. Open the exact `og:image` URL in a private window before you go changing tags.

## [](#clear-the-cache-on-each-platform)Clear the cache on each platform

The card you see is the card that platform stored. After you publish a fix, force each one to read the page again.

-   **Facebook and Instagram.** Paste the URL into the [Sharing Debugger](https://developers.facebook.com/tools/debug/) and press Scrape Again. Press it two or three times. The first pass often returns the cached record.
-   **LinkedIn.** Paste the URL into the [Post Inspector](https://www.linkedin.com/post-inspector/). One inspection refreshes the card.
-   **X.** The [Card Validator](https://cards-dev.twitter.com/validator) refetches and shows what it parsed.
-   **Slack.** No public tool. Slack keeps its own unfurl cache per workspace. Post the URL with a query parameter on the end, such as `?v=2`, and it unfurls as a new URL.
-   **WhatsApp.** No tool either. Wait, or use the query parameter trick.
-   **Discord.** Same: add `?v=2` and it fetches again.
-   **iMessage.** Same trick. iMessage caches aggressively on the device that first saw the link.

The query parameter is a test, not a fix. Once the real URL has been rescraped by the platforms that give you a tool, drop it.

## [](#per-route-cards-for-blogs-and-product-pages)Per-route cards for blogs and product pages

A blog index is one route. `/blog/my-post` is a thousand routes whose content does not exist until the data is fetched. That changes what is possible on each stack.

On TanStack, the `head` function receives the route's loader data, so you build the tags from the post itself:

tsx

Copy Download 

// src/routes/blog.$slug.tsx 

export  const  Route  \=  createFileRoute ( "/blog/$slug" ) ( { 

  loader :  ( {  params  } )  \=>  fetchPost ( params . slug ) , 

  head :  ( {  loaderData  } )  \=>  ( { 

    meta :  \[ 

      {  title :  loaderData . title  } , 

      {  property :  "og:title" ,  content :  loaderData . title  } , 

      {  property :  "og:description" ,  content :  loaderData . excerpt  } , 

      {  property :  "og:image" ,  content :  loaderData . ogImage  } , 

    \] , 

  } ) , 

  component :  PostPage , 

} ) ; 

Two rules make that work. The data has to come from the route loader, because only the loader runs before the HTML is sent; the same fetch in `useEffect` or `useQuery` happens in the browser, too late for the tag. And the route has to be `ssr: true`.

On Vite there is no server in the request path, so there is nothing to write the tag before the response goes out. Lovable's automatic snapshot is built at publish time from the static routes in the project, which is why our testing found dynamic slugs missing from it. A runtime pre-render layer is the other route: a real browser loads each URL, waits for the data to land, stores the finished HTML, and scrapers get that instead of the shell.

### Improve click-through rate with proper link previews and OG images

Encited fixes all meta and crawler accessibility issues by pre-rendering your pages into fully readable HTML and AI accessible markdown.

[Learn more](/prerender-lovable?utm_source=blog-lovable-og-image-link-preview&utm_content=promo-learn)[See the difference](/free-tools/seo-audit?utm_source=blog-lovable-og-image-link-preview&utm_content=promo-audit)

## [](#check-the-meta-tags-each-scraper-receives)Check the meta tags each scraper receives

Three checks, in this order.

1.  [OG image previewer](/free-tools/og-image-previewer). Paste a URL and see the card built from the HTML a scraper gets, with the tags it found listed underneath.
2.  [Crawler simulator](/free-tools/crawler-simulator). Request the same URL as a named bot and read the raw HTML that came back. The two that decide your cards are [facebookexternalhit](/free-tools/crawler-simulator/facebookbot-simulator) and [LinkedInBot](/free-tools/crawler-simulator/linkedinbot-simulator).
3.  [Meta tag audit](/free-tools/meta-tag-audit). Title, description, canonical and the social tags for one page, with character counts.

Test three URLs, not one. Your homepage, a static route such as `/pricing`, and a dynamic route such as a blog post. They fail in different ways, and a homepage that previews correctly tells you almost nothing about the other two.

## [](#frequently-asked-questions)Frequently asked questions

### [](#why-does-every-page-on-my-lovable-site-show-the-same-preview)Why does every page on my Lovable site show the same preview?

The Open Graph tags are in `index.html`, which is the response for every route, so every URL hands the scraper the same card. The fix is per-route tags: a `head` export on each route on TanStack, or an `SEOHead` component on Vite followed by deleting the static tags from `index.html`.

### [](#why-does-whatsapp-show-no-preview-at-all)Why does WhatsApp show no preview at all?

Across the Lovable sites we tested, WhatsApp received no card at all, while LinkedIn and X got the right title with the wrong image. WhatsApp also gives you no debugger, so you cannot force a refetch. Share the URL with a query parameter such as `?v=2` to see what a first-time scrape returns, and confirm with a crawler simulator run that the tags are in the served HTML at all.

### [](#how-do-i-clear-the-linkedin-preview-cache)How do I clear the LinkedIn preview cache?

Paste the URL into LinkedIn's Post Inspector. One inspection refetches the page and replaces the stored card. Publish the tag change first, or you will just re-cache the old card.

### [](#does-lovables-ssr-fix-link-previews)Does Lovable's SSR fix link previews?

Partly. On a TanStack project, tags in a route's `head` export are in the served HTML and scrapers read them, as long as that route is `ssr: true`. On an older Vite project, we could not verify Lovable's automatic pre-rendering is reaching social scrapers, and we found Slack and iMessage still falling back to the root `index.html` metadata for every URL. Test your own URLs rather than assuming either outcome.

### [](#can-i-use-a-webp-image-for-ogimage)Can I use a WebP image for og:image?

No. Facebook's scraper still rejects WebP, and a rejected image produces the same empty card as a missing tag. Use PNG for images with text or a logo, JPEG for photographs, at 1200 by 630 and under 300 KB.

### [](#how-do-i-set-a-different-image-per-blog-post)How do I set a different image per blog post?

On TanStack, fetch the post in the route loader and read `loaderData` inside the `head` function to build `og:title`, `og:description` and `og:image` from the post record. The data must come from the loader, not from a hook inside the component. On Vite there is no server to write the tag before the response is sent, so a dynamic route needs either a move to TanStack or a pre-render layer that stores the finished HTML per URL.

 

![](/logos/chatgpt.svg)Open in ChatGPT

On this page

-   [The quick fix](#the-quick-fix)
-   [Why your Lovable link preview is not working](#why-your-lovable-link-preview-is-not-working)
-   [The tags are in index.html, so every page shares one card](#the-tags-are-in-indexhtml-so-every-page-shares-one-card)
-   [The platform cached an old scrape](#the-platform-cached-an-old-scrape)
-   [The tag never existed as far as the scraper is concerned](#the-tag-never-existed-as-far-as-the-scraper-is-concerned)
-   [What LinkedIn, WhatsApp, Slack and iMessage show today](#what-linkedin-whatsapp-slack-and-imessage-show-today)
-   [Fix on TanStack: put the tags in the route head](#fix-on-tanstack-put-the-tags-in-the-route-head)
-   [Fix on Vite: helmet first, then the part it cannot reach](#fix-on-vite-helmet-first-then-the-part-it-cannot-reach)
-   [Lovable OG image specs that pass every scraper](#lovable-og-image-specs-that-pass-every-scraper)
-   [Clear the cache on each platform](#clear-the-cache-on-each-platform)
-   [Per-route cards for blogs and product pages](#per-route-cards-for-blogs-and-product-pages)
-   [Check the meta tags each scraper receives](#check-the-meta-tags-each-scraper-receives)
-   [Frequently asked questions](#frequently-asked-questions)
-   [Why does every page on my Lovable site show the same preview?](#why-does-every-page-on-my-lovable-site-show-the-same-preview)
-   [Why does WhatsApp show no preview at all?](#why-does-whatsapp-show-no-preview-at-all)
-   [How do I clear the LinkedIn preview cache?](#how-do-i-clear-the-linkedin-preview-cache)
-   [Does Lovable's SSR fix link previews?](#does-lovables-ssr-fix-link-previews)
-   [Can I use a WebP image for og:image?](#can-i-use-a-webp-image-for-ogimage)
-   [How do I set a different image per blog post?](#how-do-i-set-a-different-image-per-blog-post)

![Gemini](/crawler-logos/gemini.png)

![ChatGPT](/crawler-logos/chatgpt.svg)

![Claude](/crawler-logos/claude.svg)

![Bing](/crawler-logos/bing.svg)

![DeepSeek](/crawler-logos/deepseek.svg)

![Perplexity](/crawler-logos/perplexity.png)

## Get discovered anywhere  search happens

Readable, citable, outranking pages.

[Book a demo](/book-a-demo)[Get started](/?authModal=true)

![Encited logo](/brand/logo.svg)

Follow us: [](https://www.facebook.com/lovablehtml/)[](https://linkedin.com/company/lovablehtml)

[LaunchFast.shop](https://launchfast.shop) product ❤︎ 

### Product

-   [Track Brand Visibility](/ai-visibility-tracker)
-   [Create Content](/create-content)
-   [Get Indexed Faster](/get-indexed-faster)
-   [Site Audit](/site-audit)
-   [Pre-rendering](/prerender)
-   [Encited MCP](/seo-mcp)

### Free SEO Tools

-   [Free SEO & AEO Audit](/free-tools/seo-audit)
-   [Crawler Simulator](/free-tools/crawler-simulator)
-   [Robots.txt Analyzer](/free-tools/robots-txt-analyzer)
-   [OG Image Previewer](/free-tools/og-image-previewer)
-   [Meta Tag Audit](/free-tools/meta-tag-audit)

### Resources

-   [Blog](/blog)
-   [Guides and API docs](/docs)
-   [Prerender.io Alternative](/prerender-io-alternative)

### Company

-   [Agency partnership](/agency-partnership)
-   [Creator partnership](/creator-partnership)
-   [About](/about)
-   [Media Kit](/media-kit)
-   [Contact](mailto:team@encited.com)

### Legal

-   [Privacy Policy](/privacy)
-   [Terms of Service](/terms)

![Avatar](https://replymaven.com/api/uploads/Su6Q0nK63iZW0ZFJBRNWpmRuppVDLuab/98df5262-f992-45fa-a750-00a6c919baf9.png)

How can we help?

Get instant answers to your questions or leave a message for an engineer will reach out

Ask AI about Encited 

[See our docs ](https://lovablehtml.com/docs)

Contact support 

Leave a message

We'll get back to you soon

Your name\* 

Your email\* 

Your message\* 

Send message

![Avatar](https://replymaven.com/api/uploads/Su6Q0nK63iZW0ZFJBRNWpmRuppVDLuab/98df5262-f992-45fa-a750-00a6c919baf9.png)

Ask AI about Encited

Product questions, troubleshooting and

Thinking 

Drop an image to attach 

Powered by [ReplyMaven](https://replymaven.com)