SEO audit for jws.work
TOP | フロントエンド・コーディングの受託制作 フリーランス JWS
Health 62/100 (fair) · 50 pages crawled · generated 2026-08-26
Download Markdown report (feed to ChatGPT / Claude / Cursor)フリーランスのフロントエンド・コーディングの受託制作を専門とするJWSのポートフォリオサイト。10年以上の経験を活かし、アニメーションとインタラクションを駆使した高品質なWebサイト制作を提供します。
| Category | Score | Errors | Warnings | Notices |
|---|---|---|---|---|
| Links | 78 | 8 | 10 | 0 |
| Crawlability | 92 | 4 | 0 | 0 |
| Sitemap | 96 | 2 | 0 | 0 |
| Hreflang | 56 | 0 | 74 | 0 |
| Security | 72 | 0 | 46 | 50 |
| Duplicate | 80 | 0 | 34 | 0 |
| Performance | 81 | 0 | 32 | 102 |
| Video | 99 | 0 | 2 | 0 |
| AI Content | 99 | 0 | 1 | 1 |
| Canonical | 99 | 0 | 1 | 8 |
| Agent Readiness | 100 | 0 | 0 | 1 |
| Content | 100 | 0 | 0 | 7 |
| Headings | 100 | 0 | 0 | 46 |
| Images | 100 | 0 | 0 | 51 |
| Meta Description | 100 | 0 | 0 | 13 |
| Titles | 100 | 0 | 0 | 7 |
| URL | 100 | 0 | 0 | 6 |
Errors (3 rules)
error Broken internal link (target 4xx/5xx)
Rule links.broken_internal · Links · 8 occurrence(s)
- https://jws.work/404/ — https://jws.work/404/ (HTTP 404)
- https://jws.work/404/ — https://jws.work/en/404/ (HTTP 404)
- https://jws.work/en/404/ — https://jws.work/404/ (HTTP 404)
- https://jws.work/en/404/ — https://jws.work/en/404/ (HTTP 404)
- https://jws.work/preview/blogs/ — https://jws.work/404/ (HTTP 404)
- https://jws.work/preview/blogs/ — https://jws.work/en/404/ (HTTP 404)
- https://jws.work/preview/works/ — https://jws.work/404/ (HTTP 404)
- https://jws.work/preview/works/ — https://jws.work/en/404/ (HTTP 404)
error Non-200 URL listed in sitemap
Rule sitemap.not_200 · Sitemap · 2 occurrence(s)
- https://jws.work/preview/blogs/ — listed in sitemap but status 404
- https://jws.work/preview/works/ — listed in sitemap but status 404
error Client error (4xx) response
Rule status.4xx · Crawlability · 4 occurrence(s)
- https://jws.work/404/ — HTTP 404
- https://jws.work/en/404/ — HTTP 404
- https://jws.work/preview/blogs/ — HTTP 404
- https://jws.work/preview/works/ — HTTP 404
Warnings (10 rules)
warning Unfilled template or prompt-leak text
Rule ai.prompt_leak · AI Content · 1 occurrence(s)
- https://jws.work/blogs/bqc1iuk2ks/ — The page contains unfilled template or prompt-echo text — e.g. "[[ ttl ]]". This usually means a generation template was published without being completed or cleaned up. Fill in or remove the placeholder so readers and crawlers don't see the scaffolding.
warning Interior page canonicalizes to the homepage
Rule canonical.points_to_homepage · Canonical · 1 occurrence(s)
- https://jws.work/en/ — this interior page canonicalizes to the homepage (https://jws.work/) — Google will treat the homepage as authoritative and drop this page from search. Point the canonical at the page's own URL.
warning Near-duplicate page content
Rule duplicate.near · Duplicate · 33 occurrence(s)
- https://jws.work/about/ — near-duplicate of 26 page(s): https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/, https://jws.work/contact/
- https://jws.work/blogs/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/1ra-nis1sfq/, https://jws.work/contact/
- https://jws.work/blogs/1ra-nis1sfq/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/contact/
- https://jws.work/blogs/ayp7mdeh90e9/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/blogs/bpcp-0kyv3/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/blogs/e_t092b_582/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/blogs/eurz6x1h96/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/blogs/hqv2512cq/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/blogs/lj7hya160_n/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/blogs/qamsmbpzo7b/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/blogs/sv0hzuqi1y-w/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/blogs/une1smt-0fc/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/blogs/yeu6e03nk/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/contact/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/en/about/ — near-duplicate of 5 page(s): https://jws.work/en/blogs/, https://jws.work/en/contact/, https://jws.work/en/playgrounds/
- https://jws.work/en/blogs/ — near-duplicate of 5 page(s): https://jws.work/en/about/, https://jws.work/en/contact/, https://jws.work/en/playgrounds/
- https://jws.work/en/contact/ — near-duplicate of 5 page(s): https://jws.work/en/about/, https://jws.work/en/blogs/, https://jws.work/en/playgrounds/
- https://jws.work/en/playgrounds/ — near-duplicate of 5 page(s): https://jws.work/en/about/, https://jws.work/en/blogs/, https://jws.work/en/contact/
- https://jws.work/en/service/ — near-duplicate of 5 page(s): https://jws.work/en/about/, https://jws.work/en/blogs/, https://jws.work/en/contact/
- https://jws.work/en/works/ — near-duplicate of 5 page(s): https://jws.work/en/about/, https://jws.work/en/blogs/, https://jws.work/en/contact/
- https://jws.work/playgrounds/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/service/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/works/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/works/3xezlznj81/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
- https://jws.work/works/97iw6ssxt92i/ — near-duplicate of 26 page(s): https://jws.work/about/, https://jws.work/blogs/, https://jws.work/blogs/1ra-nis1sfq/
warning Homepage duplicated across protocol/host variants (no redirect)
Rule duplicate.protocol_host · Duplicate · 1 occurrence(s)
- https://jws.work/ — https://www.jws.work/ serves the same homepage content with a 200 and no redirect — Google sees a duplicate. Pick one canonical host/scheme and 301-redirect the others.
warning Content-Type header doesn't match the actual content
Rule headers.content_type_mismatch · Security · 46 occurrence(s)
- https://jws.work/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/about/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/1ra-nis1sfq/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/9vimr5_1n/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/ayp7mdeh90e9/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/bpcp-0kyv3/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/bqc1iuk2ks/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/e_t092b_582/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/eurz6x1h96/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/g434u398td/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/hos-ly4_5ld/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/hqv2512cq/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/lj7hya160_n/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/oelnr28cr/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/pd89bi8jgv/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/blogs/qamsmbpzo7b/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/contact/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/en/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/en/about/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/playgrounds/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/privacy/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/service/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/works/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
- https://jws.work/works/3xezlznj81/ — the Content-Type is "text/html" with no charset — the HTTP charset is authoritative and browsers otherwise guess the encoding, which can garble non-ASCII text (mojibake). Declare it explicitly: "text/html; charset=utf-8".
warning hreflang set has no self-reference
Rule hreflang.missing_self · Hreflang · 37 occurrence(s)
- https://jws.work/blogs/1ra-nis1sfq/ — no hreflang entry points to this URL
- https://jws.work/blogs/9vimr5_1n/ — no hreflang entry points to this URL
- https://jws.work/blogs/ayp7mdeh90e9/ — no hreflang entry points to this URL
- https://jws.work/blogs/bpcp-0kyv3/ — no hreflang entry points to this URL
- https://jws.work/blogs/bqc1iuk2ks/ — no hreflang entry points to this URL
- https://jws.work/blogs/e_t092b_582/ — no hreflang entry points to this URL
- https://jws.work/blogs/eurz6x1h96/ — no hreflang entry points to this URL
- https://jws.work/blogs/g434u398td/ — no hreflang entry points to this URL
- https://jws.work/blogs/hos-ly4_5ld/ — no hreflang entry points to this URL
- https://jws.work/blogs/hqv2512cq/ — no hreflang entry points to this URL
- https://jws.work/blogs/lj7hya160_n/ — no hreflang entry points to this URL
- https://jws.work/blogs/oelnr28cr/ — no hreflang entry points to this URL
- https://jws.work/blogs/pd89bi8jgv/ — no hreflang entry points to this URL
- https://jws.work/blogs/qamsmbpzo7b/ — no hreflang entry points to this URL
- https://jws.work/blogs/s-x3l9_sog/ — no hreflang entry points to this URL
- https://jws.work/blogs/sv0hzuqi1y-w/ — no hreflang entry points to this URL
- https://jws.work/blogs/une1smt-0fc/ — no hreflang entry points to this URL
- https://jws.work/blogs/w2hkwc-mcqi/ — no hreflang entry points to this URL
- https://jws.work/blogs/yeu6e03nk/ — no hreflang entry points to this URL
- https://jws.work/blogs/yinl28gwcr/ — no hreflang entry points to this URL
- https://jws.work/en/about/ — no hreflang entry points to this URL
- https://jws.work/en/blogs/ — no hreflang entry points to this URL
- https://jws.work/en/contact/ — no hreflang entry points to this URL
- https://jws.work/en/playgrounds/ — no hreflang entry points to this URL
- https://jws.work/works/3xezlznj81/ — no hreflang entry points to this URL
warning hreflang has no return link (not reciprocal)
Rule hreflang.no_return · Hreflang · 37 occurrence(s)
- https://jws.work/blogs/1ra-nis1sfq/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/9vimr5_1n/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/ayp7mdeh90e9/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/bpcp-0kyv3/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/bqc1iuk2ks/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/e_t092b_582/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/eurz6x1h96/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/g434u398td/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/hos-ly4_5ld/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/hqv2512cq/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/lj7hya160_n/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/oelnr28cr/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/pd89bi8jgv/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/qamsmbpzo7b/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/s-x3l9_sog/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/sv0hzuqi1y-w/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/une1smt-0fc/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/w2hkwc-mcqi/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/yeu6e03nk/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/blogs/yinl28gwcr/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/en/about/ — https://jws.work/about/ (ja) does not link back
- https://jws.work/en/blogs/ — https://jws.work/blogs/ (ja) does not link back
- https://jws.work/en/contact/ — https://jws.work/contact/ (ja) does not link back
- https://jws.work/en/playgrounds/ — https://jws.work/playgrounds/ (ja) does not link back
- https://jws.work/works/3xezlznj81/ — https://jws.work/works/ (ja) does not link back
warning Hero/LCP image is lazy-loaded (loading=lazy delays LCP)
Rule images.no_lazy_lcp_candidate · Performance · 32 occurrence(s)
- https://jws.work/about/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/1ra-nis1sfq/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/9vimr5_1n/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/ayp7mdeh90e9/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/bpcp-0kyv3/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/bqc1iuk2ks/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/e_t092b_582/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/eurz6x1h96/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/g434u398td/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/hos-ly4_5ld/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/hqv2512cq/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/lj7hya160_n/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/oelnr28cr/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/pd89bi8jgv/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/qamsmbpzo7b/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/s-x3l9_sog/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/sv0hzuqi1y-w/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/blogs/w2hkwc-mcqi/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/contact/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/en/about/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/playgrounds/ — the likely hero/LCP image (1.png) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/privacy/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/service/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
- https://jws.work/works/ — the likely hero/LCP image (thumb.avif) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
warning Orphan page (no internal inlinks)
Rule links.orphan · Links · 10 occurrence(s)
- https://jws.work/works/3xezlznj81/ — no internal links point here
- https://jws.work/works/97iw6ssxt92i/ — no internal links point here
- https://jws.work/works/erscbg4nh5ec/ — no internal links point here
- https://jws.work/works/fcsvyy-pp7j/ — no internal links point here
- https://jws.work/works/i1xpndporlq/ — no internal links point here
- https://jws.work/works/itl9yo8896_x/ — no internal links point here
- https://jws.work/works/kja4g9xju0w/ — no internal links point here
- https://jws.work/works/mktc28moo5hl/ — no internal links point here
- https://jws.work/works/n23-sp63ppo/ — no internal links point here
- https://jws.work/works/v2nnv8zpc/ — no internal links point here
warning Video element present but hidden/zero-size (prominence)
Rule video.hidden · Video · 2 occurrence(s)
- https://jws.work/en/playgrounds/ — 1 <video> element(s), all hidden/zero-size
- https://jws.work/playgrounds/ — 1 <video> element(s), all hidden/zero-size
Notices (15 rules)
notice No llms.txt for AI agents
Rule agent.llms_txt_missing · Agent Readiness · 1 occurrence(s)
- https://jws.work/ — no llms.txt found at the site root — add one so AI agents get a curated site summary
notice Uniform sentence length (scaled-content hygiene signal)
Rule ai.uniform_sentence_length · AI Content · 1 occurrence(s)
- https://jws.work/blogs/oelnr28cr/ — sentence lengths on this page are unusually uniform (standard deviation 4.0 words, below 4) — a stylistically flat rhythm that correlates with templated or unedited content and low editorial effort. Vary sentence length and add specifics on a re-read. This is a content-quality nudge; it does not determine AI authorship.
notice Canonical points to a different URL
Rule canonical.non_self · Canonical · 8 occurrence(s)
- https://jws.work/en/ — canonical=https://jws.work/
- https://jws.work/en/about/ — canonical=https://jws.work/about/
- https://jws.work/en/blogs/ — canonical=https://jws.work/blogs/
- https://jws.work/en/contact/ — canonical=https://jws.work/contact/
- https://jws.work/en/playgrounds/ — canonical=https://jws.work/playgrounds/
- https://jws.work/en/privacy/ — canonical=https://jws.work/privacy/
- https://jws.work/en/service/ — canonical=https://jws.work/service/
- https://jws.work/en/works/ — canonical=https://jws.work/works/
notice Main text is hard to read (low Flesch Reading Ease)
Rule content.readability_poor · Content · 7 occurrence(s)
- https://jws.work/en/ — this page reads as very difficult (Flesch Reading Ease 24, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
- https://jws.work/en/about/ — this page reads as difficult (Flesch Reading Ease 45, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
- https://jws.work/en/blogs/ — this page reads as difficult (Flesch Reading Ease 45, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
- https://jws.work/en/contact/ — this page reads as difficult (Flesch Reading Ease 45, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
- https://jws.work/en/playgrounds/ — this page reads as difficult (Flesch Reading Ease 45, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
- https://jws.work/en/service/ — this page reads as difficult (Flesch Reading Ease 45, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
- https://jws.work/en/works/ — this page reads as difficult (Flesch Reading Ease 45, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
notice Multiple <h1> elements
Rule h1.multiple · Headings · 46 occurrence(s)
- https://jws.work/ — 7 <h1> elements
- https://jws.work/about/ — 6 <h1> elements
- https://jws.work/blogs/ — 6 <h1> elements
- https://jws.work/blogs/1ra-nis1sfq/ — 7 <h1> elements
- https://jws.work/blogs/9vimr5_1n/ — 7 <h1> elements
- https://jws.work/blogs/ayp7mdeh90e9/ — 7 <h1> elements
- https://jws.work/blogs/bpcp-0kyv3/ — 7 <h1> elements
- https://jws.work/blogs/bqc1iuk2ks/ — 7 <h1> elements
- https://jws.work/blogs/e_t092b_582/ — 7 <h1> elements
- https://jws.work/blogs/eurz6x1h96/ — 7 <h1> elements
- https://jws.work/blogs/g434u398td/ — 7 <h1> elements
- https://jws.work/blogs/hos-ly4_5ld/ — 7 <h1> elements
- https://jws.work/blogs/hqv2512cq/ — 7 <h1> elements
- https://jws.work/blogs/lj7hya160_n/ — 7 <h1> elements
- https://jws.work/blogs/oelnr28cr/ — 7 <h1> elements
- https://jws.work/blogs/pd89bi8jgv/ — 7 <h1> elements
- https://jws.work/blogs/qamsmbpzo7b/ — 7 <h1> elements
- https://jws.work/contact/ — 6 <h1> elements
- https://jws.work/en/ — 7 <h1> elements
- https://jws.work/en/about/ — 6 <h1> elements
- https://jws.work/playgrounds/ — 7 <h1> elements
- https://jws.work/privacy/ — 7 <h1> elements
- https://jws.work/service/ — 6 <h1> elements
- https://jws.work/works/ — 6 <h1> elements
- https://jws.work/works/3xezlznj81/ — 8 <h1> elements
notice Image filename is generic/auto-generated (missed image-search signal)
Rule images.generic_filename · Images · 5 occurrence(s)
- https://jws.work/blogs/yinl28gwcr/ — 1 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://jws.work/works/i1xpndporlq/ — 7 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://jws.work/works/itl9yo8896_x/ — 12 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://jws.work/works/kja4g9xju0w/ — 12 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
- https://jws.work/works/v2nnv8zpc/ — 8 image(s) use a generic/auto-generated filename (e.g. IMG_1234.jpg, photo1.png, a bare UUID). Google reads the filename as a signal of image content, so rename files descriptively (hyphen-separated words) before upload.
notice Likely hero image lacks fetchpriority=high
Rule images.hero_no_fetchpriority · Performance · 12 occurrence(s)
- https://jws.work/blogs/une1smt-0fc/ — the likely hero/LCP image (1.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
- https://jws.work/blogs/yinl28gwcr/ — the likely hero/LCP image (img01.jpg) 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://jws.work/works/3xezlznj81/ — the likely hero/LCP image (gajyumaru.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
- https://jws.work/works/97iw6ssxt92i/ — the likely hero/LCP image (1.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
- https://jws.work/works/erscbg4nh5ec/ — the likely hero/LCP image (1.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
- https://jws.work/works/fcsvyy-pp7j/ — the likely hero/LCP image (1.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
- https://jws.work/works/i1xpndporlq/ — the likely hero/LCP image (img01.jpg) 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://jws.work/works/itl9yo8896_x/ — the likely hero/LCP image (img01.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
- https://jws.work/works/kja4g9xju0w/ — the likely hero/LCP image (img01.jpg) 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://jws.work/works/mktc28moo5hl/ — the likely hero/LCP image (1.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
- https://jws.work/works/n23-sp63ppo/ — the likely hero/LCP image (1.png) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
- https://jws.work/works/v2nnv8zpc/ — the likely hero/LCP image (img01.jpg) has no fetchpriority="high" — adding it tells the browser to fetch the hero earlier in the waterfall, reducing Largest Contentful Paint. This is a low-severity nudge; verify the flagged image is actually your LCP element.
notice Images without width/height (layout shift / CLS)
Rule images.missing_dimensions · Images · 46 occurrence(s)
- https://jws.work/ — 26 of 27 images without width/height
- https://jws.work/about/ — 26 of 26 images without width/height
- https://jws.work/blogs/ — 26 of 26 images without width/height
- https://jws.work/blogs/1ra-nis1sfq/ — 26 of 26 images without width/height
- https://jws.work/blogs/9vimr5_1n/ — 26 of 26 images without width/height
- https://jws.work/blogs/ayp7mdeh90e9/ — 26 of 26 images without width/height
- https://jws.work/blogs/bpcp-0kyv3/ — 26 of 26 images without width/height
- https://jws.work/blogs/bqc1iuk2ks/ — 26 of 26 images without width/height
- https://jws.work/blogs/e_t092b_582/ — 26 of 26 images without width/height
- https://jws.work/blogs/eurz6x1h96/ — 26 of 26 images without width/height
- https://jws.work/blogs/g434u398td/ — 26 of 26 images without width/height
- https://jws.work/blogs/hos-ly4_5ld/ — 26 of 26 images without width/height
- https://jws.work/blogs/hqv2512cq/ — 26 of 26 images without width/height
- https://jws.work/blogs/lj7hya160_n/ — 26 of 26 images without width/height
- https://jws.work/blogs/oelnr28cr/ — 26 of 26 images without width/height
- https://jws.work/blogs/pd89bi8jgv/ — 26 of 26 images without width/height
- https://jws.work/blogs/qamsmbpzo7b/ — 26 of 26 images without width/height
- https://jws.work/contact/ — 26 of 26 images without width/height
- https://jws.work/en/ — 26 of 27 images without width/height
- https://jws.work/en/about/ — 26 of 26 images without width/height
- https://jws.work/playgrounds/ — 2 of 2 images without width/height
- https://jws.work/privacy/ — 26 of 26 images without width/height
- https://jws.work/service/ — 26 of 26 images without width/height
- https://jws.work/works/ — 25 of 25 images without width/height
- https://jws.work/works/3xezlznj81/ — 26 of 34 images without width/height
notice Meta description too long
Rule meta_desc.too_long · Meta Description · 9 occurrence(s)
- https://jws.work/blogs/qamsmbpzo7b/ — 173 chars
- https://jws.work/blogs/sv0hzuqi1y-w/ — 277 chars
- https://jws.work/blogs/une1smt-0fc/ — 173 chars
- https://jws.work/en/ — 198 chars
- https://jws.work/en/about/ — 209 chars
- https://jws.work/en/blogs/ — 161 chars
- https://jws.work/en/service/ — 195 chars
- https://jws.work/works/i1xpndporlq/ — 162 chars
- https://jws.work/works/kja4g9xju0w/ — 223 chars
notice Meta description too short
Rule meta_desc.too_short · Meta Description · 4 occurrence(s)
- https://jws.work/blogs/bqc1iuk2ks/ — 48 chars
- https://jws.work/en/privacy/ — 26 chars
- https://jws.work/playgrounds/ — 38 chars
- https://jws.work/privacy/ — 18 chars
notice Legacy image format (jpg/png/gif) with no next-gen fallback
Rule perf.images_legacy_format · Performance · 44 occurrence(s)
- https://jws.work/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/about/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/1ra-nis1sfq/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/9vimr5_1n/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/ayp7mdeh90e9/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/bpcp-0kyv3/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/bqc1iuk2ks/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/e_t092b_582/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/eurz6x1h96/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/g434u398td/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/hos-ly4_5ld/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/hqv2512cq/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/lj7hya160_n/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/oelnr28cr/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/pd89bi8jgv/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/qamsmbpzo7b/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/blogs/s-x3l9_sog/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/contact/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/en/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/en/about/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/playgrounds/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/privacy/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/service/ — 1 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://jws.work/works/3xezlznj81/ — 9 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
notice No ETag header (no conditional GET for unchanged pages)
Rule perf.no_etag · Performance · 46 occurrence(s)
- https://jws.work/ — 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://jws.work/about/ — 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://jws.work/blogs/ — 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://jws.work/blogs/1ra-nis1sfq/ — 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://jws.work/blogs/9vimr5_1n/ — 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://jws.work/blogs/ayp7mdeh90e9/ — 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://jws.work/blogs/bpcp-0kyv3/ — 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://jws.work/blogs/bqc1iuk2ks/ — 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://jws.work/blogs/e_t092b_582/ — 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://jws.work/blogs/eurz6x1h96/ — 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://jws.work/blogs/g434u398td/ — 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://jws.work/blogs/hos-ly4_5ld/ — 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://jws.work/blogs/hqv2512cq/ — 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://jws.work/blogs/lj7hya160_n/ — 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://jws.work/blogs/oelnr28cr/ — 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://jws.work/blogs/pd89bi8jgv/ — 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://jws.work/blogs/qamsmbpzo7b/ — 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://jws.work/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://jws.work/en/ — 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://jws.work/en/about/ — 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://jws.work/playgrounds/ — 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://jws.work/privacy/ — 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://jws.work/service/ — 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://jws.work/works/ — 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://jws.work/works/3xezlznj81/ — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
notice Missing recommended security headers
Rule security.missing_headers · Security · 50 occurrence(s)
- https://jws.work/ — CSP
- https://jws.work/404/ — CSP
- https://jws.work/about/ — CSP
- https://jws.work/blogs/ — CSP
- https://jws.work/blogs/1ra-nis1sfq/ — CSP
- https://jws.work/blogs/9vimr5_1n/ — CSP
- https://jws.work/blogs/ayp7mdeh90e9/ — CSP
- https://jws.work/blogs/bpcp-0kyv3/ — CSP
- https://jws.work/blogs/bqc1iuk2ks/ — CSP
- https://jws.work/blogs/e_t092b_582/ — CSP
- https://jws.work/blogs/eurz6x1h96/ — CSP
- https://jws.work/blogs/g434u398td/ — CSP
- https://jws.work/blogs/hos-ly4_5ld/ — CSP
- https://jws.work/blogs/hqv2512cq/ — CSP
- https://jws.work/blogs/lj7hya160_n/ — CSP
- https://jws.work/blogs/oelnr28cr/ — CSP
- https://jws.work/contact/ — CSP
- https://jws.work/en/ — CSP
- https://jws.work/en/about/ — CSP
- https://jws.work/playgrounds/ — CSP
- https://jws.work/preview/blogs/ — CSP
- https://jws.work/privacy/ — CSP
- https://jws.work/service/ — CSP
- https://jws.work/works/ — CSP
- https://jws.work/works/3xezlznj81/ — CSP
notice Title is very short
Rule title.too_short · Titles · 7 occurrence(s)
- https://jws.work/works/3xezlznj81/ — 13 chars
- https://jws.work/works/97iw6ssxt92i/ — 11 chars
- https://jws.work/works/erscbg4nh5ec/ — 11 chars
- https://jws.work/works/i1xpndporlq/ — 13 chars
- https://jws.work/works/mktc28moo5hl/ — 11 chars
- https://jws.work/works/n23-sp63ppo/ — 14 chars
- https://jws.work/works/v2nnv8zpc/ — 14 chars
notice Underscores in URL path (prefer hyphens)
Rule url.underscores · URL · 6 occurrence(s)
| URL | Status | Indexable | Words | In-links |
|---|---|---|---|---|
| https://jws.work/blogs/1ra-nis1sfq/ WebGL総本山で当サイトを取り上げていただきました! | JWS |
200 | yes | 382 | 50 |
| https://jws.work/blogs/9vimr5_1n/ mp4を変換してhlsストリーミング再生を実装してみる | JWS |
200 | yes | 673 | 50 |
| https://jws.work/blogs/ayp7mdeh90e9/ phpとJavaScriptでアメブロRSSをリアルタイムに表示 | JWS |
200 | yes | 624 | 50 |
| https://jws.work/blogs/bpcp-0kyv3/ Next.jsでwebpack5使うとHotReloadが動かなかった件 | JWS |
200 | yes | 452 | 50 |
| https://jws.work/blogs/bqc1iuk2ks/ Vue+LIFF(LINE Front-end Framework)+GASでフォームを使ったBOTを作ってみた | JWS |
200 | yes | 1462 | 50 |
| https://jws.work/blogs/e_t092b_582/ JSで画像のパラパラ漫画を5分で実装してみる | JWS |
200 | yes | 509 | 50 |
| https://jws.work/blogs/eurz6x1h96/ gitで差分納品ファイル作成 | JWS |
200 | yes | 460 | 50 |
| https://jws.work/blogs/g434u398td/ YouTube Data APIでリアルタイムに動画一覧を表示 | JWS |
200 | yes | 1080 | 50 |
| https://jws.work/blogs/hos-ly4_5ld/ JSを使ったアニメーションanime.jsについて | JWS |
200 | yes | 579 | 50 |
| https://jws.work/blogs/hqv2512cq/ サイトをNext.jsを使ってフルリニューアルしました。 | JWS |
200 | yes | 438 | 50 |
| https://jws.work/blogs/lj7hya160_n/ 三点リーダーについて CSSやJSを使った実装方法 | JWS |
200 | yes | 536 | 50 |
| https://jws.work/blogs/oelnr28cr/ 令和でSVGアニメーションanime.jsの使い方 | JWS |
200 | yes | 589 | 50 |
| https://jws.work/blogs/pd89bi8jgv/ Pugを使って配列、オブジェクトをhtmlに出力する方法 | JWS |
200 | yes | 451 | 50 |
| https://jws.work/blogs/qamsmbpzo7b/ 文字コードがShift_JISの時の簡易開発環境(VS Code) | JWS |
200 | yes | 429 | 50 |
| https://jws.work/blogs/s-x3l9_sog/ 実務で利用しているJSアニメーションライブラリについて | JWS |
200 | yes | 541 | 50 |
| https://jws.work/blogs/sv0hzuqi1y-w/ SNSシェア用リンク生成ツールを作ってみた | JWS |
200 | yes | 432 | 50 |
| https://jws.work/blogs/une1smt-0fc/ ロゴ・ポートフォリオサイトサイトを全面リニューアルしました。 | JWS |
200 | yes | 538 | 50 |
| https://jws.work/blogs/w2hkwc-mcqi/ Next.jsでSSGするときの画像圧縮・webpについて【next/image不使用】 | JWS |
200 | yes | 599 | 50 |
| https://jws.work/blogs/yeu6e03nk/ Next.jsで日本語URLを扱う場合の注意点 | JWS |
200 | yes | 460 | 50 |
| https://jws.work/blogs/yinl28gwcr/ Googleフォームをカスタマイズ+reCAPTCHAv3導入 | JWS |
200 | yes | 862 | 50 |
| https://jws.work/contact/ Contact | フロントエンド・コーディングの受託制作 フリーランス JWS |
200 | yes | 366 | 50 |
| https://jws.work/blogs/ Blogs | フロントエンド・コーディングの受託制作 フリーランス JWS |
200 | yes | 366 | 43 |
| https://jws.work/works/ Works | フロントエンド・コーディングの受託制作 フリーランス JWS |
200 | yes | 335 | 43 |
| https://jws.work/ TOP | フロントエンド・コーディングの受託制作 フリーランス JWS |
200 | yes | 761 | 43 |
| https://jws.work/about/ About | フロントエンド・コーディングの受託制作 フリーランス JWS |
200 | yes | 366 | 43 |
| https://jws.work/playgrounds/ Playgrounds | フロントエンド・コーディングの受託制作 フリーランス JWS |
200 | yes | 355 | 43 |
| https://jws.work/privacy/ Privacy Policy | フロントエンド・コーディングの受託制作 フリーランス JWS |
200 | yes | 418 | 43 |
| https://jws.work/service/ Service | フロントエンド・コーディングの受託制作 フリーランス JWS |
200 | yes | 366 | 43 |
| https://jws.work/en/blogs/ Blogs | Front-End Coding Freelance JWS |
200 | yes | 728 | 29 |
| https://jws.work/en/works/ Works | Front-End Coding Freelance JWS |
200 | yes | 697 | 19 |
| https://jws.work/en/contact/ Contact | Front-End Coding Freelance JWS |
200 | yes | 728 | 9 |
| https://jws.work/en/ TOP | Front-End Coding Freelance JWS |
200 | yes | 1210 | 9 |
| https://jws.work/en/about/ About | Front-End Coding Freelance JWS |
200 | yes | 728 | 9 |
| https://jws.work/en/playgrounds/ Playgrounds | Front-End Coding Freelance JWS |
200 | yes | 717 | 9 |
| https://jws.work/en/privacy/ Privacy Policy | Front-End Coding Freelance JWS |
200 | yes | 1281 | 9 |
| https://jws.work/en/service/ Service | Front-End Coding Freelance JWS |
200 | yes | 728 | 9 |
| https://jws.work/works/3xezlznj81/ BC-body | JWS |
200 | yes | 395 | 0 |
| https://jws.work/works/97iw6ssxt92i/ Gacha | JWS |
200 | yes | 396 | 0 |
| https://jws.work/works/erscbg4nh5ec/ Peace | JWS |
200 | yes | 399 | 0 |
| https://jws.work/works/fcsvyy-pp7j/ POKAN TO DINOSAUR | JWS |
200 | yes | 398 | 0 |
| https://jws.work/works/i1xpndporlq/ Bil-Jac | JWS |
200 | yes | 398 | 0 |
| https://jws.work/works/itl9yo8896_x/ AYAKA MIURA Official Web Site | JWS |
200 | yes | 408 | 0 |
| https://jws.work/works/kja4g9xju0w/ JWS Portfolio 2021 | JWS |
200 | yes | 398 | 0 |
| https://jws.work/works/mktc28moo5hl/ WITHM | JWS |
200 | yes | 394 | 0 |
| https://jws.work/works/n23-sp63ppo/ THE BASE | JWS |
200 | yes | 400 | 0 |
| https://jws.work/works/v2nnv8zpc/ GAIA GYM | JWS |
200 | yes | 398 | 0 |
| https://jws.work/404/ 404 Not Found | フロントエンド・コーディングの受託制作 フリーランス JWS |
404 | no | 367 | 4 |
| https://jws.work/en/404/ 404 Not Found | フロントエンド・コーディングの受託制作 フリーランス JWS |
404 | no | 367 | 4 |
| https://jws.work/preview/blogs/ 404 Not Found | フロントエンド・コーディングの受託制作 フリーランス JWS |
404 | no | 367 | 0 |
| https://jws.work/preview/works/ 404 Not Found | フロントエンド・コーディングの受託制作 フリーランス JWS |
404 | no | 367 | 0 |
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.