Accessibility
· 12 checks — Landmarks, headings, alt text, forms, and link quality rolled into one auditable list.DLandmark StructureActionNo landmarksFIX
No landmarks detected
Screen reader users have no way to navigate by region.
Screen reader users cannot quickly navigate to the primary content. Wrap your main content in <main>.
Without a <main> landmark, screen-reader users can't skip past the navigation to the page content — every page starts with re-reading the menu.
Learn more ▾ ▴
The <main> element marks the page's primary content area. Assistive tech offers a 'jump to main' shortcut — but only if <main> exists. Without it, every page navigation forces re-reading the header. Wrap your primary content in a single <main>.
Source: WAI-ARIA / WCAG 2.4.1
Add a skip link as the first focusable element so keyboard users can bypass repeated navigation.
Without a skip-nav link, keyboard users tab through every nav item before reaching content — every page, every visit.
Learn more ▾ ▴
WCAG 2.4.1 (Bypass Blocks) requires a mechanism to skip past repeated content. The standard implementation is a 'Skip to main content' link that's the first focusable element, visually hidden until focused. Three lines of HTML + four of CSS.
Source: WCAG 2.1 SC 2.4.1
D404 Error PageActionHTTP 404, custom pageFIX
DDark Mode SupportActionTheme color onlyFIX
Detection limited to meta tags and inline styles.
DPrint StylesheetActionNo print stylesFIX
BHeading HierarchyNo headingsREVIEW
No headings found
Headings create the document outline for screen reader navigation.
Headings (H1-H6) create the document outline for screen reader navigation.
A page with zero headings is unnavigable by assistive tech and reads as one undifferentiated wall of text.
Learn more ▾ ▴
Screen reader users navigate by jumping between H1-H6 elements. A page with no headings has no skip targets — users have to read every word linearly. Adding a heading hierarchy (one H1, then H2 sections, optional H3 subsections) makes the page skimmable for both AT and human readers.
Source: WCAG 1.3.1 / W3C WAI
BFavicon & Branding6 icon(s) detectedREVIEW
BWeb ManifestValid manifestREVIEW
BLighthouse Accessibility AuditsScore 83/100 — 4 failing, 17 passedREVIEW
Accessibility
These checks highlight opportunities to improve the accessibility of your web app. Automatic detection can only detect a subset of issues and does not guarantee the accessibility of your web app, so manual testing is also encouraged.
ARIA
Using ARIA attributes in roles where they are prohibited can mean that important information is not communicated to users of assistive technologies. Learn more about prohibited ARIA roles.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Discussion Solved div.col-span-full > div.conversation-item-meta > div.relative > div.pixel-corners |
Discussion Solved div.col-span-full > div.conversation-item-meta > div.relative > div.pixel-corners |
These are opportunities to improve the usage of ARIA in your application which may enhance the experience for users of assistive technology, like a screen reader.
Contrast
Low-contrast text is difficult or impossible for many users to read. Learn how to provide sufficient color contrast.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
10 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
16 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
8 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
3 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
16 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
43 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
25 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
15 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
18 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
35 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
12 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
14 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
30 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
16 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
27 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
13 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
43 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
23 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
7 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
13 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
12 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
64 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
11 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
10 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
5 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
10 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
18 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
17 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
22 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
11 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
10 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
16 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
8 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
3 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
16 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
43 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
25 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
15 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
18 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
35 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
12 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
14 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
30 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
16 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
27 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
13 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
43 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
23 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
7 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
13 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
12 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
64 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
11 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
10 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
5 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
10 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
18 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
17 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
22 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
11 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
10 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
16 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
8 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
3 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
16 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
43 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
25 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
15 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
18 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
35 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
12 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
14 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
30 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
16 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
27 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
13 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
43 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
23 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
7 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
13 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
12 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
64 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
11 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
10 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
5 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
10 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
18 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
17 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
22 Episodes div.main > footer.border-on-lifted-subtle > ul.flex > li.text-text-tertiary |
Start Learning div.panel > div.flex > div.flex > a.btn |
While I don't code in PHP for my current job, I always check out Laracasts for … div.grid > div.panel > div.flex > blockquote.text-sm |
Eric Peterson div.mt-auto > div > cite > span.font-semibold |
Laracasts has made me a better developer. Not just a Laravel developer, but a b… div.grid > div.panel > div.flex > blockquote.text-sm |
Anurag div.mt-auto > div > cite > span.font-semibold |
I'm not just a new Laravel user, I'm a new web developer in general. Let me tel… div.grid > div.panel > div.flex > blockquote.text-sm |
Stephen Finney div.mt-auto > div > cite > span.font-semibold |
If Heisenberg cooked screencasts, this would be his cookbook. div.grid > div.panel > div.flex > blockquote.text-sm |
Kyle Ferguson div.mt-auto > div > cite > span.font-semibold |
Jeffrey's ten minutes of pedagogic instructions has taken me to the next level … div.grid > div.panel > div.flex > blockquote.text-sm |
Rocky Montana div.mt-auto > div > cite > span.font-semibold |
Excellent video, excellent examples... I've nothing to say except very well don… div.grid > div.panel > div.flex > blockquote.text-sm |
Caporal Dead div.mt-auto > div > cite > span.font-semibold |
Learning has never been this fun. Jeffrey is by far the best teacher I've ever … div.grid > div.panel > div.flex > blockquote.text-sm |
Damilola Ogunmoye div.mt-auto > div > cite > span.font-semibold |
All the knowledge that Jeffrey shares with us is simply invaluable! div.grid > div.panel > div.flex > blockquote.text-sm |
Sahib Alejandro div.mt-auto > div > cite > span.font-semibold |
Jeffery Way IS that ternary machine that can run any algorithm. You learn to ju… div.grid > div.panel > div.flex > blockquote.text-sm |
Dustin Woodard div.mt-auto > div > cite > span.font-semibold |
I've always preferred learning programming languages with online courses and vi… div.grid > div.panel > div.flex > blockquote.text-sm |
Nicolás Múnera div.mt-auto > div > cite > span.font-semibold |
Subscribe div.newsletter-form > form#newsletter-form > div.bg-fg-lifted > button.btn |
These are opportunities to improve the legibility of your content.
Navigation
Properly ordered headings that do not skip levels convey the semantic structure of the page, making it easier to navigate and understand when using assistive technologies. Learn more about heading order.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
Learn section.section > div.[&_a:hover]:text-current-taxonomy > div.@breakpoint-md:flex-row > h5.@breakpoint-md:mb-0 |
These are opportunities to improve keyboard navigation in your application.
Names and labels
Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute. Learn more about the `alt` attribute.
Performance issues directly impact user engagement and conversion rates.
| Failing Elements |
|---|
div.relative > section.section > div.mx-auto > img.lazy div.relative > section.section > div.mx-auto > img.lazy |
These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, like a screen reader.