Site audit · full scan
webeons.com
58 addresses checked58 pages58 indexablecrawled in 11 s
Health score
Speed (8) is holding it back.
Issues found
Since last scan
This is the first saved scan of webeons.com. After your next scan, this card shows fixed, new and still-open issues side by side.
Fix first
One list, ranked by impact. Each issue appears once.Crawl path
addresses to indexable pages- Indexable 58
- Address variants 0
- Noindex 0
Indexability
- Indexable58
- Point to another page0
- Noindex0
- Redirects or errors0
Status codes
58 addressesResponse time
avg 111 msWords per page
96,851 words readSite sections
Go to
Commands
Issues
Pages
/5 issues/work2 issues/work/blurbbio1 issues/work/askorac1 issuesKeyboard shortcuts
- Search or jump to anything
- ⌘K
- Filter the current list
- /
- Move down / up the list
- JK
- Open (expand) the selected row
- E
- Next / previous in the open panel
- JK
- Close the panel or palette
- esc
- Go to SEO overview, site audit overview
- GE / A
- Go to issues, page explorer, structure
- GI / R / M
- Go to search terms, top pages, link opportunities
- GC / P / L
- Go to this week, performance, score and checks
- GW / S / O
- Go to local overview
- GB
- Show this sheet
- ?
Webeons SEO audit · full report
webeons.com
Audited Nov 3, 2026, 14:56 UTC · 58 pages · score 78 / 100 (our judgment)
| Crawl and indexing | 83 | 2 issues |
| On-page | 82 | 6 issues |
| Links and social | 94 | 2 issues |
| Speed and experience | 8 | 5 issues |
| AI search readiness | 100 | 0 issues |
| Security and trust | 100 | 0 issues |
Issues, most important first
1. The layout jumps while it loads (CLS 0.338)
high · Speed and experience · 1 of 1 page tested · effort half a day (our judgment)
Fix first: Reserve space for content that loads late, and animate only transform and opacity.
Why it matters: Cumulative Layout Shift measures how much the page moves while people are reading or about to tap. Pages that jump cause misclicks and feel broken. It is one of the three Core Web Vitals, which Google uses as part of its page experience signals. A score of 0.338 is in the "poor" band (above 0.25).
- Give the first screen its final size from the first paint, for example a fixed min-height.
- Set width and height on images, videos and ad slots.
- Animate only transform and opacity, never top, left, margin or height.
On Next.js: Move entrance animations to transform and opacity. With Framer Motion, animate x, y, scale and opacity and avoid layout props. Check components do not change size after hydration.
// Lists every layout shift and the element that moved
new PerformanceObserver(list => {
for (const e of list.getEntries()) {
if (e.hadRecentInput) continue;
console.log(e.value.toFixed(3), e.sources?.map(s => s.node));
}
}).observe({ type: 'layout-shift', buffered: true });Check: Run PageSpeed Insights on the page, mobile. CLS should be 0.1 or less. In Chrome DevTools, the Performance panel's "Layout shifts" track should be empty after the fix.
Affected: /
Source: web.dev: Optimize Cumulative Layout Shift (https://web.dev/articles/optimize-cls)
2. The main content takes 5.6 s to appear on mobile
high · Speed and experience · 1 of 1 page tested · effort half a day (our judgment)
Fix first: Let the largest element paint at once, and keep scripts off the main thread during load.
Why it matters: Largest Contentful Paint is when the main content becomes visible. Past 4 seconds, Google rates it "poor", and many visitors on phones leave before then. It is one of the three Core Web Vitals. Desktop measured 0.8 s, so the problem is how the page behaves on a slower phone.
- If the largest element is an image, preload it and serve it small and modern (WebP or AVIF).
- If it is text, make sure it is visible in the first HTML, without opacity: 0 or a hidden starting state.
- Reduce JavaScript that runs during load.
On Next.js: Render the hero in a Server Component, give the hero image priority on next/image, and remove any initial opacity: 0 state. Load analytics with next/script strategy="lazyOnload" or @next/third-parties.
/* Let the hero heading paint immediately; animate from a visible state */
.hero-h1 { opacity: 1; }
@media (prefers-reduced-motion: no-preference) {
.hero-h1 { animation: hero-rise .5s ease-out both; }
}
@keyframes hero-rise {
from { transform: translateY(8px); }
to { transform: none; }
}Check: Run PageSpeed Insights on mobile. LCP should drop toward 2.5 s. In Lighthouse, the "Largest Contentful Paint element" audit shows which phase is slow.
Affected: /
Source: web.dev: Optimize Largest Contentful Paint (https://web.dev/articles/optimize-lcp)
3. JavaScript blocks the page for 1,240 ms on mobile
high · Speed and experience · 1 of 1 page tested · effort half a day (our judgment)
Fix first: Load less JavaScript up front and defer third-party scripts.
Why it matters: While the main thread is busy running scripts, taps and scrolls wait. This is the lab measure closest to Interaction to Next Paint, a Core Web Vital.
- Defer analytics, chat and tag managers until after load.
- Split large bundles so each page loads only what it uses.
- Remove unused libraries.
On Next.js: Use next/script strategy="lazyOnload" for third parties, dynamic() for heavy client components, and check bundles with @next/bundle-analyzer.
Check: Run Lighthouse on mobile: Total Blocking Time should fall.
Affected: /
Source: web.dev: Total Blocking Time (https://web.dev/articles/tbt)
4. robots.txt blocks 18 CSS or JavaScript files the homepage needs
medium · Crawl and indexing · site-wide · effort quick (our judgment)
Fix first: Allow crawling of the folders your CSS and JavaScript load from.
Why it matters: Google renders pages before judging them. If it cannot load the CSS and JavaScript, it may see a broken or empty page. Blocked scripts can hide content and links from Google.
- Find the Disallow rule that matches the listed files.
- Remove it, or add an Allow rule for the asset folder.
On Next.js: Do not disallow /_next/static/. Disallowing /_next/ as a whole blocks the files Google needs to render the page.
User-agent: * Allow: /_next/static/ Disallow: /api/
Check: In Search Console, URL Inspection, Test live URL, View tested page, More info: no page resources should be "Blocked by robots.txt".
Affected: /_next/static/immutable/chunks/0meshd4c712hl.js, /_next/static/immutable/chunks/1-pmlk8bexi12.js, /_next/static/immutable/chunks/3e6bmno79a0is.js, /_next/static/immutable/chunks/turbopack-1byz1flvc-bu1.js, /_next/static/immutable/chunks/1e2g5anf0vnnj.js, /_next/static/immutable/chunks/1kakyev9m-h3b.js, /_next/static/immutable/chunks/341lg559_y344.js, /_next/static/immutable/chunks/08900c_-sbs8s.js, /_next/static/immutable/chunks/0lljxqflhal7b.js, /_next/static/immutable/chunks/08x5lfwd7iuis.js, /_next/static/immutable/chunks/0c0hxoamwjsbw.js, /_next/static/immutable/chunks/2-qk6wn3pw9-g.js, /_next/static/immutable/chunks/1lgblgqmj5dht.css, /_next/static/immutable/chunks/3kpt7u0av82-x.css, /_next/static/immutable/chunks/325u7sghk851d.css, /_next/static/immutable/chunks/2kefxpucd8axg.css, /_next/static/immutable/chunks/2bh-_9o-0ah94.css, /_next/static/immutable/chunks/1s72q385y1gop.css
Source: Google Search Central: JavaScript SEO basics (https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics)
5. 132 KiB of JavaScript loads but is not used
medium · Speed and experience · 3 of 3 scripts · effort quick (our judgment)
Fix first: Load third-party scripts after the page is interactive, and split large bundles.
Why it matters: Every script has to download, parse and run before the phone is free to respond. Scripts that are not needed for the first screen slow down the first paint and the first tap. Analytics does not need to load before your content does.
- Load analytics and tag managers after the page is interactive, not in the head.
- Remove tags in Tag Manager that no longer fire or report to anything.
- Split large page scripts so each page loads only what it uses.
On Next.js: Use @next/third-parties for Google Analytics or Tag Manager, or next/script with strategy="lazyOnload". Check the bundle with @next/bundle-analyzer.
import { GoogleTagManager } from '@next/third-parties/google'
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>{children}</body>
{/* Loads after hydration instead of in the head */}
<GoogleTagManager gtmId="GTM-XXXXXXX" />
</html>
)
}Check: Run Lighthouse on mobile and open "Reduce unused JavaScript". The largest files should be gone from the list or much smaller, and Total Blocking Time should fall.
Affected: www.googletagmanager.com/gtag/js?id=G-23144Z45CZ, webeons.com/_next/static/immutable/chunks/08x5lfwd7iuis.js, webeons.com/_next/static/immutable/chunks/1-pmlk8bexi12.js
Source: Chrome for Developers: Reduce unused JavaScript (https://developer.chrome.com/docs/lighthouse/performance/unused-javascript)
6. 53 of 58 titles are cut off in Google
medium · On-page · 53 of 58 pages · effort quick (our judgment)
Fix first: Shorten the brand suffix and put the page topic first.
Why it matters: Google does not publish a limit. It cuts titles that do not fit the result, which on desktop is about 600 pixels wide (our measure). The cut part is replaced with "...". The suffix " | Webeons Technologies" is 23 characters on 52 of these titles, so the words that describe the page are the ones that get cut.
- Change the site-wide title template to a short brand suffix.
- Keep the words people search for at the start of each title.
- Aim for about 50 to 60 characters, and check long ones in the preview.
On Next.js: Set a title template once in app/layout.tsx with metadata.title.template, and give each page a short metadata.title. The template adds the suffix everywhere.
export const metadata = {
title: {
template: '%s | Webeons',
default: 'Webeons: what you do, in a few words',
},
}Check: View the page source and search for <title>. Then use URL Inspection in Search Console and request indexing for a few key pages; the new titles usually show within days.
Affected: /blog/how-to-get-cited-by-chatgpt-ai-search, /blog/gpt-4o-shutdown-migration-guide, /blog/prevent-prompt-injection-llm-apps, /work/shelfinn, /blog/vibe-coded-app-production-checklist, /blog/custom-software-vs-saas-2026, /services/cloud-devops, /services/seo-growth, /solutions/ai-chatbot, /blog/why-ai-projects-fail, /blog/ai-tech-stack-2026, /blog/web-performance-affects-revenue, /blog/why-nextjs-best-framework-2026, /blog/hire-agency-vs-in-house, /solutions/saas-development, /work/bookish-elf, /blog/custom-software-development-cost-2026, /blog/hire-developers-from-india, /blog/wordpress-alternatives-2026, /services/product-design, /solutions/mvp-development, /blog/how-much-does-website-cost-2026, /work/blurbbio, /solutions/dedicated-engineer, /blog/react-native-vs-capacitor-vs-flutter-2026, and 28 more (see the CSV)
Source: Google Search Central: Influencing title links (https://developers.google.com/search/docs/appearance/title-link)
7. 30 text elements have low color contrast
low · Speed and experience · 30 of 30 elements on the homepage · effort quick (our judgment)
Fix first: Darken small text to at least 4.5:1 against its background.
Why it matters: Text that is too light is hard to read for many people, especially on phones outdoors. This is about people more than rankings. Lighthouse counts it in the accessibility score, which buyers and their developers often check.
- Find the color used for the flagged text.
- Raise its contrast to at least 4.5:1 against the background it sits on, in both light and dark themes.
On Next.js: Change the color token in your CSS or Tailwind config, then re-run Lighthouse in both themes.
Check: Lighthouse, Accessibility, "Background and foreground colors have a sufficient contrast ratio" should pass.
Affected: "Healthy", "TYPICAL TECH STACK", "yourproduct.com/pricing", "ROUTES", "PERFORMANCE", "Ask a question", "RETRIEVAL TRACE", "CONFIDENCE", "CONCURRENT USERS All tenants", "INSTANCES", "REQUESTS Isolated per tenant", "ZERO-DOWNTIME DEPLOY Complete", "TOKENS", "GENERATED PAGES", "IN SEARCH RESULTS", "Slack integration for your team", "Notion integration for your team", "CORE WEB VITALS", "STRUCTURED DATA", "SaaS · AI Platform · B2B", "BUILT WITH", "Visit AskOrac", "SaaS · Web App · AI-Powered", "Visit BlurbBio", "Content Platform · Editorial · SEO", and 2 more (see the CSV)
Source: Chrome for Developers: Color contrast (https://developer.chrome.com/docs/lighthouse/accessibility/color-contrast)
8. http://www.webeons.com takes 2 redirects to reach https://webeons.com/
low · Crawl and indexing · site-wide · effort quick (our judgment)
Fix first: Send every version of the address straight to https://webeons.com/ in one hop.
Why it matters: Each redirect adds a round trip before the page starts loading. Google follows up to 10 hops, so this does not stop indexing. Old links and typed addresses that use the long form pay the extra wait.
- Make every variant (http, https, www, non-www) go straight to https://webeons.com/ with one permanent redirect.
On Next.js: On Vercel, set the www domain to redirect to the apex in Project, Domains. Vercel upgrades http to https first, so http://www may still take two hops; that is acceptable. Elsewhere, use a host-based redirect in next.config.js.
module.exports = {
async redirects() {
return [{
source: '/:path*',
has: [{ type: 'host', value: 'www.webeons.com' }],
destination: 'https://webeons.com/:path*',
permanent: true,
}]
},
}Check: Run: curl -sIL http://www.webeons.com | grep -i "^location". You should see as few locations as your host allows, ending at https://webeons.com/.
Affected: http://webeons.com/, http://www.webeons.com/, https://www.webeons.com/
Source: Google Search Central: Redirects and Google Search (https://developers.google.com/search/docs/crawling-indexing/301-redirects)
9. 6 pages have no social preview image
medium · Links and social · 6 of 58 pages · effort quick (our judgment)
Fix first: Add an og:image (1200 × 630 px) to every page people share.
Why it matters: When someone shares these pages on LinkedIn, Slack or X, the link shows without a picture and gets fewer clicks. The pages people share most, like your work, about and contact pages, matter most.
- Add an og:image (1200 × 630 px) to each page, or a site-wide default.
- Add og:image:alt describing it.
On Next.js: Add an opengraph-image.tsx (or .png) file in each route folder, or one in app/ as a default. Next.js adds the meta tags for you.
import { ImageResponse } from 'next/og'
export const size = { width: 1200, height: 630 }
export const contentType = 'image/png'
export const alt = 'About us'
export default function Image() {
return new ImageResponse(
<div style={{ width: '100%', height: '100%', display: 'flex',
alignItems: 'center', padding: 80, background: '#0a0a0a',
color: '#fff', fontSize: 72 }}>About us</div>,
size
)
}Check: View source and search for og:image. Paste the URL into LinkedIn's Post Inspector to see the preview.
Affected: /work, /about, /contact, /services, /solutions, /blog
Source: The Open Graph protocol (https://ogp.me/)
10. 4 pages have 4 or fewer internal links pointing to them
medium · Links and social · 4 of 58 pages · effort quick (our judgment)
Fix first: Link to these pages from related pages and from pages that already get visits.
Why it matters: Internal links tell Google which pages matter and help it find them. A page with very few links pointing in looks less important than it is. They also lead visitors from one useful page to the next.
- Add 3 to 5 links from related pages, using descriptive anchor text.
- Link from pages that already get visits, such as service pages.
On Next.js: Add a "Related reading" block to the article layout, or add links in the MDX of related posts.
<p>For the numbers behind this, see our <a href="/research/your-best-page">research on the topic</a>.</p>
Check: Re-run the audit: the internal link count for each page should go up. In Search Console, Links, Top linked pages (internal) shows the same.
Affected: /blog/state-of-web-performance-2026, /blog/how-to-get-cited-by-chatgpt-ai-search, /blog/true-cost-of-bad-website, /blog/how-much-does-website-cost-2026
Source: Google Search Central: Link best practices (https://developers.google.com/search/docs/crawling-indexing/links-crawlable)
11. 1 image is over 300 KB
medium · On-page · 1 of 30 images sampled · effort half a day (our judgment)
Fix first: Resize and compress large images, and serve them in WebP or AVIF.
Why it matters: Large images are the most common reason pages load slowly on phones. Most can be cut by 70% or more with no visible change.
- Resize to the largest size the image is shown at (about 2x for retina).
- Compress and convert to WebP or AVIF.
- Lazy-load images below the first screen.
On Next.js: Use next/image, which resizes and converts on the fly; set sizes for responsive images.
Check: Re-run the audit, or check the file size in the browser's Network panel.
Affected: /home-work/bookishelf.webp?dpl=dpl_G9GWYZAeTn4xY75hoeZizJUYsePr
Source: web.dev: Optimize images (https://web.dev/articles/fast#optimize_your_images)
12. 14 meta descriptions are over 160 characters
low · On-page · 14 of 58 pages · effort half a day (our judgment)
Fix first: Put the main point of each description in its first 150 characters.
Why it matters: The description is your pitch in search results. Google often shortens long ones, so the end of the sentence, often the useful part, is cut. Google can also write its own snippet from the page, but a good description gives you the best chance of showing the one you chose.
- Rewrite each description so the main point fits in about 150 characters.
- Say who it is for and what they get, in plain words.
On Next.js: Edit metadata.description (or generateMetadata) on each page.
Check: View source and search for name="description". Use the preview in this report to check the length.
Affected: /blog/how-much-does-website-cost-2026, /services/mobile-apps, /solutions/ai-chatbot, /blog/state-of-web-performance-2026, /, /solutions, /solutions/wordpress-migration, /blog/saas-development-cost-2026, /work/shelfinn, /blog/how-we-build-saas-12-weeks, /solutions/mvp-development, /blog/why-nextjs-best-framework-2026, /blog/ai-agent-development-cost-2026, /services
Source: Google Search Central: Control your snippets (https://developers.google.com/search/docs/appearance/snippet)
13. 4 meta descriptions are under 110 characters
low · On-page · 4 of 58 pages · effort quick (our judgment)
Fix first: Expand the 4 short descriptions to say what each page offers.
Why it matters: A very short description leaves space unused in the result. For pages people do search for, that space can say why to click. For legal pages, such as privacy and terms, this matters little.
- Expand the descriptions of pages people search for first.
- Leave legal pages short if you like; they are rarely searched.
On Next.js: Edit metadata.description on each page.
Check: View source on each page and search for name="description".
Affected: /contact, /blog, /terms, /privacy
Source: Google Search Central: Control your snippets (https://developers.google.com/search/docs/appearance/snippet)
14. 2 images use JPEG, PNG or GIF over 50 KB
low · On-page · 2 of 30 images sampled · effort half a day (our judgment)
Fix first: Serve photos as WebP or AVIF.
Why it matters: WebP and AVIF are usually 25 to 50% smaller than JPEG or PNG at the same quality, and every current browser supports them.
- Convert large images, or let your platform convert them.
- Keep PNG only for images that need exact pixels.
On Next.js: next/image serves WebP or AVIF automatically.
Check: In DevTools Network, filter by Img; the Type column should show webp or avif.
Affected: /_next/image?url=%2Fwork%2Fshelfinn%2Fphone-covers.webp&w=3840&q=75&dpl=dpl_G9GWYZAeTn4xY75hoeZizJUYsePr, /_next/image?url=%2Fwork%2Fblurbbio%2Feditor.webp&w=3840&q=75&dpl=dpl_G9GWYZAeTn4xY75hoeZizJUYsePr
Source: Chrome for Developers: Serve images in modern formats (https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images)
15. 1 page has under 400 words
low · On-page · 1 of 58 pages · effort half a day (our judgment)
Fix first: Expand pages that should rank; leave legal and utility pages as they are.
Why it matters: Short pages are fine when the topic is short. A terms page is not meant to rank. For pages you want to rank, very little text rarely answers what searchers need.
- Check which of these pages should rank.
- For those, add the answers customers look for: prices, process, examples, questions.
On Next.js: Add sections to the page content.
Check: Re-run the audit, or read the page as a new customer would.
Affected: /terms
Source: Google Search Central: Creating helpful content (https://developers.google.com/search/docs/fundamentals/creating-helpful-content)
What we could not check
- Speed of other page templates. This sample shows the homepage's Lighthouse runs from 3 November 2026. Live reports test the homepage and up to 4 templates.
- Real-visitor speed (Chrome UX Report). Google has not published field data for this site; it needs more Chrome visits. Speed in this report is a lab test.
- Pages over the limit. None: all 58 URLs we found fit within the 500-page limit.
- CDN or firewall rules for AI crawlers. We read robots.txt only. A CDN can still block AI crawlers (for example Cloudflare's AI bot setting); check it in your CDN dashboard.
- Pages behind a login or form. We read public pages only, by design.
- Search Console and Analytics data. Not connected for this report.