Catalog / ghdmedia.com
61

SEO audit for ghdmedia.com

GHD Media - Mobile Marketing & Promotion Platform

saas

Health 61/100 (fair) · 50 pages crawled · generated 2026-08-26

Download Markdown report (feed to ChatGPT / Claude / Cursor)

GHDmedia cung cấp các dịch vụ Digital Marketing, Mobile Marketing dành cho doanh nghiệp. Với hơn 10 năm kinh nghiệm và hàng loạt các dịch vụ trọng điểm như Mobile Marketing, SMS, MMS, facebook ads, go…

Screenshot of ghdmedia.com
50
pages crawled
50
indexable pages
3
errors
73
warnings
601
notices
0
orphan pages
0
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Titles 93 1 9 24
Security 97 1 1 49
Structured Data 98 1 0 17
Agent Readiness 71 0 49 35
Links 96 0 7 14
Duplicate 96 0 6 14
Headings 99 0 1 18
Cache 100 0 0 49
Canonical 100 0 0 1
Content 100 0 0 53
Crawlability 100 0 0 3
Images 100 0 0 52
Meta Description 100 0 0 20
Mobile 100 0 0 1
Performance 100 0 0 198
Sitemap 100 0 0 1
Social 100 0 0 52
Findings

Errors (3 rules)

error JSON-LD block missing @context or @type

Rule schema.no_context_type · Structured Data · 1 occurrence(s)

error Mixed content on HTTPS page

Rule security.mixed_content · Security · 1 occurrence(s)

error Missing or empty <title>

Rule title.missing · Titles · 1 occurrence(s)

Warnings (7 rules)

warning Control has no accessible name

Rule agent.control_no_name · Agent Readiness · 49 occurrence(s)

warning Duplicate page content

Rule duplicate.content · Duplicate · 2 occurrence(s)

warning Duplicate <title> across pages

Rule duplicate.title · Duplicate · 4 occurrence(s)

warning Missing <h1>

Rule h1.missing · Headings · 1 occurrence(s)

warning Content-Type header doesn't match the actual content

Rule headers.content_type_mismatch · Security · 1 occurrence(s)

  • https://ghdmedia.com/sms-brandname.htm — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".

warning Internal link points to a redirect

Rule links.redirect_target · Links · 7 occurrence(s)

warning Title likely truncated in SERP (too wide)

Rule title.too_long · Titles · 9 occurrence(s)

Notices (30 rules)

notice Heading levels skip a level

Rule agent.heading_skip · Agent Readiness · 32 occurrence(s)

notice No llms.txt for AI agents

Rule agent.llms_txt_missing · Agent Readiness · 1 occurrence(s)

  • https://ghdmedia.com/ — no llms.txt found at the site root — add one so AI agents get a curated site summary

notice No main landmark for AI agents

Rule agent.no_main_landmark · Agent Readiness · 2 occurrence(s)

notice Page served uncached (no-store/private or CDN bypass)

Rule cache.not_cacheable · Cache · 49 occurrence(s)

notice Canonical points to a different URL

Rule canonical.non_self · Canonical · 1 occurrence(s)

notice Main text is hard to read (low Flesch Reading Ease)

Rule content.readability_poor · Content · 3 occurrence(s)

  • https://ghdmedia.com/contact-us — this page reads as difficult (Flesch Reading Ease 37, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://ghdmedia.com/contact-us?service_ids[]=12 — this page reads as difficult (Flesch Reading Ease 37, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://ghdmedia.com/gioi-thieu — this page reads as difficult (Flesch Reading Ease 43, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.

notice Duplicate meta description across pages

Rule duplicate.meta_desc · Duplicate · 14 occurrence(s)

notice Missing html lang attribute

Rule i18n.lang_missing · Mobile · 1 occurrence(s)

notice Image alt text is keyword-stuffed (repetition / low variety)

Rule images.alt_stuffed · Images · 1 occurrence(s)

  • http://ghdmedia.com/blog?page=2 — 1 image(s) have keyword-stuffed alt text — the same word repeated several times, or a long low-variety keyword list. Google's image guidance asks for short, descriptive alt text, not keyword lists; rewrite it to describe the image.

notice Image alt text is very long (possible keyword stuffing)

Rule images.alt_too_long · Images · 1 occurrence(s)

notice Likely hero image lacks fetchpriority=high

Rule images.hero_no_fetchpriority · Performance · 49 occurrence(s)

  • http://ghdmedia.com/blog?page=2 — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • http://ghdmedia.com/tags/digital-marketing?page=2 — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/ — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/bai-viet/cac-mau-tin-nhan-noi-bat-cho-spa-salon — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/bai-viet/mot-so-dieu-can-biet-ve-tin-nhan-quang-cao-danh-cho — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/bai-viet/mot-so-nguyen-tac-vang-de-thiet-lap-mau-tin-nhan-thu — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/blog — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/case-studies — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/contact-us — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/contact-us?service_ids[]=12 — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/dich-vu — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/dich-vu-quang-cao-facebook — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/dich-vu/dang-ky-ten-dinh-danh — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/dich-vu/dich-vu-adcall — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/dich-vu/dich-vu-cloud-vps — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/dich-vu/dich-vu-google-ads — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/dich-vu/dich-vu-toi-uu-tim-kiem-seo — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/dich-vu/mms-brandname — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/dich-vu/quang-cao-lcd-tai-benh-vien — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/dich-vu/thiet-ke-website — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/dich-vu/toi-uu-cai-ung-dung — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/gioi-thieu — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/lien-he — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/tac-gia/anhvkv — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
  • https://ghdmedia.com/tags/digital-marketing — the likely hero/LCP image (logo.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.

notice Images without width/height (layout shift / CLS)

Rule images.missing_dimensions · Images · 50 occurrence(s)

notice Internal link has no anchor text / accessible name

Rule links.no_anchor_text · Links · 14 occurrence(s)

notice Legacy <meta name=keywords> tag present (Google ignores it)

Rule meta.keywords_present · Content · 50 occurrence(s)

notice Meta description too short

Rule meta_desc.too_short · Meta Description · 1 occurrence(s)

notice Missing Open Graph tags

Rule og.missing · Social · 2 occurrence(s)

notice Legacy image format (jpg/png/gif) with no next-gen fallback

Rule perf.images_legacy_format · Performance · 50 occurrence(s)

  • http://ghdmedia.com/blog?page=2 — 24 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • http://ghdmedia.com/tags/digital-marketing?page=2 — 19 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/ — 20 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/bai-viet/cac-mau-tin-nhan-noi-bat-cho-spa-salon — 15 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/bai-viet/mot-so-nguyen-tac-vang-de-thiet-lap-mau-tin-nhan-thu — 14 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/blog — 24 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/case-studies — 19 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/contact-us — 9 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/contact-us?service_ids[]=12 — 9 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/dich-vu — 28 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/dich-vu-quang-cao-facebook — 32 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/dich-vu/dang-ky-ten-dinh-danh — 17 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/dich-vu/dich-vu-adcall — 48 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/dich-vu/dich-vu-cloud-vps — 14 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/dich-vu/dich-vu-google-ads — 20 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/dich-vu/dich-vu-toi-uu-tim-kiem-seo — 18 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/dich-vu/mms-brandname — 18 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/dich-vu/quang-cao-lcd-tai-benh-vien — 24 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/dich-vu/thiet-ke-website — 18 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/dich-vu/toi-uu-cai-ung-dung — 19 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/gioi-thieu — 17 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/lien-he — 9 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/sms-brandname.htm — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/tac-gia/anhvkv — 25 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
  • https://ghdmedia.com/tags/digital-marketing — 19 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.

notice No ETag header (no conditional GET for unchanged pages)

Rule perf.no_etag · Performance · 49 occurrence(s)

  • http://ghdmedia.com/blog?page=2 — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • http://ghdmedia.com/tags/digital-marketing?page=2 — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/ — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/bai-viet/cac-mau-tin-nhan-noi-bat-cho-spa-salon — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/bai-viet/mot-so-dieu-can-biet-ve-tin-nhan-quang-cao-danh-cho — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/bai-viet/mot-so-nguyen-tac-vang-de-thiet-lap-mau-tin-nhan-thu — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/blog — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/case-studies — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/contact-us — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/contact-us?service_ids[]=12 — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/dich-vu — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/dich-vu-quang-cao-facebook — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/dich-vu/dang-ky-ten-dinh-danh — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/dich-vu/dich-vu-adcall — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/dich-vu/dich-vu-cloud-vps — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/dich-vu/dich-vu-google-ads — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/dich-vu/dich-vu-toi-uu-tim-kiem-seo — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/dich-vu/mms-brandname — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/dich-vu/quang-cao-lcd-tai-benh-vien — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/dich-vu/thiet-ke-website — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/dich-vu/toi-uu-cai-ung-dung — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/gioi-thieu — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/lien-he — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/tac-gia/anhvkv — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
  • https://ghdmedia.com/tags/digital-marketing — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.

notice No Last-Modified header (no conditional GET for unchanged pages)

Rule perf.no_last_modified · Performance · 49 occurrence(s)

  • http://ghdmedia.com/blog?page=2 — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • http://ghdmedia.com/tags/digital-marketing?page=2 — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/ — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/bai-viet/cac-mau-tin-nhan-noi-bat-cho-spa-salon — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/bai-viet/mot-so-dieu-can-biet-ve-tin-nhan-quang-cao-danh-cho — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/bai-viet/mot-so-nguyen-tac-vang-de-thiet-lap-mau-tin-nhan-thu — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/blog — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/case-studies — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/contact-us — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/contact-us?service_ids[]=12 — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/dich-vu — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/dich-vu-quang-cao-facebook — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/dich-vu/dang-ky-ten-dinh-danh — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/dich-vu/dich-vu-adcall — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/dich-vu/dich-vu-cloud-vps — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/dich-vu/dich-vu-google-ads — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/dich-vu/dich-vu-toi-uu-tim-kiem-seo — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/dich-vu/mms-brandname — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/dich-vu/quang-cao-lcd-tai-benh-vien — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/dich-vu/thiet-ke-website — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/dich-vu/toi-uu-cai-ung-dung — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/gioi-thieu — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/lien-he — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/tac-gia/anhvkv — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://ghdmedia.com/tags/digital-marketing — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.

notice Slow server response

Rule perf.slow_response · Performance · 1 occurrence(s)

notice URL redirects to another URL

Rule redirect.single · Crawlability · 3 occurrence(s)

notice Deprecated schema type with no Google rich result

Rule schema.deprecated_type · Structured Data · 1 occurrence(s)

notice target=_blank link without rel=noopener (tab-napping)

Rule security.unsafe_cross_origin_links · Security · 49 occurrence(s)

notice Indexable page not listed in sitemap

Rule sitemap.orphan_not_listed · Sitemap · 1 occurrence(s)

notice Title tag is identical to the H1 (missed keyword variation)

Rule title.same_as_h1 · Titles · 20 occurrence(s)

notice Title is very short

Rule title.too_short · Titles · 4 occurrence(s)

Pages (showing 50 of 50)
URLStatusIndexableWordsIn-links
https://ghdmedia.com/
GHD Media - Mobile Marketing & Promotion Platform
200 yes 1288 50
https://ghdmedia.com/blog
Blog - GHD Media
200 yes 911 49
https://ghdmedia.com/case-studies
Case studies - GHD Media - Dịch vụ Mobile Marketing & Promotion Platform
200 yes 586 49
https://ghdmedia.com/contact-us
Liên hệ - GHD Media
200 yes 271 49
https://ghdmedia.com/dich-vu
Dịch vụ Mobile Marketing & Promotion Platform - GHD Media
200 yes 686 49
https://ghdmedia.com/dich-vu/dang-ky-ten-dinh-danh
Đăng ký cấp Giấy chứng nhận tên định danh (Đăng ký tên định danh)
200 yes 1601 49
https://ghdmedia.com/dich-vu/dich-vu-adcall
Dịch vụ AdCall
200 yes 2132 49
https://ghdmedia.com/dich-vu/dich-vu-cham-soc-fanpage-facebook
Chăm sóc Fanpage Facebook
200 yes 2236 49
https://ghdmedia.com/dich-vu/dich-vu-cloud-vps 200 yes 1406 49
https://ghdmedia.com/dich-vu/dich-vu-toi-uu-tim-kiem-seo
SEO Website
200 yes 2653 49
https://ghdmedia.com/dich-vu/mms-brandname
MMS Brandname tin nhắn đa phương tiện truyền thông thương hiệu
200 yes 2011 49
https://ghdmedia.com/dich-vu/thiet-ke-website
Dịch vụ thiết kế website chuyên nghiệp, đạt tiêu chuẩn, đầy đủ tính năng dành cho doanh nghiệp.
200 yes 3029 49
https://ghdmedia.com/dich-vu/toi-uu-cai-ung-dung
Tối ưu lượt cài ứng dụng
200 yes 2683 49
https://ghdmedia.com/gioi-thieu
Giới thiệu - GHD Media
200 yes 392 49
https://ghdmedia.com/lien-he
Liên hệ - GHD Media
200 yes 223 49
https://ghdmedia.com/tac-gia/anhvkv
Giới thiệu về: Vy Anh - GHD Media
200 yes 1199 11
https://ghdmedia.com/bai-viet/doanh-nghiep-can-phai-co-mot-website-chuyen-nghiep
Doanh nghiệp cần phải có một website chuyên nghiệp không ?
200 yes 3117 3
https://ghdmedia.com/tags/digital-marketing
Tags: Digital Marketing - GHD Media - Dịch vụ Mobile Marketing & Promotion Platform
200 yes 610 11
https://ghdmedia.com/tags/mobile-marketing
Tags: Mobile Marketing - GHD Media - Dịch vụ Mobile Marketing & Promotion Platform
200 yes 705 11
https://ghdmedia.com/tags/seo
Tags: Seo - GHD Media - Dịch vụ Mobile Marketing & Promotion Platform
200 yes 716 11
https://ghdmedia.com/dich-vu/dich-vu-tang-view-youtube
Tăng View Youtube
200 yes 988 3
https://ghdmedia.com/tags/email-marketing
Tags: Email Marketing - GHD Media - Dịch vụ Mobile Marketing & Promotion Platform
200 yes 352 9
https://ghdmedia.com/tags/google-adwords
Tags: Google Adwords - GHD Media - Dịch vụ Mobile Marketing & Promotion Platform
200 yes 545 9
https://ghdmedia.com/sms-brandname.htm
Dịch vụ tin nhắn thương hiệu SMS Brandname GHD
200 yes 315 8
https://ghdmedia.com/bai-viet/inbound-marketing-la-gi-4-giai-doan-trien-khai-inbound-hieu-qua
Inbound Marketing là gì? 4 giai đoạn triển khai inbound hiệu quả
200 yes 4468 4
https://ghdmedia.com/dich-vu/dich-vu-google-ads
GHD Media - Mobile Marketing & Promotion Platform
200 yes 1288 5
https://ghdmedia.com/bai-viet/10-cong-cu-ho-tro-viet-bai-seo-cho-nguoi-moi
10 Công cụ hỗ trợ viết bài chuẩn SEO cho người mới
200 yes 2693 2
https://ghdmedia.com/bai-viet/su-dung-mobile-marketing-hieu-qua-cho-chien-dich-truyen-thong
Sử dụng Mobile marketing hiệu quả cho chiến dịch truyền thông
200 yes 1893 2
https://ghdmedia.com/dich-vu/dich-vu-voice-otp
VOICE OTP
200 yes 1557 1
https://ghdmedia.com/dich-vu/quang-cao-lcd-tai-benh-vien
Quảng cáo LCD tại bệnh viện
200 yes 1604 1
http://ghdmedia.com/blog?page=2
Blog - GHD Media
200 yes 929 1
https://ghdmedia.com/dich-vu/data-hub
DATA HUB
200 yes 798 1
https://ghdmedia.com/bai-viet/mot-so-nguyen-tac-vang-de-thiet-lap-mau-tin-nhan-thu
Một số nguyên tắc “vàng’’ để thiết lập mẫu tin nhắn thu hút khách hàng
200 yes 1390 4
http://ghdmedia.com/tags/digital-marketing?page=2
Tags: Digital Marketing - GHD Media - Dịch vụ Mobile Marketing & Promotion Platform
200 yes 700 1
https://ghdmedia.com/bai-viet/co-nen-dung-mms-brandname-de-gui-tin-quang-cao-khong
Có nên dùng MMS Brandname để gửi tin quảng cáo đến khách hàng không?
200 yes 2730 2
https://ghdmedia.com/dich-vu-quang-cao-facebook
Dịch vụ quảng cáo Facebook 2026 (Facebook Ads)
200 yes 3138 2
https://ghdmedia.com/bai-viet/dang-ky-dich-vu-sms-brandname-va-mms-brandname-nhan
SMS Brandname, MMS Brandname - Gửi tin nhắn quảng cáo, tin chăm sóc khách hàng tới tập khách hàng tiềm năng
200 yes 2257 2
https://ghdmedia.com/bai-viet/6-chien-luoc-gay-thu-hut-danh-cho-tin-nhan-quang-cao
Làm thế nào để gây sự chú ý của Khách hàng đối với Tin nhắn Quảng cáo ngành Bất động sản?
200 yes 1163 1
https://ghdmedia.com/contact-us?service_ids[]=12
Liên hệ - GHD Media
200 yes 271 1
https://ghdmedia.com/bai-viet/cac-mau-tin-nhan-noi-bat-cho-spa-salon
Các mẫu tin nhắn nổi bật cho Spa, Salon
200 yes 619 1
https://ghdmedia.com/bai-viet/mua-luot-tai-appgame-o-dau-gia-re-va-uy-tin
Mua lượt tải app/game ở đâu giá rẻ và uy tín?
200 yes 2111 1
https://ghdmedia.com/bai-viet/5-loi-ich-sms-brandname-mang-lai-cho-doanh-nghiep
5 Lợi ích SMS Brandname mang lại cho doanh nghiệp
200 yes 1396 1
https://ghdmedia.com/bai-viet/chien-dich-smsmms-brandname-cho-quang-cao-tham-my-vien
Chiến dịch SMS/MMS brandname cho quảng cáo Thẩm Mỹ Viện, SPA
200 yes 3403 1
https://ghdmedia.com/bai-viet/goi-toi-uu-aso-co-ban-cho-ung-dung-hieu-qua-cao-voi
Gói Tối ưu (ASO) cơ bản cho ứng dụng – Hiệu quả cao với chi phí thấp
200 yes 1611 0
https://ghdmedia.com/bai-viet/hieu-qua-cua-dich-vu-quang-cao-lcd-tai-quan-karaoke
Hiệu quả của Dịch vụ quảng cáo LCD tại quán karaoke không thể bỏ qua
200 yes 906 0
https://ghdmedia.com/bai-viet/mau-kich-ban-tin-nhan-quang-cao-nganh-bat-dong-san
Mẫu kịch bản Tin nhắn Quảng cáo ngành Bất động sản
200 yes 529 0
https://ghdmedia.com/bai-viet/mot-so-dieu-can-biet-ve-tin-nhan-quang-cao-danh-cho
Một số điều cần biết về Tin nhắn Quảng cáo dành cho ngành Spa, Salon
200 yes 786 0
https://ghdmedia.com/bai-viet/mot-so-mau-tin-nhan-quang-cao-danh-cho-nganh-fnb
Một số mẫu tin nhắn Quảng cáo dành cho ngành FnB
200 yes 577 0
https://ghdmedia.com/bai-viet/quang-cao-lcd-tai-sieu-thi-trung-tam-thuong-mai
Quảng cáo hiển thị trên màn hình LCD tại siêu thị, trung tâm thương mại
200 yes 1495 0
https://ghdmedia.com/bai-viet/seo-la-gi-seo-quan-trong-nhu-the-nao-doi-voi-doanh
SEO là gì? SEO quan trọng như thế nào đối với doanh nghiệp?
200 yes 1991 0

Audit your own site — free

157 checks, internal PageRank, render-diff. No signup, results in ~30s.

Scan your site →