SEO audit for nor.ma
Norma — Block distracting apps by scanning a steel disc
Health 66/100 (fair) · 27 pages crawled · generated 2026-08-26
Download Markdown report (feed to ChatGPT / Claude / Cursor)Norma is a stainless steel NFC disc. Scan it with your iPhone and the distracting apps you choose disappear — until you scan again. No subscription, no battery, no charging. A physical focus tool to c…
| Category | Score | Errors | Warnings | Notices |
|---|---|---|---|---|
| Links | 0 | 0 | 214 | 1 |
| Hreflang | 87 | 0 | 12 | 0 |
| Duplicate | 96 | 0 | 4 | 2 |
| Structured Data | 96 | 0 | 4 | 28 |
| Content | 98 | 0 | 2 | 49 |
| Titles | 99 | 0 | 1 | 1 |
| Video | 99 | 0 | 1 | 0 |
| Agent Readiness | 100 | 0 | 0 | 1 |
| Cache | 100 | 0 | 0 | 12 |
| Crawlability | 100 | 0 | 0 | 15 |
| Images | 100 | 0 | 0 | 37 |
| Meta Description | 100 | 0 | 0 | 17 |
| Performance | 100 | 0 | 0 | 82 |
| Security | 100 | 0 | 0 | 26 |
| Sitemap | 100 | 0 | 0 | 4 |
| Social | 100 | 0 | 0 | 17 |
| URL | 100 | 0 | 0 | 1 |
Warnings (9 rules)
warning Thin content (low word count)
Rule content.thin · Content · 2 occurrence(s)
- https://nor.ma/app — 94 words
- https://nor.ma/legal/shipping-refund-policy — 191 words
warning Duplicate page content
Rule duplicate.content · Duplicate · 2 occurrence(s)
- https://nor.ma/fr/shop — content shared by 2 pages: https://nor.ma/shop
- https://nor.ma/shop — content shared by 2 pages: https://nor.ma/fr/shop
warning Duplicate <title> across pages
Rule duplicate.title · Duplicate · 2 occurrence(s)
- https://nor.ma/fr/shop — title shared by 2 pages: https://nor.ma/shop
- https://nor.ma/shop — title shared by 2 pages: https://nor.ma/fr/shop
warning Self hreflang language disagrees with html lang
Rule hreflang.mismatch_html_lang · Hreflang · 12 occurrence(s)
- https://nor.ma/affiliates — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
- https://nor.ma/blog — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
- https://nor.ma/blog/cost-of-a-quick-check — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
- https://nor.ma/blog/how-to-cut-screen-time — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
- https://nor.ma/blog/norma-vs-brick-and-opal — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
- https://nor.ma/blog/norma-vs-screen-time-apps — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
- https://nor.ma/blog/notifications-silenced-iphone — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
- https://nor.ma/blog/stop-infinite-scrolling-iphone — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
- https://nor.ma/blog/the-steel-disc — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
- https://nor.ma/blog/what-is-norma — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
- https://nor.ma/blog/your-screen-time-isnt-your-fault — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
- https://nor.ma/shop — the self-referencing hreflang is "en" but <html lang> is "fr" — contradictory language signals can make Google distrust the hreflang cluster. Align both to the same BCP-47 language.
warning Orphan page (no internal inlinks)
Rule links.orphan · Links · 2 occurrence(s)
- https://nor.ma/brick-alternative — no internal links point here
- https://nor.ma/fr/brick-alternative — no internal links point here
warning Internal link points to a redirect
Rule links.redirect_target · Links · 212 occurrence(s)
- https://nor.ma/ — https://nor.ma/affiliates → https://nor.ma/fr/affiliates
- https://nor.ma/ — https://nor.ma/blog → https://nor.ma/fr/blog
- https://nor.ma/ — https://nor.ma/blog/norma-vs-brick-and-opal → https://nor.ma/fr/blog/norma-vs-brick-and-opal
- https://nor.ma/ — https://nor.ma/blog/notifications-silenced-iphone → https://nor.ma/fr/blog/notifications-silenced-iphone
- https://nor.ma/ — https://nor.ma/blog/stop-infinite-scrolling-iphone → https://nor.ma/fr/blog/stop-infinite-scrolling-iphone
- https://nor.ma/ — https://nor.ma/blog/the-steel-disc → https://nor.ma/fr/blog/the-steel-disc
- https://nor.ma/ — https://nor.ma/blog/what-is-norma → https://nor.ma/fr/blog/what-is-norma
- https://nor.ma/ — https://nor.ma/faq → https://nor.ma/fr/faq
- https://nor.ma/ — https://nor.ma/legal/privacy-policy → https://nor.ma/fr/legal/privacy-policy
- https://nor.ma/ — https://nor.ma/legal/shipping-refund-policy → https://nor.ma/fr/legal/shipping-refund-policy
- https://nor.ma/ — https://nor.ma/shop → https://nor.ma/fr/shop
- https://nor.ma/app — https://nor.ma/affiliates → https://nor.ma/fr/affiliates
- https://nor.ma/app — https://nor.ma/blog → https://nor.ma/fr/blog
- https://nor.ma/app — https://nor.ma/faq → https://nor.ma/fr/faq
- https://nor.ma/app — https://nor.ma/legal/privacy-policy → https://nor.ma/fr/legal/privacy-policy
- https://nor.ma/app — https://nor.ma/legal/shipping-refund-policy → https://nor.ma/fr/legal/shipping-refund-policy
- https://nor.ma/app — https://nor.ma/shop → https://nor.ma/fr/shop
- https://nor.ma/mac — https://nor.ma/affiliates → https://nor.ma/fr/affiliates
- https://nor.ma/mac — https://nor.ma/blog → https://nor.ma/fr/blog
- https://nor.ma/mac — https://nor.ma/faq → https://nor.ma/fr/faq
- https://nor.ma/mac — https://nor.ma/legal/privacy-policy → https://nor.ma/fr/legal/privacy-policy
- https://nor.ma/mac — https://nor.ma/legal/shipping-refund-policy → https://nor.ma/fr/legal/shipping-refund-policy
- https://nor.ma/mac — https://nor.ma/shop → https://nor.ma/fr/shop
- https://nor.ma/story — https://nor.ma/blog → https://nor.ma/fr/blog
- https://nor.ma/story — https://nor.ma/faq → https://nor.ma/fr/faq
warning Schema describes content not visible on the page
Rule schema.hidden_content · Structured Data · 4 occurrence(s)
- https://nor.ma/affiliates — a schema name/headline ("Norma — Focus Disc") does not appear in the page's visible text — Google's policies prohibit marking up content not visible to readers. This is a heuristic (a static-HTML substring check): JS-rendered or abbreviated names can be false positives, so verify before removing.
- https://nor.ma/legal/privacy-policy — a schema name/headline ("Norma — Focus Disc") does not appear in the page's visible text — Google's policies prohibit marking up content not visible to readers. This is a heuristic (a static-HTML substring check): JS-rendered or abbreviated names can be false positives, so verify before removing.
- https://nor.ma/legal/shipping-refund-policy — a schema name/headline ("Norma — Focus Disc") does not appear in the page's visible text — Google's policies prohibit marking up content not visible to readers. This is a heuristic (a static-HTML substring check): JS-rendered or abbreviated names can be false positives, so verify before removing.
- https://nor.ma/student — a schema name/headline ("Norma — Focus Disc") does not appear in the page's visible text — Google's policies prohibit marking up content not visible to readers. This is a heuristic (a static-HTML substring check): JS-rendered or abbreviated names can be false positives, so verify before removing.
warning Title likely truncated in SERP (too wide)
Rule title.too_long · Titles · 1 occurrence(s)
- https://nor.ma/blog/notifications-silenced-iphone — 76 chars, ~590px (limit ~580px)
warning Video element present but hidden/zero-size (prominence)
Rule video.hidden · Video · 1 occurrence(s)
- https://nor.ma/mac — 2 <video> element(s), all hidden/zero-size
Notices (23 rules)
notice Heading levels skip a level
Rule agent.heading_skip · Agent Readiness · 1 occurrence(s)
- https://nor.ma/faq — h3 follows h1 — skips h2
notice Page served uncached (no-store/private or CDN bypass)
Rule cache.not_cacheable · Cache · 12 occurrence(s)
- https://nor.ma/blog — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://nor.ma/blog/cost-of-a-quick-check — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://nor.ma/blog/how-to-cut-screen-time — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://nor.ma/blog/norma-vs-brick-and-opal — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://nor.ma/blog/norma-vs-screen-time-apps — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://nor.ma/blog/notifications-silenced-iphone — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://nor.ma/blog/stop-infinite-scrolling-iphone — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://nor.ma/blog/the-steel-disc — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://nor.ma/blog/what-is-norma — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://nor.ma/blog/your-screen-time-isnt-your-fault — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://nor.ma/fr/shop — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://nor.ma/shop — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
notice Low text-to-HTML ratio
Rule content.low_ratio · Content · 23 occurrence(s)
- https://nor.ma/ — 3.8%
- https://nor.ma/affiliates — 1.4%
- https://nor.ma/app — 0.6%
- https://nor.ma/blog — 2.6%
- https://nor.ma/blog/norma-vs-brick-and-opal — 3.5%
- https://nor.ma/blog/norma-vs-screen-time-apps — 4.7%
- https://nor.ma/blog/notifications-silenced-iphone — 3.9%
- https://nor.ma/blog/stop-infinite-scrolling-iphone — 3.9%
- https://nor.ma/blog/the-steel-disc — 3.1%
- https://nor.ma/blog/what-is-norma — 3.3%
- https://nor.ma/brick-alternative — 3.2%
- https://nor.ma/business — 1.7%
- https://nor.ma/faq — 3.0%
- https://nor.ma/fr/brick-alternative — 3.8%
- https://nor.ma/fr/shop — 2.9%
- https://nor.ma/fr/support — 3.8%
- https://nor.ma/legal/privacy-policy — 3.6%
- https://nor.ma/legal/shipping-refund-policy — 1.4%
- https://nor.ma/mac — 1.8%
- https://nor.ma/shop — 2.9%
- https://nor.ma/story — 1.9%
- https://nor.ma/student — 1.3%
- https://nor.ma/support — 3.4%
notice Duplicate meta description across pages
Rule duplicate.meta_desc · Duplicate · 2 occurrence(s)
- https://nor.ma/fr/shop — meta description shared by 2 pages: https://nor.ma/shop
- https://nor.ma/shop — meta description shared by 2 pages: https://nor.ma/fr/shop
notice Image filename is generic/auto-generated (missed image-search signal)
Rule images.generic_filename · Images · 11 occurrence(s)
- https://nor.ma/ — 5 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://nor.ma/blog — 5 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://nor.ma/blog/cost-of-a-quick-check — 2 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://nor.ma/blog/how-to-cut-screen-time — 3 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://nor.ma/blog/norma-vs-brick-and-opal — 4 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://nor.ma/blog/norma-vs-screen-time-apps — 3 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://nor.ma/blog/notifications-silenced-iphone — 4 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://nor.ma/blog/stop-infinite-scrolling-iphone — 4 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://nor.ma/blog/the-steel-disc — 4 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://nor.ma/blog/what-is-norma — 5 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://nor.ma/blog/your-screen-time-isnt-your-fault — 2 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 · 26 occurrence(s)
- https://nor.ma/ — the likely hero/LCP image (wordmarkwhite.svg) 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://nor.ma/affiliates — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/app — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/blog — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/blog/cost-of-a-quick-check — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/blog/how-to-cut-screen-time — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/blog/norma-vs-brick-and-opal — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/blog/norma-vs-screen-time-apps — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/blog/notifications-silenced-iphone — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/blog/stop-infinite-scrolling-iphone — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/blog/the-steel-disc — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/blog/what-is-norma — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/blog/your-screen-time-isnt-your-fault — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/brick-alternative — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/business — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/faq — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/fr/brick-alternative — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/fr/shop — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/legal/privacy-policy — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/legal/shipping-refund-policy — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/mac — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/shop — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/story — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/student — the likely hero/LCP image (wordmarkblack.svg) 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://nor.ma/support — the likely hero/LCP image (wordmarkblack.svg) 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 · 26 occurrence(s)
- https://nor.ma/ — 34 of 34 images without width/height
- https://nor.ma/affiliates — 2 of 2 images without width/height
- https://nor.ma/app — 3 of 3 images without width/height
- https://nor.ma/blog — 11 of 11 images without width/height
- https://nor.ma/blog/cost-of-a-quick-check — 6 of 6 images without width/height
- https://nor.ma/blog/how-to-cut-screen-time — 6 of 6 images without width/height
- https://nor.ma/blog/norma-vs-brick-and-opal — 7 of 7 images without width/height
- https://nor.ma/blog/norma-vs-screen-time-apps — 6 of 6 images without width/height
- https://nor.ma/blog/notifications-silenced-iphone — 7 of 7 images without width/height
- https://nor.ma/blog/stop-infinite-scrolling-iphone — 7 of 7 images without width/height
- https://nor.ma/blog/the-steel-disc — 7 of 7 images without width/height
- https://nor.ma/blog/what-is-norma — 8 of 8 images without width/height
- https://nor.ma/blog/your-screen-time-isnt-your-fault — 6 of 6 images without width/height
- https://nor.ma/brick-alternative — 17 of 17 images without width/height
- https://nor.ma/business — 2 of 2 images without width/height
- https://nor.ma/faq — 2 of 2 images without width/height
- https://nor.ma/fr/brick-alternative — 17 of 17 images without width/height
- https://nor.ma/fr/shop — 19 of 19 images without width/height
- https://nor.ma/legal/privacy-policy — 2 of 2 images without width/height
- https://nor.ma/legal/shipping-refund-policy — 2 of 2 images without width/height
- https://nor.ma/mac — 6 of 6 images without width/height
- https://nor.ma/shop — 19 of 19 images without width/height
- https://nor.ma/story — 2 of 2 images without width/height
- https://nor.ma/student — 2 of 2 images without width/height
- https://nor.ma/support — 2 of 2 images without width/height
notice Page has only one internal inlink (fragile crawl path)
Rule links.single_inlink · Links · 1 occurrence(s)
- https://nor.ma/fr/support — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
notice Legacy <meta name=keywords> tag present (Google ignores it)
Rule meta.keywords_present · Content · 26 occurrence(s)
- https://nor.ma/ — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/affiliates — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/app — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/blog — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/blog/cost-of-a-quick-check — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/blog/how-to-cut-screen-time — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/blog/norma-vs-brick-and-opal — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/blog/norma-vs-screen-time-apps — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/blog/notifications-silenced-iphone — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/blog/stop-infinite-scrolling-iphone — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/blog/the-steel-disc — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/blog/what-is-norma — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/blog/your-screen-time-isnt-your-fault — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/brick-alternative — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/business — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/faq — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/fr/brick-alternative — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/fr/shop — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/legal/privacy-policy — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/legal/shipping-refund-policy — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/mac — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/shop — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/story — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/student — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
- https://nor.ma/support — a <meta name="keywords"> tag is present — Google has ignored it since 2009; remove it to cut template debt
notice Meta description too long
Rule meta_desc.too_long · Meta Description · 16 occurrence(s)
- https://nor.ma/ — 232 chars
- https://nor.ma/affiliates — 165 chars
- https://nor.ma/blog/cost-of-a-quick-check — 234 chars
- https://nor.ma/blog/how-to-cut-screen-time — 212 chars
- https://nor.ma/blog/norma-vs-brick-and-opal — 175 chars
- https://nor.ma/blog/norma-vs-screen-time-apps — 232 chars
- https://nor.ma/blog/notifications-silenced-iphone — 207 chars
- https://nor.ma/blog/stop-infinite-scrolling-iphone — 207 chars
- https://nor.ma/blog/the-steel-disc — 184 chars
- https://nor.ma/blog/what-is-norma — 172 chars
- https://nor.ma/blog/your-screen-time-isnt-your-fault — 187 chars
- https://nor.ma/brick-alternative — 213 chars
- https://nor.ma/business — 217 chars
- https://nor.ma/fr/brick-alternative — 223 chars
- https://nor.ma/mac — 186 chars
- https://nor.ma/story — 178 chars
notice Meta description too short
Rule meta_desc.too_short · Meta Description · 1 occurrence(s)
- https://nor.ma/legal/shipping-refund-policy — 46 chars
notice Missing Open Graph tags
Rule og.missing · Social · 17 occurrence(s)
- https://nor.ma/affiliates — og:image
- https://nor.ma/app — og:image
- https://nor.ma/blog — og:image
- https://nor.ma/blog/cost-of-a-quick-check — og:image
- https://nor.ma/blog/how-to-cut-screen-time — og:image
- https://nor.ma/blog/norma-vs-screen-time-apps — og:image
- https://nor.ma/blog/your-screen-time-isnt-your-fault — og:image
- https://nor.ma/brick-alternative — og:image
- https://nor.ma/business — og:image
- https://nor.ma/fr/brick-alternative — og:image
- https://nor.ma/fr/shop — og:image
- https://nor.ma/fr/support — og:image
- https://nor.ma/mac — og:image
- https://nor.ma/shop — og:image
- https://nor.ma/story — og:image
- https://nor.ma/student — og:image
- https://nor.ma/support — og:image
notice Legacy image format (jpg/png/gif) with no next-gen fallback
Rule perf.images_legacy_format · Performance · 17 occurrence(s)
- https://nor.ma/ — 20 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://nor.ma/app — 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://nor.ma/blog — 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://nor.ma/blog/cost-of-a-quick-check — 3 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://nor.ma/blog/how-to-cut-screen-time — 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://nor.ma/blog/norma-vs-brick-and-opal — 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://nor.ma/blog/norma-vs-screen-time-apps — 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://nor.ma/blog/notifications-silenced-iphone — 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://nor.ma/blog/stop-infinite-scrolling-iphone — 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://nor.ma/blog/the-steel-disc — 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://nor.ma/blog/what-is-norma — 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://nor.ma/blog/your-screen-time-isnt-your-fault — 3 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://nor.ma/brick-alternative — 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://nor.ma/fr/brick-alternative — 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://nor.ma/fr/shop — 15 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
- https://nor.ma/mac — 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://nor.ma/shop — 15 image(s) use a legacy format (jpg/png/gif) with no next-gen <picture> fallback. Serve WebP or AVIF (with a <picture> typed <source>) to cut image transfer weight and improve LCP.
notice Large HTML document
Rule perf.large_html · Performance · 1 occurrence(s)
- https://nor.ma/mac/Norma.dmg — 10.2 MiB
notice No ETag header (no conditional GET for unchanged pages)
Rule perf.no_etag · Performance · 12 occurrence(s)
- https://nor.ma/blog — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://nor.ma/blog/cost-of-a-quick-check — 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://nor.ma/blog/how-to-cut-screen-time — 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://nor.ma/blog/norma-vs-brick-and-opal — 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://nor.ma/blog/norma-vs-screen-time-apps — 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://nor.ma/blog/notifications-silenced-iphone — 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://nor.ma/blog/stop-infinite-scrolling-iphone — 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://nor.ma/blog/the-steel-disc — 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://nor.ma/blog/what-is-norma — 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://nor.ma/blog/your-screen-time-isnt-your-fault — 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://nor.ma/fr/shop — 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://nor.ma/shop — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
notice No Last-Modified header (no conditional GET for unchanged pages)
Rule perf.no_last_modified · Performance · 26 occurrence(s)
- https://nor.ma/ — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/affiliates — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/app — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/blog — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/blog/cost-of-a-quick-check — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/blog/how-to-cut-screen-time — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/blog/norma-vs-brick-and-opal — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/blog/norma-vs-screen-time-apps — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/blog/notifications-silenced-iphone — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/blog/stop-infinite-scrolling-iphone — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/blog/the-steel-disc — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/blog/what-is-norma — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/blog/your-screen-time-isnt-your-fault — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/brick-alternative — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/business — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/faq — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/fr/brick-alternative — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/fr/shop — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/legal/privacy-policy — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/legal/shipping-refund-policy — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/mac — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/shop — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/story — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/student — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://nor.ma/support — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
notice URL redirects to another URL
Rule redirect.single · Crawlability · 15 occurrence(s)
- https://nor.ma/affiliates — redirects to https://nor.ma/fr/affiliates
- https://nor.ma/blog — redirects to https://nor.ma/fr/blog
- https://nor.ma/blog/cost-of-a-quick-check — redirects to https://nor.ma/fr/blog/cost-of-a-quick-check
- https://nor.ma/blog/how-to-cut-screen-time — redirects to https://nor.ma/fr/blog/how-to-cut-screen-time
- https://nor.ma/blog/norma-vs-brick-and-opal — redirects to https://nor.ma/fr/blog/norma-vs-brick-and-opal
- https://nor.ma/blog/norma-vs-screen-time-apps — redirects to https://nor.ma/fr/blog/norma-vs-screen-time-apps
- https://nor.ma/blog/notifications-silenced-iphone — redirects to https://nor.ma/fr/blog/notifications-silenced-iphone
- https://nor.ma/blog/stop-infinite-scrolling-iphone — redirects to https://nor.ma/fr/blog/stop-infinite-scrolling-iphone
- https://nor.ma/blog/the-steel-disc — redirects to https://nor.ma/fr/blog/the-steel-disc
- https://nor.ma/blog/what-is-norma — redirects to https://nor.ma/fr/blog/what-is-norma
- https://nor.ma/blog/your-screen-time-isnt-your-fault — redirects to https://nor.ma/fr/blog/your-screen-time-isnt-your-fault
- https://nor.ma/faq — redirects to https://nor.ma/fr/faq
- https://nor.ma/legal/privacy-policy — redirects to https://nor.ma/fr/legal/privacy-policy
- https://nor.ma/legal/shipping-refund-policy — redirects to https://nor.ma/fr/legal/shipping-refund-policy
- https://nor.ma/shop — redirects to https://nor.ma/fr/shop
notice Deep page has no BreadcrumbList structured data
Rule schema.breadcrumb_missing · Structured Data · 2 occurrence(s)
- https://nor.ma/fr/shop — depth-2 page has structured data but no BreadcrumbList
- https://nor.ma/fr/support — depth-2 page has structured data but no BreadcrumbList
notice FAQPage structured data (rich result removed May 2026)
Rule schema.faq_deprecated · Structured Data · 26 occurrence(s)
- https://nor.ma/ — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/affiliates — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/app — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/blog — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/blog/cost-of-a-quick-check — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/blog/how-to-cut-screen-time — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/blog/norma-vs-brick-and-opal — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/blog/norma-vs-screen-time-apps — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/blog/notifications-silenced-iphone — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/blog/stop-infinite-scrolling-iphone — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/blog/the-steel-disc — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/blog/what-is-norma — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/blog/your-screen-time-isnt-your-fault — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/brick-alternative — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/business — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/faq — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/fr/brick-alternative — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/fr/shop — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/legal/privacy-policy — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/legal/shipping-refund-policy — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/mac — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/shop — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/story — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/student — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
- https://nor.ma/support — FAQPage structured data is present — Google removed FAQ rich results on 7 May 2026 (except for authoritative government/health sites). The markup is harmless but earns no SERP enhancement; remove it during template maintenance.
notice Missing recommended security headers
Rule security.missing_headers · Security · 26 occurrence(s)
- https://nor.ma/ — CSP, X-Content-Type-Options
- https://nor.ma/affiliates — CSP, X-Content-Type-Options
- https://nor.ma/app — X-Content-Type-Options, CSP
- https://nor.ma/blog — CSP, X-Content-Type-Options
- https://nor.ma/blog/cost-of-a-quick-check — CSP, X-Content-Type-Options
- https://nor.ma/blog/how-to-cut-screen-time — CSP, X-Content-Type-Options
- https://nor.ma/blog/norma-vs-brick-and-opal — CSP, X-Content-Type-Options
- https://nor.ma/blog/norma-vs-screen-time-apps — CSP, X-Content-Type-Options
- https://nor.ma/blog/notifications-silenced-iphone — CSP, X-Content-Type-Options
- https://nor.ma/blog/stop-infinite-scrolling-iphone — CSP, X-Content-Type-Options
- https://nor.ma/blog/the-steel-disc — CSP, X-Content-Type-Options
- https://nor.ma/blog/what-is-norma — CSP, X-Content-Type-Options
- https://nor.ma/blog/your-screen-time-isnt-your-fault — CSP, X-Content-Type-Options
- https://nor.ma/brick-alternative — CSP, X-Content-Type-Options
- https://nor.ma/business — CSP, X-Content-Type-Options
- https://nor.ma/faq — CSP, X-Content-Type-Options
- https://nor.ma/fr/brick-alternative — CSP, X-Content-Type-Options
- https://nor.ma/fr/shop — CSP, X-Content-Type-Options
- https://nor.ma/legal/privacy-policy — CSP, X-Content-Type-Options
- https://nor.ma/legal/shipping-refund-policy — CSP, X-Content-Type-Options
- https://nor.ma/mac — CSP, X-Content-Type-Options
- https://nor.ma/shop — CSP, X-Content-Type-Options
- https://nor.ma/story — CSP, X-Content-Type-Options
- https://nor.ma/student — CSP, X-Content-Type-Options
- https://nor.ma/support — X-Content-Type-Options, CSP
notice Indexable page not listed in sitemap
Rule sitemap.orphan_not_listed · Sitemap · 4 occurrence(s)
- https://nor.ma/faq — indexable but not in sitemap
- https://nor.ma/fr/shop — indexable but not in sitemap
- https://nor.ma/fr/support — indexable but not in sitemap
- https://nor.ma/shop — indexable but not in sitemap
notice Title is very short
Rule title.too_short · Titles · 1 occurrence(s)
- https://nor.ma/fr/support — 12 chars
notice Uppercase letters in URL path
Rule url.uppercase · URL · 1 occurrence(s)
| URL | Status | Indexable | Words | In-links |
|---|---|---|---|---|
| https://nor.ma/ Norma — Block distracting apps by scanning a steel disc |
200 | yes | 1448 | 26 |
| https://nor.ma/affiliates Programme d'affiliation — gagnez avec Norma · Norma |
200 | yes | 213 | 26 |
| https://nor.ma/app Download Norma Focus — iPhone & Mac app blocker · Norma |
200 | yes | 94 | 26 |
| https://nor.ma/blog Journal — focus, attention et temps d'écran · Norma |
200 | yes | 523 | 26 |
| https://nor.ma/business Norma for teams — focus, in bulk · Norma |
200 | yes | 321 | 26 |
| https://nor.ma/faq Vos questions, nos réponses. · Norma |
200 | yes | 543 | 26 |
| https://nor.ma/legal/privacy-policy Privacy Policy · Norma |
200 | yes | 551 | 26 |
| https://nor.ma/legal/shipping-refund-policy Shipping & Refund Policy · Norma |
200 | yes | 191 | 26 |
| https://nor.ma/mac Norma for Mac — block the web while you focus · Norma |
200 | yes | 455 | 26 |
| https://nor.ma/shop Commandez votre Norma · Norma |
200 | yes | 848 | 26 |
| https://nor.ma/story Our story — why Norma is a physical disc · Norma |
200 | yes | 342 | 26 |
| https://nor.ma/student Student discount — 20% off · Norma |
200 | yes | 200 | 26 |
| https://nor.ma/support Support · Norma |
200 | yes | 702 | 26 |
| https://nor.ma/fr/shop Commandez votre Norma · Norma |
200 | yes | 848 | 18 |
| https://nor.ma/blog/stop-infinite-scrolling-iphone How to stop infinite scrolling on your iPhone (so it actually sticks). · Norma |
200 | yes | 913 | 10 |
| https://nor.ma/blog/what-is-norma What is Norma? · Norma |
200 | yes | 758 | 10 |
| https://nor.ma/blog/notifications-silenced-iphone Why your iPhone says ‘Notifications Silenced’ — and when to want it. · Norma |
200 | yes | 899 | 8 |
| https://nor.ma/blog/the-steel-disc The steel disc: why focus works better as an object. · Norma |
200 | yes | 707 | 7 |
| https://nor.ma/blog/your-screen-time-isnt-your-fault Votre temps d'écran n'est pas de votre faute. · Norma |
200 | yes | 1605 | 8 |
| https://nor.ma/blog/norma-vs-brick-and-opal Norma vs Brick vs Opal: which screen-time tool actually holds? · Norma |
200 | yes | 899 | 3 |
| https://nor.ma/blog/norma-vs-screen-time-apps Norma face aux applications de temps d'écran. · Norma |
200 | yes | 1153 | 6 |
| https://nor.ma/fr/support Aide · Norma |
200 | yes | 724 | 1 |
| https://nor.ma/blog/how-to-cut-screen-time Comment vraiment réduire votre temps d'écran. · Norma |
200 | yes | 1120 | 2 |
| https://nor.ma/blog/cost-of-a-quick-check Le vrai coût d'une « vérification rapide ». · Norma |
200 | yes | 1108 | 2 |
| https://nor.ma/brick-alternative Norma or Brick — an honest comparison · Norma |
200 | yes | 974 | 0 |
| https://nor.ma/fr/brick-alternative Norma ou Brick — le comparatif honnête · Norma |
200 | yes | 1075 | 0 |
| https://nor.ma/mac/Norma.dmg | 200 | no | 0 | 2 |
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.