SEO audit for hanamimastery.com
Newest Hanami screencasts, articles, and video tutorials | Hanami Mastery
Health 63/100 (fair) · 50 pages crawled · generated 2026-08-26
Download Markdown report (feed to ChatGPT / Claude / Cursor)Get familiar with Hanami framework and realise that Ruby is not only Rails!
| Category | Score | Errors | Warnings | Notices |
|---|---|---|---|---|
| Titles | 93 | 2 | 5 | 0 |
| Agent Readiness | 74 | 0 | 44 | 50 |
| Performance | 78 | 0 | 36 | 65 |
| Canonical | 93 | 0 | 12 | 0 |
| Headings | 96 | 0 | 7 | 2 |
| Content | 99 | 0 | 2 | 26 |
| Duplicate | 99 | 0 | 2 | 2 |
| Meta Description | 99 | 0 | 2 | 25 |
| Images | 100 | 0 | 0 | 49 |
| Links | 100 | 0 | 0 | 44 |
| Security | 100 | 0 | 0 | 91 |
| Social | 100 | 0 | 0 | 10 |
| Structured Data | 100 | 0 | 0 | 12 |
Errors (1 rules)
error Missing or empty <title>
Rule title.missing · Titles · 2 occurrence(s)
Warnings (8 rules)
warning Control has no accessible name
Rule agent.control_no_name · Agent Readiness · 44 occurrence(s)
- https://hanamimastery.com/ — 14 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/articles/2022-summary — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/articles/dry-rb-dependency-graph — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/articles/giving-appreciation — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/articles/hanami-architecture-explained — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/articles/hanamimastery-origins — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/articles/open-source-heroes — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/articles/secret-of-stunning-oss-contributions — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/articles/sequel-over-activerecord — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/articles/why-all-apis-are-inconsistent — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/authors/fiachetti — 4 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/authors/swilgosz — 120 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/c/stray — 18 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/episodes — 106 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/episodes/48-phlex-in-hanami — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/episodes/49-registry-pattern-in-hanami — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/episodes/50-hanami-core-team-interview — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/episodes/51-integrate-font-awesome-in-hanami — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/episodes/52-render-flash-the-correct-way — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/episodes/53-advanced-forms-in-hanami — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/episodes/54-complete-hanami-stack — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/episodes/54-complete-hanami-stack?view=discuss — 6 button/link(s) with no text or aria-label — an agent can't target them
- https://hanamimastery.com/t/hanami — 76 button/link(s) with no text or aria-label — an agent can't target them
warning Missing canonical tag
Rule canonical.missing · Canonical · 12 occurrence(s)
- https://hanamimastery.com/
- https://hanamimastery.com/about
- https://hanamimastery.com/authors
- https://hanamimastery.com/authors/fiachetti
- https://hanamimastery.com/authors/swilgosz
- https://hanamimastery.com/c/stray
- https://hanamimastery.com/collaboration
- https://hanamimastery.com/episodes
- https://hanamimastery.com/privacy-policy
- https://hanamimastery.com/sponsors
- https://hanamimastery.com/t/hanami
- https://hanamimastery.com/thank-you
warning Thin content (low word count)
Rule content.thin · Content · 2 occurrence(s)
- https://hanamimastery.com/authors — 33 words
- https://hanamimastery.com/thank-you — 95 words
warning Near-duplicate page content
Rule duplicate.near · Duplicate · 2 occurrence(s)
- https://hanamimastery.com/authors/swilgosz — near-duplicate of 1 page(s): https://hanamimastery.com/episodes
- https://hanamimastery.com/episodes — near-duplicate of 1 page(s): https://hanamimastery.com/authors/swilgosz
warning Missing <h1>
Rule h1.missing · Headings · 7 occurrence(s)
warning Hero/LCP image is lazy-loaded (loading=lazy delays LCP)
Rule images.no_lazy_lcp_candidate · Performance · 36 occurrence(s)
- https://hanamimastery.com/articles/2022-summary — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/articles/dry-rb-dependency-graph — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/articles/giving-appreciation — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/articles/hanami-architecture-explained — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/articles/hanamimastery-origins — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/articles/open-source-heroes — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/articles/secret-of-stunning-oss-contributions — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/articles/sequel-over-activerecord — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/articles/unofficial-hanami-upgrade-guides — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/articles/why-all-apis-are-inconsistent — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/authors — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/42-front-matter-parser — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/43-connect-with-google-drive — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/44-bridgetown — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/45-github-integration — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/46-contact-form — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/47-send-emails-with-hanami-mailer — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/48-phlex-in-hanami — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/50-hanami-core-team-interview — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/51-integrate-font-awesome-in-hanami — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/52-render-flash-the-correct-way — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/53-advanced-forms-in-hanami — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/54-complete-hanami-stack — the likely hero/LCP image (swilgosz-avatar.jpg) 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://hanamimastery.com/episodes/54-complete-hanami-stack?view=discuss — the likely hero/LCP image (swilgosz-avatar.jpg) 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 Missing meta description
Rule meta_desc.missing · Meta Description · 2 occurrence(s)
warning Title likely truncated in SERP (too wide)
Rule title.too_long · Titles · 5 occurrence(s)
- https://hanamimastery.com/articles/dry-rb-dependency-graph — 83 chars, ~659px (limit ~580px)
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides — 77 chars, ~596px (limit ~580px)
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss — 77 chars, ~596px (limit ~580px)
- https://hanamimastery.com/episodes — 97 chars, ~746px (limit ~580px)
- https://hanamimastery.com/episodes/48-phlex-in-hanami — 81 chars, ~637px (limit ~580px)
Notices (19 rules)
notice Heading levels skip a level
Rule agent.heading_skip · Agent Readiness · 49 occurrence(s)
- https://hanamimastery.com/ — h6 follows h1 — skips h2
- https://hanamimastery.com/about — h5 follows h2 — skips h3
- https://hanamimastery.com/articles/2022-summary — h5 follows h1 — skips h2
- https://hanamimastery.com/articles/dry-rb-dependency-graph — h5 follows h1 — skips h2
- https://hanamimastery.com/articles/giving-appreciation — h5 follows h1 — skips h2
- https://hanamimastery.com/articles/hanami-architecture-explained — h5 follows h1 — skips h2
- https://hanamimastery.com/articles/hanamimastery-origins — h5 follows h1 — skips h2
- https://hanamimastery.com/articles/open-source-heroes — h5 follows h1 — skips h2
- https://hanamimastery.com/articles/secret-of-stunning-oss-contributions — h5 follows h1 — skips h2
- https://hanamimastery.com/articles/sequel-over-activerecord — h5 follows h1 — skips h2
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides — h5 follows h1 — skips h2
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss — h5 follows h1 — skips h2
- https://hanamimastery.com/articles/why-all-apis-are-inconsistent — h5 follows h1 — skips h2
- https://hanamimastery.com/authors/fiachetti — h6 follows h4 — skips h5
- https://hanamimastery.com/authors/swilgosz — h6 follows h4 — skips h5
- https://hanamimastery.com/c/stray — h6 follows h3 — skips h4
- https://hanamimastery.com/collaboration — h4 follows h2 — skips h3
- https://hanamimastery.com/episodes — h6 follows h1 — skips h2
- https://hanamimastery.com/episodes/53-advanced-forms-in-hanami — h5 follows h1 — skips h2
- https://hanamimastery.com/episodes/54-complete-hanami-stack — h5 follows h1 — skips h2
- https://hanamimastery.com/episodes/54-complete-hanami-stack?view=discuss — h5 follows h1 — skips h2
- https://hanamimastery.com/privacy-policy — h5 follows h3 — skips h4
- https://hanamimastery.com/sponsors — h5 follows h2 — skips h3
- https://hanamimastery.com/t/hanami — h6 follows h1 — skips h2
- https://hanamimastery.com/thank-you — h5 follows h2 — skips h3
notice No llms.txt for AI agents
Rule agent.llms_txt_missing · Agent Readiness · 1 occurrence(s)
- https://hanamimastery.com/ — no llms.txt found at the site root — add one so AI agents get a curated site summary
notice Low text-to-HTML ratio
Rule content.low_ratio · Content · 20 occurrence(s)
- https://hanamimastery.com/ — 2.3%
- https://hanamimastery.com/about — 3.8%
- https://hanamimastery.com/articles/dry-rb-dependency-graph — 4.9%
- https://hanamimastery.com/articles/hanami-architecture-explained — 4.6%
- https://hanamimastery.com/articles/open-source-heroes — 2.7%
- https://hanamimastery.com/authors — 0.6%
- https://hanamimastery.com/authors/fiachetti — 1.4%
- https://hanamimastery.com/authors/swilgosz — 4.6%
- https://hanamimastery.com/c/stray — 2.4%
- https://hanamimastery.com/collaboration — 4.9%
- https://hanamimastery.com/episodes — 4.5%
- https://hanamimastery.com/episodes/29-leverage-rom-repositories — 2.9%
- https://hanamimastery.com/episodes/30-mapping-is-everything — 4.3%
- https://hanamimastery.com/episodes/31-rom-factory — 4.9%
- https://hanamimastery.com/episodes/38-hanami-mastery-app — 4.6%
- https://hanamimastery.com/episodes/42-front-matter-parser — 4.7%
- https://hanamimastery.com/episodes/43-connect-with-google-drive — 2.8%
- https://hanamimastery.com/episodes/45-github-integration — 4.1%
- https://hanamimastery.com/t/hanami — 4.2%
- https://hanamimastery.com/thank-you — 0.9%
notice Main text is hard to read (low Flesch Reading Ease)
Rule content.readability_poor · Content · 6 occurrence(s)
- https://hanamimastery.com/about — this page reads as difficult (Flesch Reading Ease 47, 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://hanamimastery.com/articles/sequel-over-activerecord — this page reads as difficult (Flesch Reading Ease 48, 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://hanamimastery.com/authors/fiachetti — this page reads as difficult (Flesch Reading Ease 42, 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://hanamimastery.com/collaboration — this page reads as difficult (Flesch Reading Ease 47, 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://hanamimastery.com/episodes — this page reads as difficult (Flesch Reading Ease 50, 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://hanamimastery.com/t/hanami — this page reads as difficult (Flesch Reading Ease 49, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
notice Duplicate meta description across pages
Rule duplicate.meta_desc · Duplicate · 2 occurrence(s)
- https://hanamimastery.com/ — meta description shared by 2 pages: https://hanamimastery.com/episodes
- https://hanamimastery.com/episodes — meta description shared by 2 pages: https://hanamimastery.com/
notice Multiple <h1> elements
Rule h1.multiple · Headings · 2 occurrence(s)
- https://hanamimastery.com/ — 2 <h1> elements
- https://hanamimastery.com/episodes/49-registry-pattern-in-hanami — 4 <h1> elements
notice Likely hero image lacks fetchpriority=high
Rule images.hero_no_fetchpriority · Performance · 14 occurrence(s)
- https://hanamimastery.com/ — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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://hanamimastery.com/about — the likely hero/LCP image (swilgosz-small.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://hanamimastery.com/authors/fiachetti — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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://hanamimastery.com/authors/swilgosz — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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://hanamimastery.com/c/stray — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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://hanamimastery.com/collaboration — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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://hanamimastery.com/episodes — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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://hanamimastery.com/episodes/33-semantic-versioning — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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://hanamimastery.com/episodes/34-versioning-with-pessimize — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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://hanamimastery.com/episodes/49-registry-pattern-in-hanami — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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://hanamimastery.com/privacy-policy — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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://hanamimastery.com/sponsors — the likely hero/LCP image (swilgosz-small.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://hanamimastery.com/t/hanami — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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://hanamimastery.com/thank-you — the likely hero/LCP image (https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=swilgosz&button_colour=FF5F5F&font_colour=ffffff&font_family=Lato&outline_colour=000000&coffee_colour=FFDD00) 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 · 49 occurrence(s)
- https://hanamimastery.com/ — 2 of 2 images without width/height
- https://hanamimastery.com/about — 3 of 3 images without width/height
- https://hanamimastery.com/articles/2022-summary — 2 of 3 images without width/height
- https://hanamimastery.com/articles/dry-rb-dependency-graph — 4 of 5 images without width/height
- https://hanamimastery.com/articles/giving-appreciation — 2 of 3 images without width/height
- https://hanamimastery.com/articles/hanami-architecture-explained — 2 of 3 images without width/height
- https://hanamimastery.com/articles/hanamimastery-origins — 6 of 7 images without width/height
- https://hanamimastery.com/articles/open-source-heroes — 5 of 6 images without width/height
- https://hanamimastery.com/articles/secret-of-stunning-oss-contributions — 8 of 9 images without width/height
- https://hanamimastery.com/articles/sequel-over-activerecord — 11 of 12 images without width/height
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides — 2 of 3 images without width/height
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss — 2 of 3 images without width/height
- https://hanamimastery.com/articles/why-all-apis-are-inconsistent — 5 of 6 images without width/height
- https://hanamimastery.com/authors/fiachetti — 2 of 2 images without width/height
- https://hanamimastery.com/authors/swilgosz — 2 of 2 images without width/height
- https://hanamimastery.com/c/stray — 2 of 2 images without width/height
- https://hanamimastery.com/collaboration — 2 of 2 images without width/height
- https://hanamimastery.com/episodes — 2 of 2 images without width/height
- https://hanamimastery.com/episodes/53-advanced-forms-in-hanami — 4 of 5 images without width/height
- https://hanamimastery.com/episodes/54-complete-hanami-stack — 8 of 9 images without width/height
- https://hanamimastery.com/episodes/54-complete-hanami-stack?view=discuss — 8 of 9 images without width/height
- https://hanamimastery.com/privacy-policy — 2 of 2 images without width/height
- https://hanamimastery.com/sponsors — 3 of 3 images without width/height
- https://hanamimastery.com/t/hanami — 2 of 2 images without width/height
- https://hanamimastery.com/thank-you — 2 of 2 images without width/height
notice Internal link has no anchor text / accessible name
Rule links.no_anchor_text · Links · 44 occurrence(s)
- https://hanamimastery.com/ — 7 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/articles/2022-summary — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/articles/dry-rb-dependency-graph — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/articles/giving-appreciation — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/articles/hanami-architecture-explained — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/articles/hanamimastery-origins — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/articles/open-source-heroes — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/articles/secret-of-stunning-oss-contributions — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/articles/sequel-over-activerecord — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/articles/why-all-apis-are-inconsistent — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/authors/fiachetti — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/authors/swilgosz — 60 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/c/stray — 9 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/episodes — 53 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/episodes/48-phlex-in-hanami — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/episodes/49-registry-pattern-in-hanami — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/episodes/50-hanami-core-team-interview — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/episodes/51-integrate-font-awesome-in-hanami — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/episodes/52-render-flash-the-correct-way — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/episodes/53-advanced-forms-in-hanami — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/episodes/54-complete-hanami-stack — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/episodes/54-complete-hanami-stack?view=discuss — 3 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
- https://hanamimastery.com/t/hanami — 38 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
notice Meta description too long
Rule meta_desc.too_long · Meta Description · 22 occurrence(s)
- https://hanamimastery.com/articles/2022-summary — 197 chars
- https://hanamimastery.com/articles/open-source-heroes — 168 chars
- https://hanamimastery.com/articles/sequel-over-activerecord — 183 chars
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides — 193 chars
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss — 193 chars
- https://hanamimastery.com/articles/why-all-apis-are-inconsistent — 177 chars
- https://hanamimastery.com/episodes/30-mapping-is-everything — 162 chars
- https://hanamimastery.com/episodes/31-rom-factory — 177 chars
- https://hanamimastery.com/episodes/32-rom-pagination — 256 chars
- https://hanamimastery.com/episodes/35-halt-or-handle — 181 chars
- https://hanamimastery.com/episodes/36-scale-your-app-with-slices — 197 chars
- https://hanamimastery.com/episodes/38-hanami-mastery-app — 224 chars
- https://hanamimastery.com/episodes/39-markdown-to-html — 164 chars
- https://hanamimastery.com/episodes/43-connect-with-google-drive — 204 chars
- https://hanamimastery.com/episodes/45-github-integration — 165 chars
- https://hanamimastery.com/episodes/46-contact-form — 166 chars
- https://hanamimastery.com/episodes/48-phlex-in-hanami — 251 chars
- https://hanamimastery.com/episodes/49-registry-pattern-in-hanami — 207 chars
- https://hanamimastery.com/episodes/50-hanami-core-team-interview — 251 chars
- https://hanamimastery.com/episodes/51-integrate-font-awesome-in-hanami — 174 chars
- https://hanamimastery.com/episodes/52-render-flash-the-correct-way — 208 chars
- https://hanamimastery.com/episodes/53-advanced-forms-in-hanami — 169 chars
notice Meta description too short
Rule meta_desc.too_short · Meta Description · 3 occurrence(s)
- https://hanamimastery.com/authors — 20 chars
- https://hanamimastery.com/privacy-policy — 49 chars
- https://hanamimastery.com/sponsors — 48 chars
notice Missing Open Graph tags
Rule og.missing · Social · 5 occurrence(s)
- https://hanamimastery.com/authors/fiachetti — og:title, og:description, og:image
- https://hanamimastery.com/authors/swilgosz — og:title, og:description, og:image
- https://hanamimastery.com/c/stray — og:image
- https://hanamimastery.com/episodes — og:image
- https://hanamimastery.com/t/hanami — og:image
notice Large DOM (over 1500 elements) slows rendering & interaction
Rule perf.dom_size_large · Performance · 1 occurrence(s)
- https://hanamimastery.com/authors/swilgosz — the page has 1651 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.
notice Legacy image format (jpg/png/gif) with no next-gen fallback
Rule perf.images_legacy_format · Performance · 50 occurrence(s)
- https://hanamimastery.com/ — 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://hanamimastery.com/about — 2 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://hanamimastery.com/articles/2022-summary — 2 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://hanamimastery.com/articles/dry-rb-dependency-graph — 4 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://hanamimastery.com/articles/giving-appreciation — 2 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://hanamimastery.com/articles/hanami-architecture-explained — 2 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://hanamimastery.com/articles/hanamimastery-origins — 6 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://hanamimastery.com/articles/open-source-heroes — 5 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://hanamimastery.com/articles/secret-of-stunning-oss-contributions — 8 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://hanamimastery.com/articles/sequel-over-activerecord — 11 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://hanamimastery.com/articles/unofficial-hanami-upgrade-guides — 2 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://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss — 2 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://hanamimastery.com/articles/why-all-apis-are-inconsistent — 5 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://hanamimastery.com/authors — 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://hanamimastery.com/authors/fiachetti — 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://hanamimastery.com/authors/swilgosz — 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://hanamimastery.com/c/stray — 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://hanamimastery.com/collaboration — 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://hanamimastery.com/episodes — 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://hanamimastery.com/episodes/54-complete-hanami-stack — 8 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://hanamimastery.com/episodes/54-complete-hanami-stack?view=discuss — 8 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://hanamimastery.com/privacy-policy — 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://hanamimastery.com/sponsors — 2 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://hanamimastery.com/t/hanami — 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://hanamimastery.com/thank-you — 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.
notice Deep page has no BreadcrumbList structured data
Rule schema.breadcrumb_missing · Structured Data · 2 occurrence(s)
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss — depth-2 page has structured data but no BreadcrumbList
- https://hanamimastery.com/episodes/54-complete-hanami-stack?view=discuss — depth-2 page has structured data but no BreadcrumbList
notice No structured data detected
Rule schema.none · Structured Data · 10 occurrence(s)
- https://hanamimastery.com/about
- https://hanamimastery.com/authors
- https://hanamimastery.com/authors/fiachetti
- https://hanamimastery.com/authors/swilgosz
- https://hanamimastery.com/c/stray
- https://hanamimastery.com/collaboration
- https://hanamimastery.com/privacy-policy
- https://hanamimastery.com/sponsors
- https://hanamimastery.com/t/hanami
- https://hanamimastery.com/thank-you
notice Missing recommended security headers
Rule security.missing_headers · Security · 50 occurrence(s)
- https://hanamimastery.com/ — CSP, X-Content-Type-Options
- https://hanamimastery.com/about — CSP, X-Content-Type-Options
- https://hanamimastery.com/articles/2022-summary — CSP, X-Content-Type-Options
- https://hanamimastery.com/articles/dry-rb-dependency-graph — CSP, X-Content-Type-Options
- https://hanamimastery.com/articles/giving-appreciation — CSP, X-Content-Type-Options
- https://hanamimastery.com/articles/hanami-architecture-explained — CSP, X-Content-Type-Options
- https://hanamimastery.com/articles/hanamimastery-origins — CSP, X-Content-Type-Options
- https://hanamimastery.com/articles/open-source-heroes — CSP, X-Content-Type-Options
- https://hanamimastery.com/articles/secret-of-stunning-oss-contributions — CSP, X-Content-Type-Options
- https://hanamimastery.com/articles/sequel-over-activerecord — CSP, X-Content-Type-Options
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides — CSP, X-Content-Type-Options
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss — CSP, X-Content-Type-Options
- https://hanamimastery.com/articles/why-all-apis-are-inconsistent — CSP, X-Content-Type-Options
- https://hanamimastery.com/authors — CSP, X-Content-Type-Options
- https://hanamimastery.com/authors/fiachetti — CSP, X-Content-Type-Options
- https://hanamimastery.com/authors/swilgosz — CSP, X-Content-Type-Options
- https://hanamimastery.com/c/stray — CSP, X-Content-Type-Options
- https://hanamimastery.com/collaboration — CSP, X-Content-Type-Options
- https://hanamimastery.com/episodes — CSP, X-Content-Type-Options
- https://hanamimastery.com/episodes/54-complete-hanami-stack — CSP, X-Content-Type-Options
- https://hanamimastery.com/episodes/54-complete-hanami-stack?view=discuss — CSP, X-Content-Type-Options
- https://hanamimastery.com/privacy-policy — CSP, X-Content-Type-Options
- https://hanamimastery.com/sponsors — CSP, X-Content-Type-Options
- https://hanamimastery.com/t/hanami — CSP, X-Content-Type-Options
- https://hanamimastery.com/thank-you — CSP, X-Content-Type-Options
notice target=_blank link without rel=noopener (tab-napping)
Rule security.unsafe_cross_origin_links · Security · 41 occurrence(s)
- https://hanamimastery.com/articles/2022-summary — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/articles/dry-rb-dependency-graph — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/articles/giving-appreciation — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/articles/hanami-architecture-explained — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/articles/hanamimastery-origins — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/articles/open-source-heroes — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/articles/secret-of-stunning-oss-contributions — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/articles/sequel-over-activerecord — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides — 4 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss — 4 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/articles/why-all-apis-are-inconsistent — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/authors/swilgosz — 5 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes — 5 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes/45-github-integration — 4 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes/46-contact-form — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes/47-send-emails-with-hanami-mailer — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes/48-phlex-in-hanami — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes/49-registry-pattern-in-hanami — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes/50-hanami-core-team-interview — 3 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes/51-integrate-font-awesome-in-hanami — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes/52-render-flash-the-correct-way — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes/53-advanced-forms-in-hanami — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes/54-complete-hanami-stack — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/episodes/54-complete-hanami-stack?view=discuss — 2 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
- https://hanamimastery.com/t/hanami — 5 external link(s) use target="_blank" without rel="noopener" — the opened page can hijack your tab (reverse tab-napping). Add rel="noopener noreferrer".
notice Missing Twitter Card tag
Rule twitter.missing · Social · 5 occurrence(s)
| URL | Status | Indexable | Words | In-links |
|---|---|---|---|---|
| https://hanamimastery.com/ Newest Hanami screencasts, articles, and video tutorials | Hanami Mastery |
200 | yes | 416 | 50 |
| https://hanamimastery.com/privacy-policy Privacy Policy for Hanami Mastery! | Hanami Mastery |
200 | yes | 3111 | 50 |
| https://hanamimastery.com/sponsors Sponsors | Hanami Mastery - informations for supporters. | Hanami Mastery |
200 | yes | 987 | 49 |
| https://hanamimastery.com/t/hanami Articles and screencasts about hanami | Hanami Mastery |
200 | yes | 1661 | 44 |
| https://hanamimastery.com/authors/swilgosz | 200 | yes | 2562 | 36 |
| https://hanamimastery.com/episodes/54-complete-hanami-stack Last Puzzle in place! Fullstack Hanami 2.2! | Hanami Mastery |
200 | yes | 4075 | 27 |
| https://hanamimastery.com/episodes/53-advanced-forms-in-hanami Advanced forms in Hanami 2 | Hanami Mastery |
200 | yes | 3968 | 26 |
| https://hanamimastery.com/episodes/52-render-flash-the-correct-way Render flash messages in Hanami, but like a PRO | Hanami Mastery |
200 | yes | 2528 | 23 |
| https://hanamimastery.com/collaboration Collaboration - how we can help each other? | Hanami Mastery |
200 | yes | 641 | 3 |
| https://hanamimastery.com/episodes/51-integrate-font-awesome-in-hanami Font Awesome icons in Hanami apps! | Hanami Mastery |
200 | yes | 1438 | 17 |
| https://hanamimastery.com/about About | Hanami Mastery - the concept and mission. | Hanami Mastery |
200 | yes | 540 | 5 |
| https://hanamimastery.com/episodes/48-phlex-in-hanami Phlex with Hanami - make your views written in Ruby. Completely. | Hanami Mastery |
200 | yes | 2336 | 10 |
| https://hanamimastery.com/episodes/50-hanami-core-team-interview Special: Hanami Core Team Interview | Hanami Mastery |
200 | yes | 8761 | 10 |
| https://hanamimastery.com/articles/open-source-heroes Open Source Heroes - A Poem of Appreciation. | Hanami Mastery |
200 | yes | 644 | 9 |
| https://hanamimastery.com/articles/2022-summary Hanami Mastery 2022 - Year Summary and next plans. | Hanami Mastery |
200 | yes | 2525 | 8 |
| https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides WIP: Unofficial guide for upgrading Hanami 1.x -> Hanami 2.x | Hanami Mastery |
200 | yes | 2810 | 8 |
| https://hanamimastery.com/episodes/30-mapping-is-everything ROM - Mapping is everything | Hanami Mastery |
200 | yes | 1099 | 11 |
| https://hanamimastery.com/episodes/32-rom-pagination Pagination in Hanami apps with ROM | Hanami Mastery |
200 | yes | 1347 | 11 |
| https://hanamimastery.com/c/stray Casual articles about web development in Ruby | Hanami Mastery |
200 | yes | 444 | 2 |
| https://hanamimastery.com/episodes/40-hanamismith Spin up your Hanami apps easily with Hanamismith | Hanami Mastery |
200 | yes | 1861 | 11 |
| https://hanamimastery.com/episodes/46-contact-form Contact Forms with Hanami View | Hanami Mastery |
200 | yes | 2714 | 8 |
| https://hanamimastery.com/articles/secret-of-stunning-oss-contributions The secret of stunning OSS contributions! | Hanami Mastery |
200 | yes | 2165 | 9 |
| https://hanamimastery.com/episodes/29-leverage-rom-repositories Leverage ROM Repositories | Hanami Mastery |
200 | yes | 666 | 8 |
| https://hanamimastery.com/articles/why-all-apis-are-inconsistent Why ALL APIs are inconsistent? | Hanami Mastery |
200 | yes | 1905 | 8 |
| https://hanamimastery.com/episodes Newest Hanami screencasts, articles, and video tutorials | Hanami Mastery - learn Hanami as a pro |
200 | yes | 2250 | 1 |
| https://hanamimastery.com/articles/dry-rb-dependency-graph I've made a dependency graph for all DRY gems of Ruby gems family! | Hanami Mastery |
200 | yes | 1201 | 4 |
| https://hanamimastery.com/articles/giving-appreciation Why I'm giving so much appreciation everywhere? | Hanami Mastery |
200 | yes | 2133 | 6 |
| https://hanamimastery.com/episodes/35-halt-or-handle Halt or Handle? Dealing with exceptions in Hanami apps! | Hanami Mastery |
200 | yes | 1796 | 5 |
| https://hanamimastery.com/episodes/38-hanami-mastery-app Intro to Apps architecture - Level 1: Context | Hanami Mastery |
200 | yes | 1146 | 6 |
| https://hanamimastery.com/episodes/37-dry-cli Advanced CLI tools with Ruby and dry-cli! | Hanami Mastery |
200 | yes | 2440 | 6 |
| https://hanamimastery.com/episodes/36-scale-your-app-with-slices Scale your app with slices! | Hanami Mastery |
200 | yes | 2406 | 5 |
| https://hanamimastery.com/articles/sequel-over-activerecord ROM and Sequel over ActiveRecord? | Hanami Mastery |
200 | yes | 1861 | 4 |
| https://hanamimastery.com/articles/hanami-architecture-explained Hanami architecture explained | Hanami Mastery |
200 | yes | 1085 | 4 |
| https://hanamimastery.com/episodes/43-connect-with-google-drive Connect your ruby app with google drive. | Hanami Mastery |
200 | yes | 655 | 5 |
| https://hanamimastery.com/episodes/45-github-integration Github integration with Hanami | Hanami Mastery |
200 | yes | 1132 | 5 |
| https://hanamimastery.com/articles/hanamimastery-origins My attempt to change the world of Open-Source financing. | Hanami Mastery |
200 | yes | 1935 | 5 |
| https://hanamimastery.com/episodes/41-deploying-to-render Deploying Hanami Apps to Render | Hanami Mastery |
200 | yes | 1526 | 4 |
| https://hanamimastery.com/episodes/47-send-emails-with-hanami-mailer Send emails with hanami-mailer | Hanami Mastery |
200 | yes | 1969 | 4 |
| https://hanamimastery.com/episodes/54-complete-hanami-stack?view=discuss Last Puzzle in place! Fullstack Hanami 2.2! | Hanami Mastery |
200 | yes | 4075 | 2 |
| https://hanamimastery.com/episodes/49-registry-pattern-in-hanami Registry Pattern in Hanami apps | Hanami Mastery |
200 | yes | 2292 | 4 |
| https://hanamimastery.com/episodes/39-markdown-to-html HTML from markdown made simple! | Hanami Mastery |
200 | yes | 1846 | 5 |
| https://hanamimastery.com/episodes/42-front-matter-parser Best way to work with Front Matter in Ruby! | Hanami Mastery |
200 | yes | 1128 | 4 |
| https://hanamimastery.com/authors/fiachetti | 200 | yes | 206 | 4 |
| https://hanamimastery.com/episodes/33-semantic-versioning Deep dive into semantic versioning in Ruby | Hanami Mastery |
200 | yes | 2607 | 4 |
| https://hanamimastery.com/episodes/34-versioning-with-pessimize Safe gem upgrades with pessimize gem | Hanami Mastery |
200 | yes | 2148 | 4 |
| https://hanamimastery.com/episodes/31-rom-factory ROM-Factory - Your testing buddy for Hanami apps | Hanami Mastery |
200 | yes | 1478 | 3 |
| https://hanamimastery.com/episodes/44-bridgetown Let's make a blog with Bridgetown | Hanami Mastery |
200 | yes | 1555 | 3 |
| https://hanamimastery.com/articles/unofficial-hanami-upgrade-guides?view=discuss WIP: Unofficial guide for upgrading Hanami 1.x -> Hanami 2.x | Hanami Mastery |
200 | yes | 2810 | 2 |
| https://hanamimastery.com/thank-you Thank you for your Hanami Mastery subscription! | Hanami Mastery |
200 | yes | 95 | 1 |
| https://hanamimastery.com/authors HanamiMastery authors | Hanami Mastery |
200 | yes | 33 | 0 |
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.