https://obsidian.md

Page structure & technical metrics

Words

952

Action candidates

2

Images

5

HTML

95 KB

Copy

Title chars
32
Meta chars
52
H1
1
H2
4

Action

Primary

Get Obsidian for macOS

Forms
0/ 11 fields
On-site links
111
Off-site links
13

Security & metadata

HTTPS
yes
HSTS
yes
CSP
no
nosniff
yes
viewport
yes
Icon
yes
JSON-LD
no
Analytics
no

Page

Tailwind

Scripts
4 ext / 6 inline
Lang
en
Third-party hosts
no

Lighthouse

Simulated mobile · Performance

96 / 100

2026-09-05 · Lab data, not field data.

View details

Simulated mobile · Lab data, not field data
2026-09-05T04:05:44.278Z · Lighthouse 13.4.1

Performance96/ 100
Accessibility82/ 100
Best practices100/ 100
SEO100/ 100
LCP · Largest content2,592 ms
CLS · Layout shift0.000
TBT · Blocking time132 ms
FCP · First content1,251 ms
SI · Speed index1,824 ms

Results vary by server, network and environment, independently of taste/conversion scores. Diagnostics retain Lighthouse wording.

`[aria-hidden="true"]` elements contain focusable descendents

Focusable descendents within an `[aria-hidden="true"]` element prevent those interactive elements from being available to users of assistive technologies like screen readers. Learn how `aria-hidden` affects focusable elements.

Elements & resources
{
  "type": "table",
  "items": [
    {
      "node": {
        "lhId": "1-0-DIV",
        "path": "1,HTML,1,BODY,6,DIV,0,DIV,0,DIV,1,DIV,3,DIV,1,DIV,0,DIV",
        "type": "node",
        "snippet": "<div class=\"select-none cursor-default relative ui bg-gray-900 border-t border-s borde…\" aria-hidden=\"true\" data-nosnippet=\"\">",
        "selector": "div.text-lg > div.card > div.md:h-96 > div.select-none",
        "nodeLabel": "Community plugins\nCalendar by Liam Cain\nCalendar view of your daily notes.\nKanb…",
        "explanation": "Fix all of the following:\n  Focusable content should be disabled or be removed from the DOM",
        "boundingRect": {
          "top": 4312,
          "left": 45,
          "right": 391,
          "width": 347,
          "bottom": 4696,
          "height": 384
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "relatedNode": {
              "lhId": "1-1-INPUT",
              "path": "1,HTML,1,BODY,6,DIV,0,DIV,0,DIV,1,DIV,3,DIV,1,DIV,0,DIV,1,DIV,1,DIV,0,INPUT",
              "type": "node",
              "snippet": "<input type=\"checkbox\" aria-labelledby=\"plugins-calendar\">",
              "selector": "div.select-none > div.border-b > div.shrink-0 > input",
              "nodeLabel": "div.select-none > div.border-b > div.shrink-0 > input",
              "boundingRect": {
                "top": 4415,
                "left": 333,
                "right": 357,
                "width": 24,
                "bottom": 4431,
                "height": 16
              }
            }
          },
          {
            "relatedNode": {
              "lhId": "1-2-INPUT",
              "path": "1,HTML,1,BODY,6,DIV,0,DIV,0,DIV,1,DIV,3,DIV,1,DIV,0,DIV,2,DIV,1,DIV,0,INPUT",
              "type": "node",
              "snippet": "<input type=\"checkbox\" aria-labelledby=\"plugins-kanban\">",
              "selector": "div.select-none > div.border-b > div.ms-auto > input",
              "nodeLabel": "div.select-none > div.border-b > div.ms-auto > input",
              "boundingRect": {
                "top": 4488,
                "left": 333,
                "right": 357,
                "width": 24,
                "bottom": 4504,
                "height": 16
              }
            }
          },
          {
            "relatedNode": {
              "lhId": "1-3-INPUT",
              "path": "1,HTML,1,BODY,6,DIV,0,DIV,0,DIV,1,DIV,3,DIV,1,DIV,0,DIV,3,DIV,1,DIV,0,INPUT",
              "type": "node",
              "snippet": "<input type=\"checkbox\" aria-labelledby=\"plugins-dataview\">",
              "selector": "div.select-none > div.border-b > div.ms-auto > input",
              "nodeLabel": "div.select-none > div.border-b > div.ms-auto > input",
              "boundingRect": {
                "top": 4561,
                "left": 333,
                "right": 357,
                "width": 24,
                "bottom": 4577,
                "height": 16
              }
            }
          }
        ]
      }
    }
  ],
  "headings": [
    {
      "key": "node",
      "label": "Failing Elements",
      "valueType": "node",
      "subItemsHeading": {
        "key": "relatedNode",
        "valueType": "node"
      }
    }
  ],
  "debugData": {
    "tags": [
      "cat.name-role-value",
      "wcag2a",
      "wcag412",
      "TTv5",
      "TT6.a",
      "EN-301-549",
      "EN-9.4.1.2",
      "RGAAv4",
      "RGAA-10.8.1"
    ],
    "type": "debugdata",
    "impact": "serious"
  }
}

Background and foreground colors do not have a sufficient contrast ratio.

Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.

Elements & resources
{
  "type": "table",
  "items": [
    {
      "node": {
        "lhId": "1-4-DIV",
        "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV,1,DIV,0,DIV,0,DIV",
        "type": "node",
        "snippet": "<div class=\"flex-1 rounded-lg px-3 py-2 text-sm border border-gray-200 text-gray-400\">",
        "selector": "div.ui > div.py-4 > div.flex > div.flex-1",
        "nodeLabel": "Invite by email...",
        "explanation": "Fix any of the following:\n  Element has insufficient color contrast of 2.52 (foreground color: #a3a3a3, background color: #ffffff, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1",
        "boundingRect": {
          "top": 5465,
          "left": 77,
          "right": 359,
          "width": 283,
          "bottom": 5503,
          "height": 38
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "relatedNode": {
              "lhId": "1-5-DIV",
              "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV",
              "type": "node",
              "snippet": "<div class=\"ui ui-light rounded-ss-xl shadow-xl pt-8 ps-8 pe-8 bg-white\" style=\"min-height: 400px; height: 100%;\">",
              "selector": "div.tab-content > div.tab-pane > div.mx-auto > div.ui",
              "nodeLabel": "Shared vaults\nInvite by email...\nEX\nErica Xu\nOwner\nSA\nSteph Ango\nCan edit\nLC\nLi…",
              "boundingRect": {
                "top": 5372,
                "left": 45,
                "right": 391,
                "width": 347,
                "bottom": 5772,
                "height": 400
              }
            }
          }
        ]
      }
    },
    {
      "node": {
        "lhId": "1-6-DIV",
        "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV,1,DIV,1,DIV,0,DIV",
        "type": "node",
        "snippet": "<div class=\"w-8 h-8 rounded-full flex items-center justify-center text-xs font-semibol…\">",
        "selector": "div.ui > div.py-4 > div.flex > div.w-8",
        "nodeLabel": "EX",
        "explanation": "Fix any of the following:\n  Element has insufficient color contrast of 4.46 (foreground color: #ffffff, background color: #6366f1, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
        "boundingRect": {
          "top": 5532,
          "left": 77,
          "right": 109,
          "width": 32,
          "bottom": 5564,
          "height": 32
        }
      }
    },
    {
      "node": {
        "lhId": "1-7-DIV",
        "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV,1,DIV,1,DIV,2,DIV",
        "type": "node",
        "snippet": "<div class=\"text-xs text-gray-400\">",
        "selector": "div.ui > div.py-4 > div.flex > div.text-xs",
        "nodeLabel": "Owner",
        "explanation": "Fix any of the following:\n  Element has insufficient color contrast of 2.52 (foreground color: #a3a3a3, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
        "boundingRect": {
          "top": 5540,
          "left": 322,
          "right": 359,
          "width": 37,
          "bottom": 5556,
          "height": 16
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "relatedNode": {
              "lhId": "1-5-DIV",
              "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV",
              "type": "node",
              "snippet": "<div class=\"ui ui-light rounded-ss-xl shadow-xl pt-8 ps-8 pe-8 bg-white\" style=\"min-height: 400px; height: 100%;\">",
              "selector": "div.tab-content > div.tab-pane > div.mx-auto > div.ui",
              "nodeLabel": "Shared vaults\nInvite by email...\nEX\nErica Xu\nOwner\nSA\nSteph Ango\nCan edit\nLC\nLi…",
              "boundingRect": {
                "top": 5372,
                "left": 45,
                "right": 391,
                "width": 347,
                "bottom": 5772,
                "height": 400
              }
            }
          }
        ]
      }
    },
    {
      "node": {
        "lhId": "1-8-DIV",
        "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV,1,DIV,2,DIV,0,DIV",
        "type": "node",
        "snippet": "<div class=\"w-8 h-8 rounded-full flex items-center justify-center text-xs font-semibol…\" style=\"background: hsl(258,88%,66%);\">",
        "selector": "div.ui > div.py-4 > div.flex > div.w-8",
        "nodeLabel": "SA",
        "explanation": "Fix any of the following:\n  Element has insufficient color contrast of 4.25 (foreground color: #ffffff, background color: #8a5cf5, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
        "boundingRect": {
          "top": 5589,
          "left": 77,
          "right": 109,
          "width": 32,
          "bottom": 5621,
          "height": 32
        }
      }
    },
    {
      "node": {
        "lhId": "1-9-DIV",
        "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV,1,DIV,2,DIV,2,DIV",
        "type": "node",
        "snippet": "<div class=\"text-xs text-gray-400\">",
        "selector": "div.ui > div.py-4 > div.flex > div.text-xs",
        "nodeLabel": "Can edit",
        "explanation": "Fix any of the following:\n  Element has insufficient color contrast of 2.52 (foreground color: #a3a3a3, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
        "boundingRect": {
          "top": 5597,
          "left": 312,
          "right": 359,
          "width": 47,
          "bottom": 5613,
          "height": 16
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "relatedNode": {
              "lhId": "1-5-DIV",
              "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV",
              "type": "node",
              "snippet": "<div class=\"ui ui-light rounded-ss-xl shadow-xl pt-8 ps-8 pe-8 bg-white\" style=\"min-height: 400px; height: 100%;\">",
              "selector": "div.tab-content > div.tab-pane > div.mx-auto > div.ui",
              "nodeLabel": "Shared vaults\nInvite by email...\nEX\nErica Xu\nOwner\nSA\nSteph Ango\nCan edit\nLC\nLi…",
              "boundingRect": {
                "top": 5372,
                "left": 45,
                "right": 391,
                "width": 347,
                "bottom": 5772,
                "height": 400
              }
            }
          }
        ]
      }
    },
    {
      "node": {
        "lhId": "1-10-DIV",
        "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV,1,DIV,3,DIV,0,DIV",
        "type": "node",
        "snippet": "<div class=\"w-8 h-8 rounded-full flex items-center justify-center text-xs font-semibol…\">",
        "selector": "div.ui > div.py-4 > div.flex > div.w-8",
        "nodeLabel": "LC",
        "explanation": "Fix any of the following:\n  Element has insufficient color contrast of 2.27 (foreground color: #ffffff, background color: #22c55e, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
        "boundingRect": {
          "top": 5646,
          "left": 77,
          "right": 109,
          "width": 32,
          "bottom": 5678,
          "height": 32
        }
      }
    },
    {
      "node": {
        "lhId": "1-11-DIV",
        "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV,1,DIV,3,DIV,2,DIV",
        "type": "node",
        "snippet": "<div class=\"text-xs text-gray-400\">",
        "selector": "div.ui > div.py-4 > div.flex > div.text-xs",
        "nodeLabel": "Can edit",
        "explanation": "Fix any of the following:\n  Element has insufficient color contrast of 2.52 (foreground color: #a3a3a3, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
        "boundingRect": {
          "top": 5654,
          "left": 312,
          "right": 359,
          "width": 47,
          "bottom": 5670,
          "height": 16
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "relatedNode": {
              "lhId": "1-5-DIV",
              "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV",
              "type": "node",
              "snippet": "<div class=\"ui ui-light rounded-ss-xl shadow-xl pt-8 ps-8 pe-8 bg-white\" style=\"min-height: 400px; height: 100%;\">",
              "selector": "div.tab-content > div.tab-pane > div.mx-auto > div.ui",
              "nodeLabel": "Shared vaults\nInvite by email...\nEX\nErica Xu\nOwner\nSA\nSteph Ango\nCan edit\nLC\nLi…",
              "boundingRect": {
                "top": 5372,
                "left": 45,
                "right": 391,
                "width": 347,
                "bottom": 5772,
                "height": 400
              }
            }
          }
        ]
      }
    },
    {
      "node": {
        "lhId": "1-12-DIV",
        "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV,1,DIV,4,DIV,0,DIV",
        "type": "node",
        "snippet": "<div class=\"w-8 h-8 rounded-full flex items-center justify-center text-xs font-semibol…\">",
        "selector": "div.ui > div.py-4 > div.flex > div.w-8",
        "nodeLabel": "TG",
        "explanation": "Fix any of the following:\n  Element has insufficient color contrast of 2.76 (foreground color: #ffffff, background color: #f87171, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
        "boundingRect": {
          "top": 5703,
          "left": 77,
          "right": 109,
          "width": 32,
          "bottom": 5735,
          "height": 32
        }
      }
    },
    {
      "node": {
        "lhId": "1-13-DIV",
        "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV,1,DIV,4,DIV,2,DIV",
        "type": "node",
        "snippet": "<div class=\"text-xs text-gray-400\">",
        "selector": "div.ui > div.py-4 > div.flex > div.text-xs",
        "nodeLabel": "Can edit",
        "explanation": "Fix any of the following:\n  Element has insufficient color contrast of 2.52 (foreground color: #a3a3a3, background color: #ffffff, font size: 9.0pt (12px), font weight: normal). Expected contrast ratio of 4.5:1",
        "boundingRect": {
          "top": 5711,
          "left": 312,
          "right": 359,
          "width": 47,
          "bottom": 5727,
          "height": 16
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "relatedNode": {
              "lhId": "1-5-DIV",
              "path": "1,HTML,1,BODY,7,DIV,0,DIV,0,DIV,1,DIV,5,DIV,0,DIV,0,DIV",
              "type": "node",
              "snippet": "<div class=\"ui ui-light rounded-ss-xl shadow-xl pt-8 ps-8 pe-8 bg-white\" style=\"min-height: 400px; height: 100%;\">",
              "selector": "div.tab-content > div.tab-pane > div.mx-auto > div.ui",
              "nodeLabel": "Shared vaults\nInvite by email...\nEX\nErica Xu\nOwner\nSA\nSteph Ango\nCan edit\nLC\nLi…",
              "boundingRect": {
                "top": 5372,
                "left": 45,
                "right": 391,
                "width": 347,
                "bottom": 5772,
                "height": 400
              }
            }
          }
        ]
      }
    }
  ],
  "headings": [
    {
      "key": "node",
      "label": "Failing Elements",
      "valueType": "node",
      "subItemsHeading": {
        "key": "relatedNode",
        "valueType": "node"
      }
    }
  ],
  "debugData": {
    "tags": [
      "cat.color",
      "wcag2aa",
      "wcag143",
      "TTv5",
      "TT13.c",
      "EN-301-549",
      "EN-9.1.4.3",
      "ACT",
      "RGAAv4",
      "RGAA-3.2.1"
    ],
    "type": "debugdata",
    "impact": "serious"
  }
}

`<dl>`'s do not contain only properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements.

When definition lists are not properly marked up, screen readers may produce confusing or inaccurate output. Learn how to structure definition lists correctly.

Elements & resources
{
  "type": "table",
  "items": [
    {
      "node": {
        "lhId": "1-14-DL",
        "path": "1,HTML,1,BODY,8,DIV,0,DIV,0,DIV,1,DL",
        "type": "node",
        "snippet": "<dl class=\"col-span-2 grid grid-cols-1 gap-y-8 gap-x-12 sm:grid-cols-3\">",
        "selector": "div.py-16 > div.container > div.mx-auto > dl.col-span-2",
        "nodeLabel": "Seamless editing. Publish your notes instantly from the Obsidian app, and make …",
        "explanation": "Fix all of the following:\n  dl element has direct children that are not allowed: div > div",
        "boundingRect": {
          "top": 6088,
          "left": 21,
          "right": 391,
          "width": 371,
          "bottom": 6460,
          "height": 372
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "relatedNode": {
              "lhId": "1-15-DIV",
              "path": "1,HTML,1,BODY,8,DIV,0,DIV,0,DIV,1,DL,0,DIV,0,DIV",
              "type": "node",
              "snippet": "<div>",
              "selector": "div.mx-auto > dl.col-span-2 > div.text-lg > div",
              "nodeLabel": "div.mx-auto > dl.col-span-2 > div.text-lg > div",
              "boundingRect": {
                "top": 6088,
                "left": 21,
                "right": 45,
                "width": 24,
                "bottom": 6200,
                "height": 112
              }
            }
          },
          {
            "relatedNode": {
              "lhId": "1-16-DIV",
              "path": "1,HTML,1,BODY,8,DIV,0,DIV,0,DIV,1,DL,0,DIV,1,DIV",
              "type": "node",
              "snippet": "<div>",
              "selector": "div.mx-auto > dl.col-span-2 > div.text-lg > div",
              "nodeLabel": "Seamless editing. Publish your notes instantly from the Obsidian app, and make …",
              "boundingRect": {
                "top": 6088,
                "left": 57,
                "right": 391,
                "width": 335,
                "bottom": 6200,
                "height": 112
              }
            }
          },
          {
            "relatedNode": {
              "lhId": "1-17-DIV",
              "path": "1,HTML,1,BODY,8,DIV,0,DIV,0,DIV,1,DL,1,DIV,0,DIV",
              "type": "node",
              "snippet": "<div>",
              "selector": "div.mx-auto > dl.col-span-2 > div.text-lg > div",
              "nodeLabel": "div.mx-auto > dl.col-span-2 > div.text-lg > div",
              "boundingRect": {
                "top": 6232,
                "left": 21,
                "right": 45,
                "width": 24,
                "bottom": 6316,
                "height": 84
              }
            }
          }
        ]
      }
    }
  ],
  "headings": [
    {
      "key": "node",
      "label": "Failing Elements",
      "valueType": "node",
      "subItemsHeading": {
        "key": "relatedNode",
        "valueType": "node"
      }
    }
  ],
  "debugData": {
    "tags": [
      "cat.structure",
      "wcag2a",
      "wcag131",
      "EN-301-549",
      "EN-9.1.3.1",
      "RGAAv4",
      "RGAA-9.3.3"
    ],
    "type": "debugdata",
    "impact": "serious"
  }
}

Definition list items are not wrapped in `<dl>` elements

Definition list items (`<dt>` and `<dd>`) must be wrapped in a parent `<dl>` element to ensure that screen readers can properly announce them. Learn how to structure definition lists correctly.

Elements & resources
{
  "type": "table",
  "items": [
    {
      "node": {
        "lhId": "1-18-DT",
        "path": "1,HTML,1,BODY,8,DIV,0,DIV,0,DIV,1,DL,0,DIV,1,DIV,0,DT",
        "type": "node",
        "snippet": "<dt class=\"font-semibold inline sm:block\">",
        "selector": "dl.col-span-2 > div.text-lg > div > dt.font-semibold",
        "nodeLabel": "Seamless editing. ",
        "explanation": "Fix any of the following:\n  Description list item does not have a <dl> parent element",
        "boundingRect": {
          "top": 6091,
          "left": 57,
          "right": 210,
          "width": 153,
          "bottom": 6112,
          "height": 21
        }
      }
    },
    {
      "node": {
        "lhId": "1-19-DD",
        "path": "1,HTML,1,BODY,8,DIV,0,DIV,0,DIV,1,DL,0,DIV,1,DIV,1,DD",
        "type": "node",
        "snippet": "<dd class=\"mt-2 text-lg leading-6 text-muted inline sm:block\">",
        "selector": "dl.col-span-2 > div.text-lg > div > dd.mt-2",
        "nodeLabel": "Publish your notes instantly from the Obsidian app, and make it easy for reader…",
        "explanation": "Fix any of the following:\n  Description list item does not have a <dl> parent element",
        "boundingRect": {
          "top": 6091,
          "left": 57,
          "right": 372,
          "width": 316,
          "bottom": 6196,
          "height": 105
        }
      }
    },
    {
      "node": {
        "lhId": "1-20-DT",
        "path": "1,HTML,1,BODY,8,DIV,0,DIV,0,DIV,1,DL,1,DIV,1,DIV,0,DT",
        "type": "node",
        "snippet": "<dt class=\"font-semibold inline sm:block\">",
        "selector": "dl.col-span-2 > div.text-lg > div > dt.font-semibold",
        "nodeLabel": "Customization. ",
        "explanation": "Fix any of the following:\n  Description list item does not have a <dl> parent element",
        "boundingRect": {
          "top": 6235,
          "left": 57,
          "right": 188,
          "width": 131,
          "bottom": 6256,
          "height": 21
        }
      }
    },
    {
      "node": {
        "lhId": "1-21-DD",
        "path": "1,HTML,1,BODY,8,DIV,0,DIV,0,DIV,1,DL,1,DIV,1,DIV,1,DD",
        "type": "node",
        "snippet": "<dd class=\"mt-2 text-lg leading-6 text-muted inline sm:block\">",
        "selector": "dl.col-span-2 > div.text-lg > div > dd.mt-2",
        "nodeLabel": "Control the look and feel of your site with themes, custom domains, password pr…",
        "explanation": "Fix any of the following:\n  Description list item does not have a <dl> parent element",
        "boundingRect": {
          "top": 6235,
          "left": 57,
          "right": 388,
          "width": 332,
          "bottom": 6312,
          "height": 77
        }
      }
    },
    {
      "node": {
        "lhId": "1-22-DT",
        "path": "1,HTML,1,BODY,8,DIV,0,DIV,0,DIV,1,DL,2,DIV,1,DIV,0,DT",
        "type": "node",
        "snippet": "<dt class=\"font-semibold inline sm:block\">",
        "selector": "dl.col-span-2 > div.text-lg > div > dt.font-semibold",
        "nodeLabel": "Optimized for performance. ",
        "explanation": "Fix any of the following:\n  Description list item does not have a <dl> parent element",
        "boundingRect": {
          "top": 6351,
          "left": 57,
          "right": 294,
          "width": 237,
          "bottom": 6372,
          "height": 21
        }
      }
    },
    {
      "node": {
        "lhId": "1-23-DD",
        "path": "1,HTML,1,BODY,8,DIV,0,DIV,0,DIV,1,DL,2,DIV,1,DIV,1,DD",
        "type": "node",
        "snippet": "<dd class=\"mt-2 text-lg leading-6 text-muted inline sm:block\">",
        "selector": "dl.col-span-2 > div.text-lg > div > dd.mt-2",
        "nodeLabel": "Obsidian Publish sites are fast, mobile-friendly, and optimized for SEO, no con…",
        "explanation": "Fix any of the following:\n  Description list item does not have a <dl> parent element",
        "boundingRect": {
          "top": 6379,
          "left": 57,
          "right": 368,
          "width": 312,
          "bottom": 6456,
          "height": 77
        }
      }
    }
  ],
  "headings": [
    {
      "key": "node",
      "label": "Failing Elements",
      "valueType": "node",
      "subItemsHeading": {
        "key": "relatedNode",
        "valueType": "node"
      }
    }
  ],
  "debugData": {
    "tags": [
      "cat.structure",
      "wcag2a",
      "wcag131",
      "EN-301-549",
      "EN-9.1.3.1",
      "RGAAv4",
      "RGAA-9.3.3"
    ],
    "type": "debugdata",
    "impact": "serious"
  }
}

Document does not have a main landmark.

One main landmark helps screen reader users navigate a web page. Learn more about landmarks.

Elements & resources
{
  "type": "table",
  "items": [
    {
      "node": {
        "lhId": "1-24-HTML",
        "path": "1,HTML",
        "type": "node",
        "snippet": "<html lang=\"en\" dir=\"ltr\">",
        "selector": "html",
        "nodeLabel": "html",
        "explanation": "Fix all of the following:\n  Document does not have a main landmark",
        "boundingRect": {
          "top": 0,
          "left": 0,
          "right": 412,
          "width": 412,
          "bottom": 9015,
          "height": 9015
        }
      }
    }
  ],
  "headings": [
    {
      "key": "node",
      "label": "Failing Elements",
      "valueType": "node",
      "subItemsHeading": {
        "key": "relatedNode",
        "valueType": "node"
      }
    }
  ],
  "debugData": {
    "tags": [
      "cat.semantics",
      "best-practice"
    ],
    "type": "debugdata",
    "impact": "moderate"
  }
}

Minify CSS

Est savings of 6 KiB

Minifying CSS files can reduce network payload sizes. Learn how to minify CSS.

Elements & resources
{
  "type": "opportunity",
  "items": [
    {
      "url": "https://obsidian.md/tailwind.css?v=9d5102ea",
      "totalBytes": 34658,
      "wastedBytes": 6132,
      "wastedPercent": 17.69277689235189
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url"
    },
    {
      "key": "totalBytes",
      "label": "Transfer Size",
      "valueType": "bytes"
    },
    {
      "key": "wastedBytes",
      "label": "Est Savings",
      "valueType": "bytes"
    }
  ],
  "sortedBy": [
    "wastedBytes"
  ],
  "debugData": {
    "type": "debugdata",
    "metricSavings": {
      "FCP": 0,
      "LCP": 0
    }
  },
  "overallSavingsMs": 0,
  "overallSavingsBytes": 6132
}

Reduce unused CSS

Est savings of 18 KiB

Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. Learn how to reduce unused CSS.

Elements & resources
{
  "type": "opportunity",
  "items": [
    {
      "url": "https://obsidian.md/tailwind.css?v=9d5102ea",
      "totalBytes": 27391,
      "wastedBytes": 18476,
      "wastedPercent": 67.45305603106205
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url"
    },
    {
      "key": "totalBytes",
      "label": "Transfer Size",
      "valueType": "bytes"
    },
    {
      "key": "wastedBytes",
      "label": "Est Savings",
      "valueType": "bytes"
    }
  ],
  "sortedBy": [
    "wastedBytes"
  ],
  "debugData": {
    "type": "debugdata",
    "metricSavings": {
      "FCP": 270,
      "LCP": 300
    }
  },
  "overallSavingsMs": 300,
  "overallSavingsBytes": 18476
}

Reduce unused JavaScript

Est savings of 86 KiB

Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. Learn how to reduce unused JavaScript.

Elements & resources
{
  "type": "opportunity",
  "items": [
    {
      "url": "https://obsidian.md/pixi.min.js",
      "totalBytes": 145292,
      "wastedBytes": 88404,
      "wastedPercent": 60.845515201907055
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "URL",
      "valueType": "url",
      "subItemsHeading": {
        "key": "source",
        "valueType": "code"
      }
    },
    {
      "key": "totalBytes",
      "label": "Transfer Size",
      "valueType": "bytes",
      "subItemsHeading": {
        "key": "sourceBytes"
      }
    },
    {
      "key": "wastedBytes",
      "label": "Est Savings",
      "valueType": "bytes",
      "subItemsHeading": {
        "key": "sourceWastedBytes"
      }
    }
  ],
  "sortedBy": [
    "wastedBytes"
  ],
  "debugData": {
    "type": "debugdata",
    "metricSavings": {
      "FCP": 0,
      "LCP": 0
    }
  },
  "overallSavingsMs": 0,
  "overallSavingsBytes": 88404
}

Use efficient cache lifetimes

Est savings of 459 KiB

A long cache lifetime can speed up repeat visits to your page. Learn more about caching.

Elements & resources
{
  "type": "table",
  "items": [
    {
      "url": "https://obsidian.md/images/publish-example-dark.png",
      "totalBytes": 213853,
      "wastedBytes": 196031.91666666666,
      "cacheLifetimeMs": 600000
    },
    {
      "url": "https://obsidian.md/pixi.min.js",
      "totalBytes": 145755,
      "wastedBytes": 133608.75,
      "cacheLifetimeMs": 600000
    },
    {
      "url": "https://obsidian.md/images/home-wiki-hume.png",
      "totalBytes": 49269,
      "wastedBytes": 45163.25,
      "cacheLifetimeMs": 600000
    },
    {
      "url": "https://obsidian.md/tailwind.css?v=9d5102ea",
      "totalBytes": 34658,
      "wastedBytes": 31769.833333333332,
      "cacheLifetimeMs": 600000
    },
    {
      "url": "https://obsidian.md/images/home-spinoza.png",
      "totalBytes": 33565,
      "wastedBytes": 30767.916666666664,
      "cacheLifetimeMs": 600000
    },
    {
      "url": "https://obsidian.md/static.js?v=aa730ae0",
      "totalBytes": 15886,
      "wastedBytes": 14562.166666666666,
      "cacheLifetimeMs": 600000
    },
    {
      "url": "https://obsidian.md/graph.js?v=2",
      "totalBytes": 10219,
      "wastedBytes": 9367.416666666666,
      "cacheLifetimeMs": 600000
    },
    {
      "url": "https://obsidian.md/images/home-descartes.jpg",
      "totalBytes": 6001,
      "wastedBytes": 5500.916666666666,
      "cacheLifetimeMs": 600000
    },
    {
      "url": "https://obsidian.md/images/obsidian-logo-gradient.svg",
      "totalBytes": 2050,
      "wastedBytes": 1879.1666666666665,
      "cacheLifetimeMs": 600000
    },
    {
      "url": "https://obsidian.md/download.js",
      "totalBytes": 1313,
      "wastedBytes": 1203.5833333333333,
      "cacheLifetimeMs": 600000
    }
  ],
  "headings": [
    {
      "key": "url",
      "label": "Request",
      "valueType": "url"
    },
    {
      "key": "cacheLifetimeMs",
      "label": "Cache TTL",
      "valueType": "ms",
      "displayUnit": "duration"
    },
    {
      "key": "totalBytes",
      "label": "Transfer Size",
      "valueType": "bytes",
      "displayUnit": "kb",
      "granularity": 1
    }
  ],
  "sortedBy": [
    "wastedBytes"
  ],
  "debugData": {
    "type": "debugdata",
    "wastedBytes": 469854.9166666667
  },
  "skipSumming": [
    "cacheLifetimeMs"
  ]
}

Improve image delivery

Est savings of 273 KiB

Reducing the download time of images can improve the perceived load time of the page and LCP. Learn more about optimizing image size

Elements & resources
{
  "type": "table",
  "items": [
    {
      "url": "https://obsidian.md/images/publish-example-dark.png",
      "node": {
        "lhId": "page-0-IMG",
        "path": "1,HTML,1,BODY,8,DIV,1,DIV,0,DIV,0,DIV,0,IMG",
        "type": "node",
        "snippet": "<img src=\"/images/publish-example-dark.png\" alt=\"Example of Obsidian Help site powered by Obsidian Publish\" class=\"mb-[-12%] rounded-xl shadow-2xl ring-1 ring-white/20\" width=\"2899\" height=\"1757\">",
        "selector": "div.relative > div.container > div.w-[48rem] > img.mb-[-12%]",
        "nodeLabel": "Example of Obsidian Help site powered by Obsidian Publish",
        "boundingRect": {
          "top": 6524,
          "left": 21,
          "right": 789,
          "width": 768,
          "bottom": 6990,
          "height": 465
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (2899x1757) for its displayed dimensions (768x465). Use responsive images to reduce the image download size.",
            "wastedBytes": 198142
          }
        ]
      },
      "totalBytes": 213097,
      "wastedBytes": 198142
    },
    {
      "url": "https://obsidian.md/images/home-wiki-hume.png",
      "node": {
        "lhId": "page-1-IMG",
        "path": "1,HTML,1,BODY,6,DIV,0,DIV,0,DIV,1,DIV,2,DIV,1,DIV,0,DIV,8,DIV,0,IMG",
        "type": "node",
        "snippet": "<img src=\"/images/home-wiki-hume.png\" width=\"120\" height=\"200\" alt=\"Wikipedia page about David Hume embedded in Obsidian Canvas\" class=\"max-w-none\">",
        "selector": "div.md:h-96 > div.mock-mirror > div.bg-white > img.max-w-none",
        "nodeLabel": "Wikipedia page about David Hume embedded in Obsidian Canvas",
        "boundingRect": {
          "top": 3743,
          "left": 382,
          "right": 502,
          "width": 120,
          "bottom": 3943,
          "height": 200
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
            "wastedBytes": 23828
          },
          {
            "reason": "This image file is larger than it needs to be (300x500) for its displayed dimensions (120x200). Use responsive images to reduce the image download size.",
            "wastedBytes": 41016
          }
        ]
      },
      "totalBytes": 48828,
      "wastedBytes": 44828
    },
    {
      "url": "https://obsidian.md/images/home-spinoza.png",
      "node": {
        "lhId": "page-2-IMG",
        "path": "1,HTML,1,BODY,6,DIV,0,DIV,0,DIV,1,DIV,2,DIV,1,DIV,0,DIV,7,DIV,0,IMG",
        "type": "node",
        "snippet": "<img src=\"/images/home-spinoza.png\" width=\"68\" height=\"83\" alt=\"Image of Baruch Spinoza embedded in Obsidian Canvas\" class=\"max-w-none\">",
        "selector": "div.md:h-96 > div.mock-mirror > div.cursor-grab > img.max-w-none",
        "nodeLabel": "Image of Baruch Spinoza embedded in Obsidian Canvas",
        "boundingRect": {
          "top": 3948,
          "left": 347,
          "right": 415,
          "width": 68,
          "bottom": 4032,
          "height": 83
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "Using a modern image format (WebP, AVIF) or increasing the image compression could improve this image's download size.",
            "wastedBytes": 24748
          },
          {
            "reason": "This image file is larger than it needs to be (200x245) for its displayed dimensions (68x83). Use responsive images to reduce the image download size.",
            "wastedBytes": 29110
          }
        ]
      },
      "totalBytes": 32915,
      "wastedBytes": 31971
    },
    {
      "url": "https://obsidian.md/images/home-descartes.jpg",
      "node": {
        "lhId": "page-3-IMG",
        "path": "1,HTML,1,BODY,6,DIV,0,DIV,0,DIV,1,DIV,2,DIV,1,DIV,0,DIV,6,DIV,0,IMG",
        "type": "node",
        "snippet": "<img src=\"/images/home-descartes.jpg\" width=\"68\" height=\"83\" alt=\"Image of Rene Descartes embedded in Obsidian Canvas\" class=\"max-w-none\">",
        "selector": "div.md:h-96 > div.mock-mirror > div.cursor-grab > img.max-w-none",
        "nodeLabel": "Image of Rene Descartes embedded in Obsidian Canvas",
        "boundingRect": {
          "top": 3948,
          "left": 267,
          "right": 335,
          "width": 68,
          "bottom": 4032,
          "height": 83
        }
      },
      "subItems": {
        "type": "subitems",
        "items": [
          {
            "reason": "This image file is larger than it needs to be (200x245) for its displayed dimensions (68x83). Use responsive images to reduce the image download size.",
            "wastedBytes": 4856
          }
        ]
      },
      "totalBytes": 5491,
      "wastedBytes": 4856
    }
  ],
  "headings": [
    {
      "key": "node",
      "label": "",
      "valueType": "node"
    },
    {
      "key": "url",
      "label": "URL",
      "valueType": "url",
      "subItemsHeading": {
        "key": "reason",
        "valueType": "text"
      }
    },
    {
      "key": "totalBytes",
      "label": "Resource Size",
      "valueType": "bytes"
    },
    {
      "key": "wastedBytes",
      "label": "Est Savings",
      "valueType": "bytes",
      "subItemsHeading": {
        "key": "wastedBytes",
        "valueType": "bytes"
      }
    }
  ],
  "debugData": {
    "type": "debugdata",
    "wastedBytes": 279797
  }
}
Environment & raw metrics
{
  "finalUrl": "https://obsidian.md/",
  "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/151.0.0.0 Safari/537.36",
  "formFactor": "mobile",
  "throttlingMethod": "simulate",
  "throttling": {
    "rttMs": 150,
    "throughputKbps": 1638.4,
    "requestLatencyMs": 562.5,
    "uploadThroughputKbps": 675,
    "cpuSlowdownMultiplier": 4,
    "downloadThroughputKbps": 1474.5600000000002
  },
  "metrics": [
    {
      "id": "largest-contentful-paint",
      "unit": "millisecond",
      "value": 2591.8465
    },
    {
      "id": "cumulative-layout-shift",
      "unit": "unitless",
      "value": 0.0004326092795076125
    },
    {
      "id": "total-blocking-time",
      "unit": "millisecond",
      "value": 132.49999999999977
    },
    {
      "id": "first-contentful-paint",
      "unit": "millisecond",
      "value": 1250.8465
    },
    {
      "id": "speed-index",
      "unit": "millisecond",
      "value": 1824.134038104359
    }
  ]
}

01 / WHAT WORKS

What makes it work

The workspace demonstrates the thinking tool

The note and graph share a frame, showing both writing and connected knowledge.

One accent maintains focus

Purple actions echo the small brand mark while black, gray and white organize the rest.

02 / NEXT STEPS

Where to go next

  1. 01

    Expose platform choices on narrow screens

    The 390px capture retains macOS copy while alternate platforms are less visible; this capture uses a desktop browser identity and tests narrow layout only.

    Keep a visible platform selector on narrow layouts and separately test download routing with actual iOS and Android user agents; width alone does not identify a device.

03 / DESIGN LANGUAGE

A design system you can reuse

Colors

Background

#0f0f0f

Text

#eeeeee

Typography

Display font
Inter
Body font
Inter
Heading / body
60px / 16px

Spacing & shape

Section gap
Component inset
Card radius
Button radius
8px

Parameters are element samples. Empty values are unknown, and individual samples are not site-wide rules.

04 / EVIDENCE

The detail behind the report

Values come from one capture. Fonts, radii and spacing are element samples, not a universal site-wide specification. Empty values are unknown. HTML bytes are source size, not compressed transfer size; script counts are DOM tags, not network requests.

Conversion1 observations

Expose platform choices on narrow screens

The 390px capture retains macOS copy while alternate platforms are less visible; this capture uses a desktop browser identity and tests narrow layout only.

Keep a visible platform selector on narrow layouts and separately test download routing with actual iOS and Android user agents; width alone does not identify a device.

mobile.png: macOS download label at 390px
Launch1 observations

No Content-Security-Policy

A CSP is the standard way to limit script sources. Vibe-coded pages often load anything, including injected scripts.

Start with a report-only CSP, then default-src 'self' and an explicit script-src.

content-security-policy missing
Link preview

05 / MAKE IT HAPPEN

Give your AI a clear next step

Use the improvement prompt for this page, or the design prompt to borrow its visual language. “Recreate” includes references and implementation steps. Paste either into your coding assistant.

Preview full instructions
Improve the current project using the 2026-09-05T03:24:48.360Z snapshot of https://obsidian.md. First identify changes since capture; do not revert newer behavior to the old snapshot.

Design baseline
Sharpen your thinking and a short privacy statement lead to a primary download action. The product visual combines sidebar, note, graph and phone, followed by local files, plugins, sync and publishing. Mobile preserves the headline and download while cropping the desktop interface. Adapt the dark tonal hierarchy and single accent color.
{
  "colors": [
    {
      "role": "bg",
      "hex": "#0f0f0f"
    },
    {
      "role": "ink",
      "hex": "#eeeeee"
    }
  ],
  "fonts": {
    "body": "Inter",
    "display": "Inter",
    "stack": [
      "ui-sans-serif"
    ]
  },
  "radius": {
    "button": "8px",
    "card": "",
    "field": "0px"
  },
  "space": {
    "section": "",
    "card": ""
  },
  "type": {
    "h1": "60px",
    "body": "16px",
    "weight": "600",
    "lineHeight": "24px",
    "letterSpacing": "-1.2px"
  }
}
Values come from one capture. Fonts, radii and spacing are element samples, not a universal site-wide specification. Empty values are unknown. HTML bytes are source size, not compressed transfer size; script counts are DOM tags, not network requests.

Actions
1. Expose platform choices on narrow screens
Keep a visible platform selector on narrow layouts and separately test download routing with actual iOS and Android user agents; width alone does not identify a device.
Evidence: mobile.png: macOS download label at 390px

2. No Content-Security-Policy
Start with a report-only CSP, then default-src 'self' and an explicit script-src.
Evidence: content-security-policy missing

Acceptance
- Check text, layout and the main action “Get Obsidian for macOS” at 1440×900 and 390×844.
- Preserve branding, authentication and business behavior. A screenshot does not prove broken interaction.
- Change only evidence-backed issues. Validate security headers against existing resources and authentication in report-only mode where supported.
- Compare before/after screenshots and run relevant functional tests. Do not claim untested behavior passed.