No checks match that filter.
Full diagnostics
Every check that ran, grouped by what it affects. Problems appear first in each group.
Meta Tags & Search Snippet Simulator
The tags that decide how this page is titled and described in search results.
Silicone-free hair and scalp oils for textured hair, braids and dry, itchy scalps. Small batches made in the UK, plus a free AI scalp and skin reading.
Silicone-free hair and scalp oils for textured hair, braids and dry, itchy scalps. Small batches made in the UK, plus a free AI scalp and skin reading.
The title length is well judged.
Rendered width
| Desktop | 457px | / 580px | |
| Mobile | 412px | / 920px |
Measured in Arial at the size Google renders result titles, accurate to within a fraction of a percent of a browser. Characters: 50.
The meta description length is well judged.
Nothing in this section matches the current filter.
Crawling & indexing
Whether search engines can reach, read and index this page at all.
www and https versions
1 found
The other spellings of this address arrive here, but not in one permanent step: a chain costs time on every visit, and a temporary redirect tells search engines the move may not last.
http://ndopbotanicalhairoil.com/ → 308 → 308 → https://www.ndopbotanicalhairoil.com/ (2 redirects)
How to fix
The page returns 200 OK.
The URL resolves without redirects.
No directive prevents indexing.
The canonical correctly references this page.
https://www.ndopbotanicalhairoil.com
Language is declared as "en-GB".
lang="en-GB"
No hreflang annotations, which is correct for a single-language page.
The viewport is configured for mobile.
width=device-width, initial-scale=1
The page declares UTF-8 encoding.
A favicon is declared.
All resources load securely.
The URL is 37 characters.
The URL is clean and readable.
The page is 0 levels deep.
The URL has no query parameters.
robots.txt is present and does not block crawling.
A sitemap is published, listing 56 URLs.
Lists 56 URLs
A page that does not exist returns HTTP 404, so search engines drop dead addresses.
Nothing in this section matches the current filter.
Content & metadata
What the page says it is about, and how it reads.
Text-to-HTML ratio
2.4% text
Only 2.4% of the page is readable text; the rest is markup and script.
How to fix
Open Graph tags are present.
twitter:card is set to summary_large_image.
The page has exactly one h1.
Discover what yourskin, hair & tonesare telling you.
The heading outline descends in order.
The page has roughly 969 words.
No data tables on this page, so there are no columns to label.
The page's prominent terms appear in its title, description or headings.
Where these terms appear
| Term | Count | Density | Title | Description | Headings |
|---|---|---|---|---|---|
| beauty | 15 | 2.19% | ✕ | ✕ | ✓ |
| hair | 13 | 1.90% | ✓ | ✓ | ✓ |
| scalp | 12 | 1.75% | ✓ | ✓ | ✓ |
| reading | 10 | 1.46% | ✕ | ✓ | ✓ |
| oil | 10 | 1.46% | ✓ | ✓ | ✓ |
No term is repeated unnaturally often.
The page's most frequent terms, from 684 words of content.
What this page is about
Term size reflects how often it appears. Density is not a ranking factor, this is a view of the page's subject, not a target to hit.
The share image loads and is 1200 × 630 pixels, the right size and shape for a large card.
Nothing in this section matches the current filter.
AI & answer readiness
Whether answer engines and AI overviews can extract and trust this page.
Answer readiness
0 found
No heading is followed by a concise 40 to 60 word answer, the shape featured snippets and AI overviews extract.
How to fix
Content freshness
The page publishes no date. Not expected on a page like this; worth adding if its content goes out of date.
How to fix
Page subject
FAQPage declared without a name or headline.
FAQPage
How to fix
Attribution signals present: publisher in structured data, privacy policy.
publisher in structured data, privacy policy
Answer-friendly structured data: FAQPage, Question.
FAQPage, Question
2 types: FAQPage, Question
969 words across 36 headings, 17 lists and 0 tables.
The page names who is behind it: Ndop Botanical.
The page reads the same with and without JavaScript.
llms.txt is published, giving AI agents a curated map of the site.
Every AI crawler checked is allowed to read this page.
Nothing in this section matches the current filter.
Speed & delivery
What makes the page slow, and what the loading experience measures.
Largest Contentful Paint
Target ≤ 2.5s
What this measures
How long until the largest thing on screen, usually the hero image, video or headline block, has finished rendering. It is a proxy for "when did this page feel loaded".
What moves it: Serve the hero image in a modern format at the size it is displayed, preload it, and remove render-blocking CSS and JavaScript ahead of it. A slow server response delays it too, so check TTFB first.
Interaction to Next Paint
Target ≤ 200ms
What this measures
How long the page takes to respond visibly after a tap, click or key press, measured across every interaction, not just the first. High INP is what makes a page feel unresponsive even once it looks ready.
What moves it: Break up long JavaScript tasks so the main thread is free to respond, defer work that is not needed for the interaction, and avoid large re-renders on every event.
Cumulative Layout Shift
Target ≤ 0.1
What this measures
How much visible content jumps around while the page loads. This is what makes someone tap the wrong thing because a banner or image pushed the layout down underneath their finger.
What moves it: Give images and video explicit width and height so the browser reserves the space, reserve room for ads and embeds, and avoid inserting content above what is already on screen.
First Contentful Paint
Target ≤ 1.8s
What this measures
How long until anything at all appears, the first text or image painted. It separates "the page starts slowly" from "the biggest element is slow": a fast FCP with a slow LCP points at the hero, while both slow points at the server.
What moves it: Cut render-blocking CSS and JavaScript in the head, inline the styles needed for the first screen, and improve the server response time.
Real-user response time
Target ≤ 800ms
Needs real-user data from Chrome UX Report
Time to first byte
The server took 1871 ms to send the first byte, delaying everything that follows.
How to fix
HTML size
280 KB
The HTML document is 280 KB, heavier than about 90% of pages.
How to fix
Inline styles
77 found
77 elements carry inline style attributes, which cannot be cached and inflate the document.
How to fix
2 render-blocking resources in the head.
No deprecated HTML tags are used.
The response is compressed with br.
Content-Encoding: br
The page loads 28 requests totalling 572 KB.
What loaded, by type
| Type | Requests | Transferred | |
|---|---|---|---|
| script | 11of 12 declared | 308 KB | |
| font | 3 | 102 KB | |
| image | 8of 22 declared | 100 KB | |
| document | 1 | 43 KB | |
| stylesheet | 1 | 16 KB | |
| other | 4 | 3 KB |
Of these, 0 requests (0 KB) come from third-party domains. The HTML declares 22 images but only 8 loaded, the rest are lazy-loaded and fetched when scrolled to.
Nothing in this section matches the current filter.
Security
Transport security, reputation and the response headers that protect visitors.
Email addresses in the page
1 found
1 email address is written into the page as plain text, where harvesting bots collect them for spam and phishing.
[email protected]
How to fix
security.txt
No security.txt, so somebody who finds a vulnerability has no published way to tell you about it.
https://www.ndopbotanicalhairoil.com/.well-known/security.txt
How to fix
HTTPS is enforced with Strict-Transport-Security.
max-age=63072000; includeSubDomains; preload
MIME sniffing is disabled.
The page is protected against framing.
Referrer-Policy is "strict-origin-when-cross-origin".
strict-origin-when-cross-origin
A Content-Security-Policy is set.
A Permissions-Policy limits which browser features the page and its embeds can use.
The page sets no cookies, so there are none to expose.
No software versions are disclosed in headers or the page.
The TLS certificate is valid for another 51 days, issued by Let's Encrypt.
51 days remaining
Not listed by Google Web Risk for malware, phishing or unwanted software.
Connections use TLS 1.3.
Nothing in this section matches the current filter.
Server & domain
The server and the domain behind the page: protocol, network, registration and email records.
IPv6
www.ndopbotanicalhairoil.com has no IPv6 address. Visitors on IPv6-only mobile networks reach it through a translation gateway, which adds a step.
How to fix
DMARC policy
The DMARC policy for ndopbotanicalhairoil.com is p=none, which collects reports but does not stop mail that spoofs the domain.
v=DMARC1; p=none
How to fix
Served over HTTP/2, which loads a page's files in parallel over one connection.
Served through Vercel, a CDN, so visitors get the page from a server near them.
ndopbotanicalhairoil.com is registered until 26 Dec 2026 with Tucows Domains Inc.
44 days remaining
ndopbotanicalhairoil.com was registered on 26 Dec 2025, under a year ago. Age is not a ranking factor, but an established name is one buyers and partners look for.
ndopbotanicalhairoil.com publishes an SPF record: v=spf1 include:_spf.hostedemail.com ~all
No ad network loads on this page, so ads.txt is not needed.
Nothing in this section matches the current filter.
Links, media & schema
Links, images and structured data.
Structured data is valid: HealthAndBeautyBusiness, OnlineStore, WebSite, FAQPage, Product.
HealthAndBeautyBusiness, OnlineStore, WebSite, FAQPage, Product
5 types: HealthAndBeautyBusiness, OnlineStore, WebSite, FAQPage, Product
Eligible for rich results via FAQPage, Product.
FAQPage, Product
2 types: FAQPage, Product
52 internal and 2 external links.
52 internal, 2 external
52 internal, 2 external
Anchor text describes its destinations.
Outbound link rel attributes look appropriate.
In-page anchors resolve to real targets.
All images carry an alt attribute.
All images declare width and height.
No heavy legacy image formats found.
Image loading strategy looks sound.
Images are served responsively or are small enough not to need it.
All 25 checked links resolve.
Nothing in this section matches the current filter.
What to fix first
Ranked by impact against effort, the top of this list buys the most for the least work.
Score breakdown
How each area scored. Categories that could not be measured are excluded rather than counted as zero.