I built a free SEO audit tool, then turned it on my own website. It roasted me. Here's the full story — the issues, the fixes, and the code.
The setup
My site: BeFirst — a free SEO/AEO/GEO audit tool (live here, source on GitHub). Single-page site, no framework, plain HTML/CSS/JS. I figured a hand-written site would score well. It scored 84. Good, not great. The audit flagged real things.
What the audit found
1. Images with no lazy loading.
16 logo images in a marquee strip, all loading on first paint. None below the fold needed to block rendering. One-line fix per image:
<img src="logo.svg" alt="..." loading="lazy">
2. Missing structured data.
No SoftwareApplication or Organization schema. Search engines (and AI answer engines) had to guess what the site is. Added JSON-LD:
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "BeFirst",
"applicationCategory": "SEO Tool",
"offers": { "@type": "Offer", "price": "0" }
}
3. FAQ with no FAQPage schema.
The page had a visible FAQ section — invisible to Google's rich results because there was no matching FAQPage JSON-LD. Content was already written; the fix was markup only.
4. Loose ends across pages.
Checked the pricing, privacy, and terms pages the same way — one H1 per page, sequential headings, meta descriptions. Boring work, but it's what separates an 84 from a 95+.
What I deliberately did NOT fix
The audit also flagged 19 <button> elements and a single async analytics script as "too many interactive elements / external scripts." That's the product itself — removing buttons would remove functionality. Lesson: don't blindly obey audit tools, including mine. Every flag needs a human decision: fix it, or keep it on purpose.
Same with copy. The tool suggested rewriting headings for keywords. Rewriting working copy for a few keyword points risks the tone that converts. Left it alone.
The deploy loop
Every fix goes: local edit → push to GitHub → live on Cloudflare Pages in under a minute. No build step, no bundler. For a static site, that loop is fast enough that there's no excuse to batch fixes — ship each one, re-audit, watch the score move.
Takeaways
- Audit your own site first. If your tool can't fix your site, why would anyone trust it on theirs?
- Schema markup is the highest-ROI boring work in SEO. Ten minutes of JSON-LD, visible in every rich result forever.
-
loading="lazy"is still free performance. In 2026, audits still catch sites missing it. - Not every flag is a fix. Buttons that do things stay. Scripts that measure stay. Judgment over score.
BeFirst is free while in beta — audit your own site and see what it finds. If it roasts you too, the fixes above are a good start.
Top comments (0)