Catalog / jws.work
62

SEO audit for jws.work

TOP | フロントエンド・コーディングの受託制作 フリーランス JWS

other

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

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

フリーランスのフロントエンド・コーディングの受託制作を専門とするJWSのポートフォリオサイト。10年以上の経験を活かし、アニメーションとインタラクションを駆使した高品質なWebサイト制作を提供します。

50
pages crawled
46
indexable pages
14
errors
200
warnings
292
notices
10
orphan pages
8
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
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
Findings

Errors (3 rules)

error Broken internal link (target 4xx/5xx)

Rule links.broken_internal · Links · 8 occurrence(s)

error Non-200 URL listed in sitemap

Rule sitemap.not_200 · Sitemap · 2 occurrence(s)

error Client error (4xx) response

Rule status.4xx · Crawlability · 4 occurrence(s)

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)

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)

warning hreflang has no return link (not reciprocal)

Rule hreflang.no_return · Hreflang · 37 occurrence(s)

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)

warning Video element present but hidden/zero-size (prominence)

Rule video.hidden · Video · 2 occurrence(s)

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)

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)

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)

notice Meta description too long

Rule meta_desc.too_long · Meta Description · 9 occurrence(s)

notice Meta description too short

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

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 Title is very short

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

Pages (showing 50 of 50)
URLStatusIndexableWordsIn-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.

Scan your site →