Websites

Your site looks great. Google sees a blank page.

Free. We only read what any visitor's browser can see.

The scan checks for a title, an H1 and real content without running JavaScript.

Book a scoping call

Lovable, Bolt and plain React sites often send Google an empty shell. Many crawlers and AI assistants never see the content. We put it in the HTML from the first byte.

<div id="root"></div>
Loading...
h1: 0  h2: 0

Make my site indexable.

We add server rendering or prerendering so every page ships with its title, headings, text and links already in the HTML. Your design doesn't change. Your visitors won't notice. Google will.

  • Server-rendered or prerendered HTML for every public page
  • One H1 per page, sensible heading order, unique titles and meta descriptions
  • Canonical URLs and a sitemap that lists every page you want found
  • Checked in Google Search Console's URL Inspection, not just in a browser

We had this exact problem.

Our own blog articles rendered as "Loading..." to Google, with zero headings. We fixed it so the server HTML carries the full article. View source on any post to check.

Empty shell ✕ Server-rendered ✓
<!doctype html>
<html>
  <head><title>Vite App</title></head>
  <body>
    <div id="root"></div>
    <script src="/assets/index.js"></script>
  </body>
</html>
<!doctype html>
<html>
  <head>
    <title>Plumbing in Leeds | Acme</title>
    <meta name="description" content="Emergency...">
  </head>
  <body>
    <h1>Plumbers in Leeds</h1>
    <p>Boiler repair, same day...</p>
    <h2>Our services</h2>
    <a href="/pricing">Pricing</a>
  </body>
</html>

Drag to compare what a crawler receives without running JavaScript.

Forms that deliver. And get counted.

A contact form that shows "Thanks!" isn't the same as a lead in your inbox. We test the whole path: submit, deliver, confirm, track.

  • Submissions reach the right inbox or CRM, every time
  • A real thank-you page or state, so conversions have something to fire on
  • A clean generate_lead event in GA4 and your ad platforms
  • Spam protection that doesn't block real people

New site. Same Google rankings.

Most ranking drops after a redesign come from broken URLs, not bad design. We plan the move before we make it.

  • Full URL inventory and a 301 redirect map, old page to new page
  • Titles, headings and content that ranked are kept or improved, not lost
  • Tracking moved over and tested before launch day
  • Search Console checked after launch for crawl errors and dropped pages
301 redirect map
/old-services.html  →  /services
/blog/post?id=14    →  /blog/how-we-fixed-it
/about-us           →  /about
/contact-us         →  /contact

How a website job runs.

  1. 01. Scan and scope.

    We look at your raw HTML and your setup, then quote a fixed price.

  2. 02. Fix on a preview.

    Changes go to a staging link first. You approve before anything goes live.

  3. 03. Launch and verify.

    We check in Search Console and with live tests.

  4. 04. Hand over.

    Code in your repo, accounts in your name, notes on what changed.

Questions people ask first

Do we have to leave Lovable (or Webflow, or Framer)?

Not always. Sometimes it's a setting or a prerender layer. Sometimes the honest answer is a move. We'll tell you which on the scoping call.

Will my site change visually?

No, unless you want it to.

How soon will Google notice?

Once it re-crawls. We request indexing for key pages, but Google sets the pace, not us.

Can you guarantee rankings?

No one honestly can. We can guarantee Google can read your pages.

See what Google sees.

Scan your site free

Paste your URL into the free scanner. If the raw HTML is empty, you'll know.

Before you go

Is your tracking actually working?

Paste your URL. We check whether GTM, GA4, Meta Pixel and Consent Mode are on the page, and whether Google can read it without JavaScript. The results come by email.

Free. We only read what any visitor's browser can see.