Learn

Guides, References & Deep-Dives

Technical documentation and reference articles across Ciphera products.

139 articles

Pulseaccessibility

Accesskey Values Are Unique

Ensure no two elements share the same accesskey value.

Read
Pulseaccessibility

All Headings Have Content

Ensure heading elements are not empty.

Read
Pulsebest-practices

Allow Users to Paste into Input Fields

Do not block paste on input fields — it harms usability, accessibility, and security.

Read
Pulseaccessibility

ARIA Attributes Are Valid and Not Misspelled

Ensure all aria-* attributes are valid and correctly spelled.

Read
Pulseaccessibility

ARIA Attributes Have Valid Values

Ensure every ARIA attribute has a valid value for its type.

Read
Pulseaccessibility

ARIA Attributes Match Element Roles

Ensure ARIA attributes are conditionally valid for the element's role.

Read
Pulseaccessibility

ARIA Attributes Match Their Roles

Ensure every ARIA attribute is allowed on the element's role.

Read
Pulseaccessibility

ARIA IDs Are Unique

Ensure IDs used in ARIA attributes are unique in the document.

Read
Pulseaccessibility

ARIA Input Fields Have Accessible Names

Ensure every ARIA input field has a discernible accessible name.

Read
Pulseaccessibility

ARIA Meter Elements Have Accessible Names

Ensure elements with role=meter have accessible names.

Read
Pulseaccessibility

ARIA Progressbar Elements Have Accessible Names

Ensure elements with role=progressbar have accessible names.

Read
Pulseaccessibility

ARIA Role Values Are Valid

Ensure all role attribute values are valid WAI-ARIA roles.

Read
Pulseaccessibility

ARIA Roles Are in Required Parent Elements

Ensure elements with ARIA roles are nested inside required parent roles.

Read
Pulseaccessibility

ARIA Roles Have Required Children

Ensure elements with ARIA roles contain the required child elements.

Read
Pulseaccessibility

ARIA Roles Used on Compatible Elements

Ensure ARIA roles are only applied to elements that support them.

Read
Pulseaccessibility

ARIA Toggle Fields Have Accessible Names

Ensure ARIA toggle fields like checkboxes and switches have accessible names.

Read
Pulseaccessibility

ARIA Tooltip Elements Have Accessible Names

Ensure elements with role=tooltip have accessible names.

Read
Pulseaccessibility

ARIA Treeitem Elements Have Accessible Names

Ensure elements with role=treeitem have accessible names.

Read
Pulseaccessibility

aria-hidden Is Not on the Body

Ensure aria-hidden is not present on the document body.

Read
Pulsebest-practices

Avoid Deprecated APIs

Stop using deprecated web platform APIs before browsers remove them.

Read
Pulseperformance

Avoid Enormous Network Payloads

Keep total page weight low to ensure fast load times on all connection speeds.

Read
Pulseperformance

Avoid Large Layout Shifts

Prevent unexpected content movement to improve visual stability and Cumulative Layout Shift (CLS).

Read
Pulseperformance

Avoid Long Main-Thread Tasks

Break up tasks longer than 50 ms so the browser can respond to user input without delay.

Read
Pulseperformance

Avoid Multiple Page Redirects

Eliminate unnecessary redirects to reduce time to first byte and speed up page load.

Read
Pulseperformance

Avoid Non-Composited Animations

Use compositor-friendly CSS properties for animations to prevent jank and keep frame rates smooth.

Read
Pulsebest-practices

Avoid Requesting Geolocation on Page Load

Do not request geolocation permission automatically — wait until the user takes a relevant action.

Read
Pulsebest-practices

Avoid Requesting Notification Permission on Page Load

Do not prompt users for notification permission until they express interest in receiving updates.

Read
Pulseperformance

Back/Forward Cache Restoration

Ensure your pages are eligible for the browser's back/forward cache to enable instant navigation.

Read
Pulseaccessibility

Background and Foreground Colors Have Sufficient Contrast

Ensure text has enough contrast against its background to be readable.

Read
Pulseaccessibility

Buttons Have an Accessible Name

Ensure every button element has a discernible accessible name.

Read
Pulseaccessibility

Command Elements Have Accessible Names

Ensure elements with ARIA command roles have accessible names.

Read
Pulseperformance

Cumulative Layout Shift (CLS)

What CLS measures, how Lighthouse scores it, and how to improve it.

Read
Pulseaccessibility

Custom Controls Have ARIA Roles

Ensure custom interactive controls have appropriate ARIA roles.

Read
Pulseaccessibility

Custom Controls Have Associated Labels

Ensure custom interactive controls have accessible labels.

Read
Pulseaccessibility

Definition Items Are Wrapped in dl Elements

Ensure dt and dd elements are contained within a dl.

Read
Pulseaccessibility

Definition Lists Are Properly Structured

Ensure dl elements contain only dt, dd, div, template, or script groups.

Read
Pulsebest-practices

Detected JavaScript Libraries

See which JavaScript libraries and frameworks are running on your page.

Read
Pulseaccessibility

Dialog Elements Have Accessible Names

Ensure elements with role=dialog or role=alertdialog have accessible names.

Read
Pulsebest-practices

Display Images with Correct Aspect Ratio

Ensure rendered images match their natural aspect ratio to prevent visual distortion.

Read
Pulseaccessibility

Document Has a Main Landmark

Ensure the page contains exactly one main landmark region.

Read
Pulseseo

Document Has a Meta Description

Add a concise meta description to improve how your page appears in search results.

Read
Pulseaccessibility

Document Has a Title Element

Ensure the HTML document has a non-empty title element.

Read
Pulseseo

Document Has a Valid hreflang

Use correct hreflang annotations to serve the right language version to users in different regions.

Read
Pulseseo

Document Has a Valid rel=canonical

Set a canonical URL to prevent duplicate content issues and consolidate ranking signals.

Read
Pulseperformance

Document Request Latency

Checks how long the server takes to respond with the main HTML document and flags slow responses.

Read
Pulseperformance

Duplicated JavaScript

Detects JavaScript modules that are included more than once in your bundles, wasting bytes and parse time.

Read
Pulseaccessibility

Elements Use Only Permitted ARIA Attributes

Ensure elements don't use ARIA attributes that are prohibited for their role.

Read
Pulsebest-practices

Ensure CSP Is Effective Against XSS Attacks

Deploy a Content Security Policy that blocks inline scripts and untrusted sources to prevent XSS.

Read
Pulsebest-practices

Ensure Proper Origin Isolation with COOP

Set the Cross-Origin-Opener-Policy header to isolate your browsing context from cross-origin windows.

Read
Pulseperformance

First Contentful Paint (FCP)

What FCP measures, how Lighthouse scores it, and how to improve it.

Read
Pulseaccessibility

Focus Is Directed to New Content

Ensure focus moves to new content when it appears on the page.

Read
Pulseperformance

Font Display

Checks whether custom fonts use font-display to avoid invisible text during loading.

Read
Pulseperformance

Forced Reflow

Detects JavaScript that forces the browser to recalculate layout synchronously, causing jank and long tasks.

Read
Pulseaccessibility

Form Elements Have Associated Labels

Ensure every form element has an associated label.

Read
Pulseaccessibility

Frames Have a Title

Ensure iframe and frame elements have a descriptive title attribute.

Read
Pulseaccessibility

Headings Appear in Sequential Order

Ensure heading levels do not skip (e.g., h1 to h3).

Read
Pulseaccessibility

Hidden Elements Don't Contain Focusable Content

Ensure aria-hidden elements don't contain focusable interactive content.

Read
Pulseaccessibility

HTML Element Has a lang Attribute

Ensure the html element has a lang attribute.

Read
Pulseaccessibility

HTML lang and xml:lang Match

Ensure lang and xml:lang attributes on the html element have the same value.

Read
Pulseaccessibility

HTML lang Attribute Is Valid

Ensure the html lang attribute uses a valid BCP 47 language tag.

Read
Pulseaccessibility

HTML5 Landmark Elements Improve Navigation

Use landmark elements to define page regions for assistive technology.

Read
Pulseaccessibility

Identical Links Have the Same Purpose

Ensure links with the same text all point to the same destination.

Read
Pulseaccessibility

Image Elements Have Alt Attributes

Ensure every image element has an alt attribute.

Read
Pulseperformance

Image Elements Need Explicit Width and Height

Set width and height attributes on images to prevent layout shifts when images load.

Read
Pulseaccessibility

Image Inputs Have Alt Text

Ensure input elements with type=image have alt attributes.

Read
Pulseaccessibility

Images Don't Have Redundant Alt Text

Ensure image alt text doesn't duplicate surrounding text content.

Read
Pulseperformance

Improve Image Delivery

Flags images that use outdated formats, are not properly sized, or lack compression.

Read
Pulseperformance

INP Breakdown

Breaks down the phases of Interaction to Next Paint to show where interaction delays originate.

Read
Pulseaccessibility

Input Buttons Have Discernible Text

Ensure input elements with type=button, submit, or reset have accessible names.

Read
Pulseperformance

Interaction to Next Paint (INP)

What INP measures, how Lighthouse scores it, and how to improve it.

Read
Pulseaccessibility

Interactive Controls Are Keyboard Focusable

Ensure all interactive controls can receive keyboard focus.

Read
Pulseaccessibility

Interactive Elements Indicate Purpose and State

Ensure interactive elements visually communicate their function and current state.

Read
Pulseperformance

JavaScript Execution Time

Reduce the time the browser spends parsing, compiling, and executing JavaScript to improve responsiveness.

Read
Pulseaccessibility

lang Attributes Have Valid Values

Ensure all elements with a lang attribute use valid BCP 47 tags.

Read
Pulseperformance

Largest Contentful Paint (LCP)

What LCP measures, how Lighthouse scores it, and how to improve it.

Read
Pulseperformance

Layout Shift Culprits

Identifies the DOM elements responsible for unexpected layout shifts during page load.

Read
Pulseperformance

LCP Breakdown

Decomposes Largest Contentful Paint into sub-parts to pinpoint the slowest phase of your LCP element's load.

Read
Pulseperformance

LCP Request Discovery

Checks whether the browser can discover the LCP resource early enough to start downloading it without delay.

Read
Pulseperformance

Legacy JavaScript

Flags JavaScript bundles that ship polyfills and transpiled syntax unnecessary for modern browsers.

Read
Pulseaccessibility

Links Are Distinguishable Without Color

Ensure links within text blocks are identifiable by more than color alone.

Read
Pulseaccessibility

Links Have a Discernible Name

Ensure every anchor element has a discernible accessible name.

Read
Pulseseo

Links Have Descriptive Text

Use meaningful anchor text so users and search engines understand where each link leads.

Read
Pulseaccessibility

List Items Are in Proper Parent Elements

Ensure li elements are contained within ul, ol, or menu.

Read
Pulseaccessibility

Lists Contain Only Proper Elements

Ensure ul and ol elements only contain li, script, or template children.

Read
Pulseperformance

Max Potential First Input Delay (Max Potential FID)

What Max Potential FID measures, how Lighthouse scores it, and how to improve it.

Read
Pulseperformance

Minify CSS

Remove unnecessary characters from CSS files to reduce network payload and speed up page load.

Read
Pulseperformance

Minify JavaScript

Remove unnecessary characters from JavaScript files to reduce transfer size and improve load performance.

Read
Pulseperformance

Minimize Main-Thread Work

Reduce the total amount of work the browser's main thread performs during page load to improve responsiveness.

Read
Pulsebest-practices

Mitigate Clickjacking with XFO or CSP

Prevent your page from being embedded in malicious iframes by setting X-Frame-Options or CSP frame-ancestors.

Read
Pulsebest-practices

Mitigate DOM-Based XSS with Trusted Types

Enforce Trusted Types to prevent DOM-based cross-site scripting attacks.

Read
Pulseperformance

Modern HTTP

Checks whether your server uses HTTP/2 or HTTP/3 to deliver resources efficiently.

Read
Pulseperformance

Network Dependency Tree

Visualizes the critical request chain to identify resources that block page rendering.

Read
Pulsebest-practices

No Browser Errors in the Console

Ensure your page loads without logging errors to the browser console.

Read
Pulseaccessibility

No Deprecated ARIA Roles

Ensure elements don't use ARIA roles that have been deprecated.

Read
Pulseaccessibility

No Element Has tabindex Greater Than Zero

Ensure no element uses a positive tabindex value.

Read
Pulseaccessibility

No Form Fields Have Multiple Labels

Ensure form fields are not associated with more than one label element.

Read
Pulseaccessibility

No Meta Refresh Redirect

Ensure the page does not use a timed meta refresh redirect.

Read
Pulseaccessibility

Object Elements Have Alternate Text

Ensure object elements have text alternatives for accessibility.

Read
Pulseaccessibility

Offscreen Content Is Hidden from Assistive Technology

Ensure content moved offscreen is invisible to screen readers.

Read
Pulseperformance

Optimize DOM Size

Flags pages with an excessively large DOM tree that slows rendering, layout calculations, and memory usage.

Read
Pulseperformance

Optimize Viewport for Mobile

Checks whether your page has a properly configured viewport meta tag for mobile devices.

Read
Pulseaccessibility

Page Has a Logical Tab Order

Ensure the tab order follows the visual layout of the page.

Read
Pulseaccessibility

Page Has a Skip Link or Landmark

Ensure users can bypass repeated navigation blocks.

Read
Pulseseo

Page Has Successful HTTP Status Code

Verify your page returns a 2xx HTTP status code so search engines can index it.

Read
Pulsebest-practices

Page Has the HTML Doctype

Include a DOCTYPE declaration to prevent the browser from falling into quirks mode.

Read
Pulsebest-practices

Page Has Valid Source Maps

Verify that all JavaScript source maps are valid and correctly linked.

Read
Pulseseo

Page Isn't Blocked from Indexing

Ensure search engines can crawl and index your page by removing blocking directives.

Read
Pulsebest-practices

Properly Defines Charset

Declare a character encoding early in your HTML to ensure text renders correctly.

Read
Pulsebest-practices

Redirects HTTP Traffic to HTTPS

Automatically redirect all HTTP requests to HTTPS to ensure encrypted connections.

Read
Pulseperformance

Reduce Server Response Time (TTFB)

Minimize Time to First Byte so the browser can start rendering the page sooner.

Read
Pulseperformance

Reduce Unused CSS

Remove CSS rules that are never applied to reduce render-blocking payload and speed up first paint.

Read
Pulseperformance

Reduce Unused JavaScript

Remove JavaScript that is downloaded but never executed to cut load time and reduce main-thread work.

Read
Pulseperformance

Render Blocking Requests

Identifies CSS and JavaScript resources that block the browser from rendering the page.

Read
Pulseseo

robots.txt Is Valid

Ensure your robots.txt file is correctly formatted so search engines can parse your crawl directives.

Read
Pulseaccessibility

role=text Elements Don't Have Focusable Children

Ensure elements with role=text contain no focusable descendants.

Read
Pulseaccessibility

Roles Have All Required ARIA Attributes

Ensure elements with ARIA roles include all required attributes for that role.

Read
Pulseaccessibility

Select Elements Have Associated Labels

Ensure every select element has an associated accessible label.

Read
Pulsebest-practices

Serve Images with Appropriate Resolution

Deliver images sized for the user's viewport to avoid wasting bandwidth on oversized files.

Read
Pulseaccessibility

Skip Links Are Focusable

Ensure skip navigation links are focusable and become visible on focus.

Read
Pulseperformance

Speed Index (SI)

What SI measures, how Lighthouse scores it, and how to improve it.

Read
Pulseseo

Structured Data Is Valid

Add valid structured data to help search engines understand your content and enable rich results.

Read
Pulseaccessibility

Table Cells Have Headers

Ensure every non-empty table data cell has an associated header.

Read
Pulseaccessibility

Table Cells Reference Headers in Same Table

Ensure td headers attributes point to th elements in the same table.

Read
Pulseaccessibility

Table Headers Have Data Cells

Ensure every th element in a table has associated data cells.

Read
Pulseaccessibility

Tables Have Unique Summary and Caption

Ensure tables do not have identical summary and caption attributes.

Read
Pulseaccessibility

Tables Use Caption Instead of Colspan Cells

Ensure tables use the caption element rather than cells spanning all columns as a title.

Read
Pulseperformance

Third-Party Impact

Measures the performance cost of third-party scripts loaded on your page.

Read
Pulseperformance

Time to Interactive (TTI)

What TTI measures, how Lighthouse scores it, and how to improve it.

Read
Pulseperformance

Total Blocking Time (TBT)

What TBT measures, how Lighthouse scores it, and how to improve it.

Read
Pulseaccessibility

Touch Targets Have Sufficient Size

Ensure interactive elements are large enough to tap accurately.

Read
Pulsebest-practices

Use a Strong HSTS Policy

Enable HTTP Strict Transport Security to force browsers to always connect over HTTPS.

Read
Pulseperformance

Use Efficient Cache Lifetimes

Checks whether your static assets use long cache lifetimes so repeat visitors load pages faster.

Read
Pulseaccessibility

User Focus Is Not Trapped in a Region

Ensure keyboard users can always move focus away from any element.

Read
Pulseperformance

User Timing Marks and Measures

Use the User Timing API to instrument custom performance milestones and measure what matters to your app.

Read
Pulsebest-practices

Uses HTTPS

Serve your site over HTTPS to protect user data and meet modern browser requirements.

Read
Pulseaccessibility

Videos Have Captions

Ensure video elements include a track element with captions.

Read
Pulseaccessibility

Viewport Does Not Disable Zoom

Ensure the viewport meta tag allows users to zoom in.

Read
Pulseaccessibility

Visible Labels Match Accessible Names

Ensure an element's visible text is included in its accessible name.

Read
Pulseaccessibility

Visual Order Follows DOM Order

Ensure the visual presentation order matches the DOM source order.

Read