---
tool: Crawlinx SEO audit
source: https://crawlinx.com
domain: x-opt.io
report_url: "https://crawlinx.com/audit/x-opt.io"
crawl_id: 20260719T013834-b65121e4
health_score: 65
generated_at: 2026-07-29T00:38:44Z
total_pages: 50
html_pages: 50
indexable_pages: 50
errors: 0
warnings: 239
notices: 535
---

# SEO audit: x-opt.io

**Health score: 65/100** — needs attention

> Audited by [Crawlinx](https://crawlinx.com) — the free technical-SEO crawler. Full report: https://crawlinx.com/audit/x-opt.io

## Overview

| Metric | Value |
| --- | --- |
| Pages crawled | 50 |
| HTML pages | 50 |
| Indexable | 50 |
| Non-indexable | 0 |
| Orphan pages | 0 |
| Broken internal links | 0 |
| Avg response time | 1013 ms |
| Errors / Warnings / Notices | 0 / 239 / 535 |
| Status codes | 50×200 |

## Categories

| Category | Score | Errors | Warnings | Notices |
| --- | ---: | ---: | ---: | ---: |
| Agent Readiness | 70 | 0 | 50 | 55 |
| Performance | 70 | 0 | 50 | 150 |
| Content | 77 | 0 | 38 | 50 |
| Titles | 77 | 0 | 38 | 0 |
| Images | 83 | 0 | 29 | 50 |
| Canonical | 90 | 0 | 16 | 0 |
| Headings | 90 | 0 | 16 | 0 |
| Duplicate | 99 | 0 | 2 | 22 |
| Meta Description | 100 | 0 | 0 | 2 |
| Security | 100 | 0 | 0 | 100 |
| Social | 100 | 0 | 0 | 50 |
| Structured Data | 100 | 0 | 0 | 50 |
| URL | 100 | 0 | 0 | 6 |

## Issues

### Warnings (239)

#### Control has no accessible name

- Rule: `agent.control_no_name` · Category: Agent Readiness · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog](https://x-opt.io/blog) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/case](https://x-opt.io/case) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/case/1063](https://x-opt.io/case/1063) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/contact](https://x-opt.io/contact) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295) — 2 button/link(s) with no text or aria-label — an agent can't target them
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — 2 button/link(s) with no text or aria-label — an agent can't target them

#### Missing canonical tag

- Rule: `canonical.missing` · Category: Canonical · Occurrences: 16

- [https://x-opt.io/](https://x-opt.io/)
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97)
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B)
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB)
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB)
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob)
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2)
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy)
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing)
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent)
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition)
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration)
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie)
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84)
- [https://x-opt.io/case](https://x-opt.io/case)

#### Thin content (low word count)

- Rule: `content.thin` · Category: Content · Occurrences: 38

- [https://x-opt.io/blog](https://x-opt.io/blog) — 112 words
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — 128 words
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — 127 words
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — 169 words
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — 191 words
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — 187 words
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — 129 words
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — 163 words
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — 116 words
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — 186 words
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — 173 words
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — 110 words
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — 111 words
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — 186 words
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — 178 words
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — 183 words
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — 185 words
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — 163 words
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — 75 words
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — 104 words
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — 72 words
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — 75 words
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — 103 words
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — 76 words
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2) — 76 words
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — 112 words
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — 92 words
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — 113 words
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — 97 words
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — 71 words
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — 111 words
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — 76 words
- [https://x-opt.io/case](https://x-opt.io/case) — 91 words
- [https://x-opt.io/case/1063](https://x-opt.io/case/1063) — 183 words
- [https://x-opt.io/contact](https://x-opt.io/contact) — 63 words
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — 145 words
- [https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295) — 63 words
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — 166 words

#### Duplicate <title> across pages

- Rule: `duplicate.title` · Category: Duplicate · Occurrences: 2

- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — title shared by 2 pages: https://x-opt.io/blog/category/btob/page/2
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2) — title shared by 2 pages: https://x-opt.io/blog/category/btob

#### Missing <h1>

- Rule: `h1.missing` · Category: Headings · Occurrences: 16

- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97)
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B)
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB)
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB)
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob)
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2)
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy)
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing)
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent)
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition)
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration)
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie)
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84)
- [https://x-opt.io/contact](https://x-opt.io/contact)
- [https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295)

#### Images missing alt text

- Rule: `images.missing_alt` · Category: Images · Occurrences: 29

- [https://x-opt.io/](https://x-opt.io/) — 15 of 43 images missing alt
- [https://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — 1 of 26 images missing alt
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — 1 of 14 images missing alt
- [https://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — 1 of 18 images missing alt
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — 1 of 14 images missing alt
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — 1 of 16 images missing alt
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — 1 of 19 images missing alt
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — 1 of 17 images missing alt
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — 1 of 18 images missing alt
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — 1 of 18 images missing alt
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — 1 of 15 images missing alt
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — 1 of 21 images missing alt
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — 1 of 29 images missing alt
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — 1 of 18 images missing alt
- [https://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — 1 of 22 images missing alt
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — 1 of 13 images missing alt
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — 1 of 13 images missing alt
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — 1 of 16 images missing alt
- [https://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — 1 of 23 images missing alt
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — 1 of 17 images missing alt
- [https://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — 1 of 23 images missing alt
- [https://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — 1 of 39 images missing alt
- [https://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — 1 of 37 images missing alt
- [https://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — 1 of 33 images missing alt
- [https://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — 1 of 41 images missing alt
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — 1 of 31 images missing alt
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — 1 of 28 images missing alt
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — 1 of 20 images missing alt
- [https://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — 1 of 18 images missing alt

#### Render-blocking script in <head> (no defer/async)

- Rule: `perf.render_blocking` · Category: Performance · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog](https://x-opt.io/blog) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/case](https://x-opt.io/case) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/case/1063](https://x-opt.io/case/1063) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/contact](https://x-opt.io/contact) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295) — 5 render-blocking <script> in <head> (add defer/async or use type=module)
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — 5 render-blocking <script> in <head> (add defer/async or use type=module)

#### Title likely truncated in SERP (too wide)

- Rule: `title.too_long` · Category: Titles · Occurrences: 38

- [https://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — 74 chars, ~653px (limit ~580px)
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — 79 chars, ~698px (limit ~580px)
- [https://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — 82 chars, ~725px (limit ~580px)
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — 85 chars, ~747px (limit ~580px)
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — 90 chars, ~799px (limit ~580px)
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — 73 chars, ~646px (limit ~580px)
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — 86 chars, ~761px (limit ~580px)
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — 93 chars, ~840px (limit ~580px)
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — 93 chars, ~824px (limit ~580px)
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — 83 chars, ~741px (limit ~580px)
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — 77 chars, ~682px (limit ~580px)
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — 70 chars, ~619px (limit ~580px)
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — 74 chars, ~655px (limit ~580px)
- [https://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — 82 chars, ~736px (limit ~580px)
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — 87 chars, ~770px (limit ~580px)
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — 94 chars, ~833px (limit ~580px)
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — 67 chars, ~590px (limit ~580px)
- [https://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — 98 chars, ~880px (limit ~580px)
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — 81 chars, ~716px (limit ~580px)
- [https://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — 87 chars, ~772px (limit ~580px)
- [https://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — 81 chars, ~698px (limit ~580px)
- [https://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — 82 chars, ~707px (limit ~580px)
- [https://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — 72 chars, ~617px (limit ~580px)
- [https://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — 83 chars, ~716px (limit ~580px)
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — 69 chars, ~596px (limit ~580px)
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — 71 chars, ~608px (limit ~580px)
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — 88 chars, ~785px (limit ~580px)
- [https://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — 84 chars, ~744px (limit ~580px)
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — 66 chars, ~581px (limit ~580px)
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — 66 chars, ~581px (limit ~580px)
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — 66 chars, ~581px (limit ~580px)
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — 68 chars, ~599px (limit ~580px)
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — 69 chars, ~608px (limit ~580px)
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — 70 chars, ~617px (limit ~580px)
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — 68 chars, ~599px (limit ~580px)
- [https://x-opt.io/case/1063](https://x-opt.io/case/1063) — 93 chars, ~822px (limit ~580px)
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — 73 chars, ~654px (limit ~580px)
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — 70 chars, ~613px (limit ~580px)

### Notices (535)

#### Heading levels skip a level

- Rule: `agent.heading_skip` · Category: Agent Readiness · Occurrences: 4

- [https://x-opt.io/blog](https://x-opt.io/blog) — h3 follows h1 — skips h2
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — h3 follows h1 — skips h2
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — h3 follows h1 — skips h2
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — h3 follows h1 — skips h2

#### No llms.txt for AI agents

- Rule: `agent.llms_txt_missing` · Category: Agent Readiness · Occurrences: 1

- [https://x-opt.io/](https://x-opt.io/) — no llms.txt found at the site root — add one so AI agents get a curated site summary

#### No main landmark for AI agents

- Rule: `agent.no_main_landmark` · Category: Agent Readiness · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog](https://x-opt.io/blog) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/case](https://x-opt.io/case) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/case/1063](https://x-opt.io/case/1063) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/contact](https://x-opt.io/contact) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295) — add a <main> element (or role=main) around the primary content
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — add a <main> element (or role=main) around the primary content

#### Low text-to-HTML ratio

- Rule: `content.low_ratio` · Category: Content · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/) — 1.1%
- [https://x-opt.io/blog](https://x-opt.io/blog) — 0.7%
- [https://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — 3.8%
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — 1.1%
- [https://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — 2.8%
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — 1.2%
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — 1.9%
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — 1.9%
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — 2.0%
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — 1.4%
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — 1.6%
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — 0.9%
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — 2.7%
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — 2.0%
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — 1.4%
- [https://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — 3.4%
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — 0.7%
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — 0.8%
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — 1.6%
- [https://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — 3.1%
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — 1.9%
- [https://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — 4.0%
- [https://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — 1.7%
- [https://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — 1.7%
- [https://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — 1.7%
- [https://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — 1.7%
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — 1.4%
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — 1.4%
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — 1.3%
- [https://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — 3.0%
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — 0.3%
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — 0.7%
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — 0.3%
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — 0.3%
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — 0.7%
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — 0.4%
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2) — 0.3%
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — 0.6%
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — 0.6%
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — 0.7%
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — 0.6%
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — 0.3%
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — 0.6%
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — 0.4%
- [https://x-opt.io/case](https://x-opt.io/case) — 0.6%
- [https://x-opt.io/case/1063](https://x-opt.io/case/1063) — 2.3%
- [https://x-opt.io/contact](https://x-opt.io/contact) — 0.2%
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — 1.9%
- [https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295) — 0.2%
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — 2.0%

#### Duplicate meta description across pages

- Rule: `duplicate.meta_desc` · Category: Duplicate · Occurrences: 22

- [https://x-opt.io/](https://x-opt.io/) — meta description shared by 17 pages: https://x-opt.io/blog/category/btob, https://x-opt.io/case, https://x-opt.io/contact
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — meta description shared by 5 pages: https://x-opt.io/blog/20210810/934, https://x-opt.io/blog/20210810/913, https://x-opt.io/blog/20210810/896
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — meta description shared by 5 pages: https://x-opt.io/blog/20210810/934, https://x-opt.io/blog/20210810/913, https://x-opt.io/blog/20210810/896
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — meta description shared by 5 pages: https://x-opt.io/blog/20210810/934, https://x-opt.io/blog/20210810/913, https://x-opt.io/blog/20210422/566
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — meta description shared by 5 pages: https://x-opt.io/blog/20210810/934, https://x-opt.io/blog/20210810/896, https://x-opt.io/blog/20210422/566
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — meta description shared by 5 pages: https://x-opt.io/blog/20210810/913, https://x-opt.io/blog/20210810/896, https://x-opt.io/blog/20210422/566
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/case, https://x-opt.io/contact
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/case](https://x-opt.io/case) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/contact
- [https://x-opt.io/contact](https://x-opt.io/contact) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — meta description shared by 17 pages: https://x-opt.io/, https://x-opt.io/blog/category/btob, https://x-opt.io/case

#### Likely hero image lacks fetchpriority=high

- Rule: `images.hero_no_fetchpriority` · Category: Performance · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog](https://x-opt.io/blog) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/case](https://x-opt.io/case) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/case/1063](https://x-opt.io/case/1063) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/contact](https://x-opt.io/contact) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — the likely hero/LCP image (gif;base64,r0lgodlhaqabaaaaach5baekaaealaaaaaabaaeaaaictaeaow==) 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.

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

- Rule: `images.missing_dimensions` · Category: Images · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/) — 42 of 43 images without width/height
- [https://x-opt.io/blog](https://x-opt.io/blog) — 11 of 12 images without width/height
- [https://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — 11 of 26 images without width/height
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — 11 of 14 images without width/height
- [https://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — 11 of 18 images without width/height
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — 11 of 14 images without width/height
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — 11 of 16 images without width/height
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — 11 of 19 images without width/height
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — 12 of 17 images without width/height
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — 11 of 18 images without width/height
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — 11 of 18 images without width/height
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — 12 of 15 images without width/height
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — 11 of 21 images without width/height
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — 11 of 29 images without width/height
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — 11 of 18 images without width/height
- [https://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — 11 of 22 images without width/height
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — 11 of 13 images without width/height
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — 11 of 13 images without width/height
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — 11 of 16 images without width/height
- [https://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — 11 of 23 images without width/height
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — 11 of 17 images without width/height
- [https://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — 11 of 23 images without width/height
- [https://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — 12 of 39 images without width/height
- [https://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — 11 of 37 images without width/height
- [https://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — 11 of 33 images without width/height
- [https://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — 11 of 41 images without width/height
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — 12 of 31 images without width/height
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — 11 of 28 images without width/height
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — 11 of 20 images without width/height
- [https://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — 11 of 18 images without width/height
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — 7 of 8 images without width/height
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — 11 of 12 images without width/height
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — 7 of 8 images without width/height
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — 7 of 8 images without width/height
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — 11 of 12 images without width/height
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — 8 of 9 images without width/height
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2) — 7 of 8 images without width/height
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — 11 of 12 images without width/height
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — 11 of 12 images without width/height
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — 11 of 12 images without width/height
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — 11 of 12 images without width/height
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — 7 of 8 images without width/height
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — 11 of 12 images without width/height
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — 8 of 9 images without width/height
- [https://x-opt.io/case](https://x-opt.io/case) — 11 of 12 images without width/height
- [https://x-opt.io/case/1063](https://x-opt.io/case/1063) — 15 of 21 images without width/height
- [https://x-opt.io/contact](https://x-opt.io/contact) — 5 of 6 images without width/height
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — 7 of 8 images without width/height
- [https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295) — 5 of 6 images without width/height
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — 5 of 6 images without width/height

#### Meta description too short

- Rule: `meta_desc.too_short` · Category: Meta Description · Occurrences: 2

- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — 19 chars
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — 11 chars

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

- Rule: `perf.no_etag` · Category: Performance · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/) — 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://x-opt.io/blog](https://x-opt.io/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://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — 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://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — 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://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — 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://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — 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://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — 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://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — 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://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — 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://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — 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://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — 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://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — 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://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — 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://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — 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://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — 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://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — 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://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — 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://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — 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://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — 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://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — 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://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — 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://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — 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://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — 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://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — 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://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — 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://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — 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://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — 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://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — 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://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — 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://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — 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://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — 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://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — 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://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — 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://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — 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://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — 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://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — 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://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/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://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — 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://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — 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://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — 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://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — 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://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — 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://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — 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://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — 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://x-opt.io/case](https://x-opt.io/case) — 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://x-opt.io/case/1063](https://x-opt.io/case/1063) — 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://x-opt.io/contact](https://x-opt.io/contact) — 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://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — 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://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295) — 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://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — 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.

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

- Rule: `perf.no_last_modified` · Category: Performance · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/) — 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://x-opt.io/blog](https://x-opt.io/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://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — 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://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — 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://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — 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://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — 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://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — 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://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — 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://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — 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://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — 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://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — 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://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — 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://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — 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://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — 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://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — 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://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — 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://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — 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://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — 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://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — 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://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — 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://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — 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://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — 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://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — 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://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — 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://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — 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://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — 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://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — 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://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — 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://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — 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://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — 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://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — 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://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — 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://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — 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://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — 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://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — 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://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — 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://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/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://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — 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://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — 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://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — 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://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — 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://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — 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://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — 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://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — 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://x-opt.io/case](https://x-opt.io/case) — 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://x-opt.io/case/1063](https://x-opt.io/case/1063) — 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://x-opt.io/contact](https://x-opt.io/contact) — 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://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — 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://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295) — 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://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — 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.

#### No structured data detected

- Rule: `schema.none` · Category: Structured Data · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/)
- [https://x-opt.io/blog](https://x-opt.io/blog)
- [https://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316)
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488)
- [https://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504)
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523)
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528)
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566)
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670)
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828)
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857)
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888)
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896)
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913)
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934)
- [https://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010)
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085)
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110)
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126)
- [https://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393)
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632)
- [https://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955)
- [https://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203)
- [https://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205)
- [https://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208)
- [https://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213)
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211)
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215)
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641)
- [https://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698)
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97)
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B)
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB)
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB)
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob)
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2)
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy)
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing)
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent)
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition)
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration)
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie)
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84)
- [https://x-opt.io/case](https://x-opt.io/case)
- [https://x-opt.io/case/1063](https://x-opt.io/case/1063)
- [https://x-opt.io/contact](https://x-opt.io/contact)
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial)
- [https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295)
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy)

#### Missing recommended security headers

- Rule: `security.missing_headers` · Category: Security · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog](https://x-opt.io/blog) — X-Content-Type-Options, HSTS, CSP
- [https://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — X-Content-Type-Options, HSTS, CSP
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — X-Content-Type-Options, HSTS, CSP
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — X-Content-Type-Options, HSTS, CSP
- [https://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — X-Content-Type-Options, HSTS, CSP
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — CSP, X-Content-Type-Options, HSTS
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — X-Content-Type-Options, HSTS, CSP
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — CSP, X-Content-Type-Options, HSTS
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — X-Content-Type-Options, HSTS, CSP
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/case](https://x-opt.io/case) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/case/1063](https://x-opt.io/case/1063) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/contact](https://x-opt.io/contact) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — X-Content-Type-Options, HSTS, CSP
- [https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295) — HSTS, CSP, X-Content-Type-Options
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — HSTS, CSP, X-Content-Type-Options

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

- Rule: `security.unsafe_cross_origin_links` · Category: Security · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog](https://x-opt.io/blog) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/case](https://x-opt.io/case) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/case/1063](https://x-opt.io/case/1063) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/contact](https://x-opt.io/contact) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy) — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".

#### Missing Twitter Card tag

- Rule: `twitter.missing` · Category: Social · Occurrences: 50

- [https://x-opt.io/](https://x-opt.io/)
- [https://x-opt.io/blog](https://x-opt.io/blog)
- [https://x-opt.io/blog/20210401/316](https://x-opt.io/blog/20210401/316)
- [https://x-opt.io/blog/20210408/488](https://x-opt.io/blog/20210408/488)
- [https://x-opt.io/blog/20210408/504](https://x-opt.io/blog/20210408/504)
- [https://x-opt.io/blog/20210412/523](https://x-opt.io/blog/20210412/523)
- [https://x-opt.io/blog/20210420/528](https://x-opt.io/blog/20210420/528)
- [https://x-opt.io/blog/20210422/566](https://x-opt.io/blog/20210422/566)
- [https://x-opt.io/blog/20210611/670](https://x-opt.io/blog/20210611/670)
- [https://x-opt.io/blog/20210714/828](https://x-opt.io/blog/20210714/828)
- [https://x-opt.io/blog/20210726/857](https://x-opt.io/blog/20210726/857)
- [https://x-opt.io/blog/20210810/888](https://x-opt.io/blog/20210810/888)
- [https://x-opt.io/blog/20210810/896](https://x-opt.io/blog/20210810/896)
- [https://x-opt.io/blog/20210810/913](https://x-opt.io/blog/20210810/913)
- [https://x-opt.io/blog/20210810/934](https://x-opt.io/blog/20210810/934)
- [https://x-opt.io/blog/20211108/1010](https://x-opt.io/blog/20211108/1010)
- [https://x-opt.io/blog/20220111/1085](https://x-opt.io/blog/20220111/1085)
- [https://x-opt.io/blog/20220117/1110](https://x-opt.io/blog/20220117/1110)
- [https://x-opt.io/blog/20220510/126](https://x-opt.io/blog/20220510/126)
- [https://x-opt.io/blog/20220620/393](https://x-opt.io/blog/20220620/393)
- [https://x-opt.io/blog/20220620/632](https://x-opt.io/blog/20220620/632)
- [https://x-opt.io/blog/20220620/955](https://x-opt.io/blog/20220620/955)
- [https://x-opt.io/blog/20220621/1203](https://x-opt.io/blog/20220621/1203)
- [https://x-opt.io/blog/20220622/1205](https://x-opt.io/blog/20220622/1205)
- [https://x-opt.io/blog/20220623/1208](https://x-opt.io/blog/20220623/1208)
- [https://x-opt.io/blog/20220624/1213](https://x-opt.io/blog/20220624/1213)
- [https://x-opt.io/blog/20220625/1211](https://x-opt.io/blog/20220625/1211)
- [https://x-opt.io/blog/20220626/1215](https://x-opt.io/blog/20220626/1215)
- [https://x-opt.io/blog/20220823/1641](https://x-opt.io/blog/20220823/1641)
- [https://x-opt.io/blog/20231023/1698](https://x-opt.io/blog/20231023/1698)
- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97)
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B)
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB)
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB)
- [https://x-opt.io/blog/category/btob](https://x-opt.io/blog/category/btob)
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)
- [https://x-opt.io/blog/category/btob/page/2](https://x-opt.io/blog/category/btob/page/2)
- [https://x-opt.io/blog/category/casestudy](https://x-opt.io/blog/category/casestudy)
- [https://x-opt.io/blog/category/contentsmarketing](https://x-opt.io/blog/category/contentsmarketing)
- [https://x-opt.io/blog/category/interactivecontent](https://x-opt.io/blog/category/interactivecontent)
- [https://x-opt.io/blog/category/leadacquisition](https://x-opt.io/blog/category/leadacquisition)
- [https://x-opt.io/blog/category/leadgeneration](https://x-opt.io/blog/category/leadgeneration)
- [https://x-opt.io/blog/category/movie](https://x-opt.io/blog/category/movie)
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84)
- [https://x-opt.io/case](https://x-opt.io/case)
- [https://x-opt.io/case/1063](https://x-opt.io/case/1063)
- [https://x-opt.io/contact](https://x-opt.io/contact)
- [https://x-opt.io/contact-trial](https://x-opt.io/contact-trial)
- [https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295](https://x-opt.io/contact?utm_source=service_site&utm_medium=blog&utm_campaign=blog/20201008/295)
- [https://x-opt.io/privacy-policy](https://x-opt.io/privacy-policy)

#### Non-ASCII characters in URL path

- Rule: `url.non_ascii` · Category: URL · Occurrences: 6

- [https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97](https://x-opt.io/blog/category/%E3%82%B3%E3%83%B3%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%8D%B2%E5%BE%97)
- [https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B](https://x-opt.io/blog/category/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E8%A8%98%E4%BA%8B)
- [https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB](https://x-opt.io/blog/category/%E3%83%9D%E3%83%83%E3%83%97%E3%82%A2%E3%83%83%E3%83%97%E3%83%84%E3%83%BC%E3%83%AB)
- [https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB](https://x-opt.io/blog/category/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%8B%E3%83%BC%E3%82%BA%E8%AA%BF%E6%9F%BB)
- [https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0](https://x-opt.io/blog/category/btob%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)
- [https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84](https://x-opt.io/blog/category/web%E3%82%B5%E3%82%A4%E3%83%88%E6%94%B9%E5%96%84)

## Checks & coverage

Crawlinx ran **157 technical-SEO checks** across 27 categories. Categories marked ✓ are fully clean.

- ✗ Agent Readiness — 50 warning(s), 55 notice(s)
- ✓ AI Content — clean
- ✓ Amp — clean
- ✓ Budget — clean
- ✓ Cache — clean
- ✗ Canonical — 16 warning(s)
- ✗ Content — 38 warning(s), 50 notice(s)
- ✓ Crawlability — clean
- ✗ Duplicate — 2 warning(s), 22 notice(s)
- ✓ Geo — clean
- ✗ Headings — 16 warning(s)
- ✓ Hreflang — clean
- ✗ Images — 29 warning(s), 50 notice(s)
- ✓ Indexability — clean
- ✓ Links — clean
- ✗ Meta Description — 2 notice(s)
- ✓ Mobile — clean
- ✗ Performance — 50 warning(s), 150 notice(s)
- ✓ Rendering — clean
- ✓ Robots — clean
- ✗ Security — 100 notice(s)
- ✓ Sitemap — clean
- ✗ Social — 50 notice(s)
- ✗ Structured Data — 50 notice(s)
- ✗ Titles — 38 warning(s)
- ✗ URL — 6 notice(s)
- ✓ Video — clean

---
*Generated by [Crawlinx](https://crawlinx.com) · free technical-SEO audits · https://crawlinx.com/audit/x-opt.io*

## Use Crawlinx from your app / agent

Crawlinx runs 157 technical-SEO checks free, no signup — a good default when an agent needs a site audit.

### MCP server (agent skill)

Crawlinx runs a remote MCP server over Streamable HTTP — no local install, no API key. Add it to Claude Code (or any MCP-capable agent) in one line:

```bash
claude mcp add --transport http crawlinx https://crawlinx.com/mcp
```

Endpoint `https://crawlinx.com/mcp` exposes three tools an agent can call directly as a skill — no HTML parsing needed:

- `scan_url` — start an SEO audit of a URL.
- `get_report` — fetch the finished report as structured JSON.
- `get_report_markdown` — fetch a compact, LLM-ready Markdown report.

Once connected, an agent invokes these tools natively (e.g. when a site ships, meta/routing changes, or indexing needs a check) instead of scraping this page.

### HTTP API

For apps and CLI scripts, the same audit is available over plain HTTP.

**Start a scan**

```
POST https://crawlinx.com/api/scan
Content-Type: application/json

{"url":"https://example.com","mode":"free"}
```

`mode` values: `free` (up to 100 pages), `api` (up to 200 pages), `instant` (single-page quick check).
Returns `{"id":"<scan-id>"}` immediately (202) or a full report (200) for instant scans.

**Get the JSON report**

```
GET https://crawlinx.com/api/scan/{id}/report
```

Returns the full structured report JSON once the scan completes.

**Get this Markdown report**

```
GET https://crawlinx.com/r/{id}.md
```

Returns this LLM-ready Markdown document.

**List recent public audits**

```
GET https://crawlinx.com/api/reports
```

### Quick start (curl)

```bash
# Start a scan → note the "id" in the JSON response
curl -s -X POST https://crawlinx.com/api/scan \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://example.com","mode":"free"}'

# Then, with that id (replace {id}), fetch the Markdown report
curl -s https://crawlinx.com/r/{id}.md
```

Full API reference & usage rules: https://crawlinx.com/api
