A · Very good

Page SEO Inspection

https://www.ndopbotanicalhairoil.com/
Crawled 12 Nov, 07:07 UTC (7 hr ago)
HTTP 200 280 KB 1871 ms TTFB
Download PDF

PDF export is a paid feature

A PDF of the full report, ready to send to a client or a colleague, comes with Basic at $19 a month and every plan above it, along with saved history. The report itself stays free to read.

See the plans
On-Page Checklist 86% Complete
Primary focus: The server took 1871 ms to send the first byte, delaying everything that follows. Fix now →
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.

✓ 2100% · excellent
Live snippet simulation
Title width: 457px / 580px
N Ndop Botanical www.ndopbotanicalhairoil.com
Botanical Hair & Scalp Oils, Made in the UK · Ndop

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.

Title tag 457px of 580px

The title length is well judged.

Rendered width

Desktop457px/ 580px
Mobile412px/ 920px

Measured in Arial at the size Google renders result titles, accurate to within a fraction of a percent of a browser. Characters: 50.

Meta description 151 characters

The meta description length is well judged.

Crawling & indexing

Whether search engines can reach, read and index this page at all.

i 1✓ 1694% · excellent
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
How to fix
Redirect each spelling straight to the final address with a 301 or 308.
HTTP status HTTP 200

The page returns 200 OK.

Redirect chain

The URL resolves without redirects.

Robots directives

No directive prevents indexing.

Canonical tag

The canonical correctly references this page.

https://www.ndopbotanicalhairoil.com
Language

Language is declared as "en-GB".

lang="en-GB"
hreflang

No hreflang annotations, which is correct for a single-language page.

Viewport

The viewport is configured for mobile.

width=device-width, initial-scale=1
Character encoding

The page declares UTF-8 encoding.

Favicon

A favicon is declared.

Mixed content

All resources load securely.

URL length 37 characters

The URL is 37 characters.

URL readability

The URL is clean and readable.

URL depth 0 levels deep

The page is 0 levels deep.

URL parameters

The URL has no query parameters.

robots.txt 1 KB

robots.txt is present and does not block crawling.

XML sitemap 56 URLs

A sitemap is published, listing 56 URLs.

Lists 56 URLs

Missing pages (404) HTTP 404

A page that does not exist returns HTTP 404, so search engines drop dead addresses.

Content & metadata

What the page says it is about, and how it reads.

i 1✓ 1091% · excellent
Word count 969 Substantive
Headings 32 Structured
H1 tags 1 Exactly one
Text ratio 2.4% Text vs markup
Heading outline 32 headings
H1 Discover what yourskin, hair & tonesare telling you.
H2 AI-Powered Analysis
H2 Private & Secure
H2 Personalized Recommendations
H2 Botanical Expertise
H2 The Collection
H3 Liquid Silk: Silicone-Free Heat Protectant & Rosemary Scalp Gloss
H3 Amla and Blue Chamomile Scalp Recovery Balm
H3 Neem and Tea Tree Scalp Reset Serum
H3 Rosemary and Amla Revitalising Scalp & Shine Serum
H3 Ultimate Glow Face Oil (50ml)
H3 Dark Spot Correcting Brightening Face Oil (50ml)
H3 Hydrate Light Day Face Oil (50ml)
H3 Night Renewal Healthy Face Oil (50ml)
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
How to fix
Move inline scripts and styles to external files, and remove unused markup.
Open Graph tags

Open Graph tags are present.

Twitter card

twitter:card is set to summary_large_image.

H1 tag

The page has exactly one h1.

Discover what yourskin, hair & tonesare telling you.
Heading hierarchy

The heading outline descends in order.

Content length 969 words

The page has roughly 969 words.

Table headers

No data tables on this page, so there are no columns to label.

Keyword placement

The page's prominent terms appear in its title, description or headings.

Where these terms appear

TermCountDensityTitleDescriptionHeadings
beauty152.19%✕✕✓
hair131.90%✓✓✓
scalp121.75%✓✓✓
reading101.46%✕✓✓
oil101.46%✓✓✓
Keyword repetition

No term is repeated unnaturally often.

Keyword cloud

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.

beautyhairscalpreadingoilfreepersonalizedanalysisskinbotanicaldiagnosticfullwrittennaturalprofileownphotothreestartformulandopface50mlreadingsnothingsecondscansneveroffdoesaccountbotanicalspowereduniquetonesanalysispersonalizedundertonerecommendationsglowcharacteristics
Share image 1200 × 630 px

The share image loads and is 1200 × 630 pixels, the right size and shape for a large card.

AI & answer readiness

Whether answer engines and AI overviews can extract and trust this page.

i 3✓ 770% · good
AI crawlers 10/10 All allowed
Readable without JS Yes Served complete
Identity 1/2 Partly declared
Quotable signals 2/4 Schema, date, author, answers
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
How to fix
Open at least one section with a direct 40 to 60 word answer to the question its heading poses.
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
How to fix
<time datetime="2026-09-17">17 September 2026</time>, or datePublished in Article structured data.
Page subject

FAQPage declared without a name or headline.

FAQPage
How to fix
How to fix
Give each of these a name, or a headline for an Article. The type says what kind of thing the page is about; without a name it does not say which thing.
Attribution

Attribution signals present: publisher in structured data, privacy policy.

publisher in structured data, privacy policy

Answer schema

Answer-friendly structured data: FAQPage, Question.

FAQPage, Question

2 types: FAQPage, Question

Extractable structure 969 words

969 words across 36 headings, 17 lists and 0 tables.

Publisher identity

The page names who is behind it: Ndop Botanical.

Readable without JavaScript

The page reads the same with and without JavaScript.

llms.txt for AI agents

llms.txt is published, giving AI agents a curated map of the site.

AI crawler access 10 checked

Every AI crawler checked is allowed to read this page.

Speed & delivery

What makes the page slow, and what the loading experience measures.

! 2i 1✓ 873% · good
Rendered page
The page as it rendered on a mobile viewport during the performance test
Mobile, measured
The page as it rendered on a desktop viewport
Desktop, measured
LCP Good
1.13s

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.

INP Good
10ms

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.

CLS Good
0

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.

FCP Good
1.13s

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.

TTFBNo data
n/a

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
How to fix
Cache the response, move it closer to visitors, or cut the work done before the first byte.
HTML size 280 KB

The HTML document is 280 KB, heavier than about 90% of pages.

How to fix
How to fix
Move inline scripts and styles to cacheable files, and remove unused markup.
Inline styles 77 found

77 elements carry inline style attributes, which cannot be cached and inflate the document.

How to fix
How to fix
Move repeated styles into a cacheable stylesheet.
Render-blocking resources 2 found

2 render-blocking resources in the head.

Deprecated tags

No deprecated HTML tags are used.

Compression

The response is compressed with br.

Content-Encoding: br
Page weight 28 requests · 572 KB

The page loads 28 requests totalling 572 KB.

What loaded, by type

Type RequestsTransferred
script11of 12 declared308 KB
font3102 KB
image8of 22 declared100 KB
document143 KB
stylesheet116 KB
other43 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.

Security

Transport security, reputation and the response headers that protect visitors.

i 2✓ 1185% · good
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
How to fix
Use a contact form, or show the address through a script or as an image. If the address must stay, give it a strong spam filter.
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
How to fix
Publish /.well-known/security.txt with a Contact: line (an email address or a form) and an Expires: date.
HSTS

HTTPS is enforced with Strict-Transport-Security.

max-age=63072000; includeSubDomains; preload
MIME sniffing

MIME sniffing is disabled.

Clickjacking protection

The page is protected against framing.

Referrer policy

Referrer-Policy is "strict-origin-when-cross-origin".

strict-origin-when-cross-origin
Content Security Policy

A Content-Security-Policy is set.

Permissions policy

A Permissions-Policy limits which browser features the page and its embeds can use.

Cookie flags

The page sets no cookies, so there are none to expose.

Version disclosure

No software versions are disclosed in headers or the page.

TLS certificate 51 days left

The TLS certificate is valid for another 51 days, issued by Let's Encrypt.

51 days remaining
Google Web Risk

Not listed by Google Web Risk for malware, phishing or unwanted software.

TLS version TLS 1.3

Connections use TLS 1.3.

Server & domain

The server and the domain behind the page: protocol, network, registration and email records.

i 2✓ 571% · good
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
How to fix
Add an AAAA record. Most hosts and every major CDN provide an IPv6 address.
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
How to fix
Once the reports show only your own services sending, move to p=quarantine and then p=reject.
HTTP/2 HTTP/2

Served over HTTP/2, which loads a page's files in parallel over one connection.

CDN Vercel

Served through Vercel, a CDN, so visitors get the page from a server near them.

Domain expiry 44 days left

ndopbotanicalhairoil.com is registered until 26 Dec 2026 with Tucows Domains Inc.

44 days remaining
Domain age Under a year old

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.

SPF record

ndopbotanicalhairoil.com publishes an SPF record: v=spf1 include:_spf.hostedemail.com ~all

ads.txt

No ad network loads on this page, so ads.txt is not needed.

Links, media & schema

Links, images and structured data.

✓ 12100% · excellent
Social share preview From this page's Open Graph tags
Structured data

Structured data is valid: HealthAndBeautyBusiness, OnlineStore, WebSite, FAQPage, Product.

HealthAndBeautyBusiness, OnlineStore, WebSite, FAQPage, Product

5 types: HealthAndBeautyBusiness, OnlineStore, WebSite, FAQPage, Product

Rich result eligibility

Eligible for rich results via FAQPage, Product.

FAQPage, Product

2 types: FAQPage, Product

Link distribution 54 resources

52 internal and 2 external links.

52 internal, 2 external

52 internal, 2 external

Anchor text

Anchor text describes its destinations.

Link rel attributes

Outbound link rel attributes look appropriate.

In-page anchors

In-page anchors resolve to real targets.

Image alt text

All images carry an alt attribute.

Image dimensions

All images declare width and height.

Image formats

No heavy legacy image formats found.

Image loading

Image loading strategy looks sound.

Responsive images

Images are served responsively or are small enough not to need it.

Broken links 25 checked

All 25 checked links resolve.

What to fix first

Ranked by impact against effort, the top of this list buys the most for the least work.

1
! Recommended The server took 1871 ms to send the first byte, delaying everything that follows.
Cache the response, move it closer to visitors, or cut the work done before the first byte.
moderate
2
! Recommended The HTML document is 280 KB, heavier than about 90% of pages.
Move inline scripts and styles to cacheable files, and remove unused markup.
involved
3
· Notice FAQPage declared without a name or headline.
Give each of these a name, or a headline for an Article. The type says what kind of thing the page is about; without a name it does not say which thing.
quick fix
4
· Notice The page publishes no date. Not expected on a page like this; worth adding if its content goes out of date.
<time datetime="2026-09-17">17 September 2026</time>, or datePublished in Article structured data.
quick fix
5
· Notice No heading is followed by a concise 40 to 60 word answer, the shape featured snippets and AI overviews extract.
Open at least one section with a direct 40 to 60 word answer to the question its heading poses.
moderate
6
· Notice 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.
Redirect each spelling straight to the final address with a 301 or 308.
quick fix
7
· Notice Only 2.4% of the page is readable text; the rest is markup and script.
Move inline scripts and styles to external files, and remove unused markup.
involved
8
· Notice No security.txt, so somebody who finds a vulnerability has no published way to tell you about it.
Publish /.well-known/security.txt with a Contact: line (an email address or a form) and an Expires: date.
quick fix
9
· Notice 1 email address is written into the page as plain text, where harvesting bots collect them for spam and phishing.
Use a contact form, or show the address through a script or as an image. If the address must stay, give it a strong spam filter.
quick fix
10
· Notice www.ndopbotanicalhairoil.com has no IPv6 address. Visitors on IPv6-only mobile networks reach it through a translation gateway, which adds a step.
Add an AAAA record. Most hosts and every major CDN provide an IPv6 address.
quick fix
11
· Notice The DMARC policy for ndopbotanicalhairoil.com is p=none, which collects reports but does not stop mail that spoofs the domain.
Once the reports show only your own services sending, move to p=quarantine and then p=reject.
quick fix
12
· Notice 77 elements carry inline style attributes, which cannot be cached and inflate the document.
Move repeated styles into a cacheable stylesheet.
involved

Score breakdown

How each area scored. Categories that could not be measured are excluded rather than counted as zero.

Indexability & Crawling38 checks · 5 issues
93
On-Page Content & Structure22 checks · 4 issues
94
Core Web Vitals11 checks · 3 issues
86
Schema & Rich Snippets2 checks · 0 issues
100
Media & Links10 checks · 0 issues
100
Overall scoreGrade A · 71/85 passed
93