HTML Page Auditor (Lighthouse-style)

Audit a web page’s HTML on 136 checks in seven categories (SEO, accessibility, best practices, performance, security, privacy and mobile), with Lighthouse-style 0–100 scores, a fix snippet for each problem, and real layout-shift and LCP measurement for pages on the same site. Runs in your browser.

Analyzer Web Dev Updated Oct 3, 2026
Learn how this works
How to Use
  1. Paste a page’s full HTML into the box (View Source, select all, copy), press Load .html, or type a same-origin URL such as /tools/json-formatter and press Fetch & audit. The sample page is audited as soon as the tool loads, and again 350 ms after each edit.
  2. Read the readouts under the report (overall score, failures, warnings and how many checks applied) and the seven score rings: SEO, Accessibility, Best Practices, Performance, Security, Privacy and Mobile.
  3. Work through the red ✗ failures first, then the amber ▲ warnings. Each one says what is wrong, shows a ready-to-paste fix with a Copy button, and you can click an example tag to jump to it in the source.
  4. For a page on this site, press Load & measure shift to load it in a hidden frame and measure real layout shift (CLS), LCP, page weight and tap-target sizes.
  5. Check Show Work below for every check with its measured value, its rule and the points it earned, then press Copy report or Download to keep the results.
Input
Audit report
Paste some HTML above to audit it.
Overall score
—
Failed
—
Warnings
—
Checks applied
—

Worked Example

The sample page. The box opens with a 16-line page that has a title, a viewport tag and one <h1>, but no meta description, an image with no alt and a search box with no label. 85 of the 94 checks that run apply to it. Those three gaps are the 3 failures, each worth 3 points, alongside 25 warnings. SEO earns 22 of 28 points, so 22 ÷ 28 × 100 = 78.6, shown as 79. Accessibility earns 20.5 of 29 (71), and the overall score is the average of the seven rings, (79 + 71 + 85 + 84 + 90 + 94 + 85) ÷ 7 = 84.

Fixing the three failures. Add <meta name="description" content="Acme widgets are built to last.">, give the image alt="The Acme widget" and add <label for="q">Search</label>. SEO becomes 26 ÷ 29 × 100 = 90: the description adds a 1-point width check, which it passes. Accessibility becomes 27.5 ÷ 30 × 100 = 92, and the overall score rises from 84 to 89 with 0 failures.

The common mistake: counting title characters instead of pixels. Google cuts titles by width, not length, so the auditor estimates the width at 20 px and passes it at 600 px or less. WIDGET WAREHOUSE MEGA SALE: NEW MODELS IN STOCK NOW is only 51 characters but about 639 px, a warning, while the 55-character little lists of lilies: illinois field notes, all filed is about 440 px and passes. The sample’s 30-character title is about 315 px.

Show Work

Paste some HTML above to see every check with its measured value, its rule and the points it earned.

Formulas

Category score
Σ(weight × credit) ÷ Σ weight × 100; credit: pass 1, warning 0.5, fail 0; n/a left out
Overall score
(SEO + Accessibility + Best Practices + Performance + Security + Privacy + Mobile) ÷ 7
Title width
Σ character factor × 20 px ≤ 600 px; factor 0.30 for i l j I . , : ; ' ! | ` and space, 0.92 for m w M W @, 0.68 other capitals, 0.52 the rest
Description width
Σ character factor × 14 px ≤ 960 px
Contrast ratio
(L_light + 0.05) ÷ (L_dark + 0.05) ≥ 4.5 : 1
Layout shift (live)
CLS ≤ 0.1 good, ≤ 0.25 needs work; LCP ≤ 2,500 ms good, ≤ 4,000 ms needs work

What This Audits, and What It Can’t

This tool runs the kind of checks Google’s Lighthouse runs, but on the parts of a page that live in the markup itself. You give it the HTML; it parses that HTML into an inert document with the browser’s built-in DOMParser — no scripts run, no images or stylesheets are fetched, nothing is rendered — and then it inspects the structure. From that it scores SEO (29 checks: a title, a meta description, a viewport tag, a language, exactly one h1, a canonical link, and is it actually indexable rather than noindex?), Accessibility (31: do images have alt text, do form fields have labels, do buttons and links have an accessible name, are heading levels sane, is zoom left enabled?), Best Practices (19: a doctype and a charset, deprecated tags, insecure http:// resources, inline event handlers), a structural Performance pass (20), Security (19: Subresource Integrity, iframe sandboxing, insecure forms, CSP, risky JavaScript sinks), Privacy (11: third-party origins, known trackers, third-party fonts and embeds) and Mobile (7). That is 136 checks; each page runs only those that can apply to it.

It is honest about its limits: it cannot produce a timed performance score from pasted text, and it cannot reach out and audit an arbitrary live URL. Measuring Largest Contentful Paint, Cumulative Layout Shift, and Total Blocking Time requires loading the page in a real browser. And a page running in your browser is forbidden by the same-origin policy from reading another website’s HTML, so “type any URL” isn’t possible without a server proxy — which would break the promise that nothing you paste ever leaves your device. So you paste the source (or fetch a page on this same domain), and the Performance ring scores the structural signals that genuinely live in the markup: render-blocking scripts in the head, images missing width and height (a classic layout-shift cause), the number of render-blocking stylesheets, and overall document weight. For pages on this site, Load & measure shift then loads the page in a sandboxed frame and captures the real CLS, LCP, page weight, request count, blocking time, and the exact elements that shifted.

From Lighthouse to Core Web Vitals

Google released Lighthouse as an open-source project in 2016, first to audit progressive web apps, and built it into the Chrome DevTools Audits panel in 2017. Its 0–100 scores and the green, orange and red bands used here (90 and above, 50 to 89, below 50) made page quality something a team could track like a test result.

In May 2020 Google named three Core Web Vitals — Largest Contentful Paint, First Input Delay and Cumulative Layout Shift — with “good” thresholds of 2.5 seconds, 100 ms and 0.1, and made them part of search ranking in the 2021 page experience update. Interaction to Next Paint replaced First Input Delay in March 2024. The 4.5:1 contrast rule comes from WCAG 2.0, published by the W3C in December 2008.

About This Tool

Every category is a weighted bundle of individual audits. A pass earns the audit’s full weight, a warning earns half, a failure earns nothing, and an audit that doesn’t apply — the image-alt check on a page with no images, say — is dropped from the maths entirely so it can’t unfairly drag a score down. The audit list sorts failures and warnings to the top, each with what’s wrong and a fix you can copy, so the report becomes a punch-list you can work straight down. Fix an item, edit the HTML, and the scores update. Show Work lists every check with the value it measured, so you can see exactly why a ring is not green.

The HTML you paste is parsed in your browser and never uploaded. For the background on what each check means, read How Web Page Auditing Works.

Related tools: Meta Tag & Open Graph Generator, Schema / JSON-LD Generator, and robots.txt Generator.

Frequently Asked Questions

Can it audit any live URL like Google Lighthouse?

Not any URL. A page running in your browser cannot read another website’s HTML, because the same-origin (CORS) policy blocks it. So you paste the HTML, load a saved .html file, or fetch a page on the same site as this tool, such as /tools/json-formatter. For other sites, copy the page source and paste it. Nothing you paste leaves your browser.

Why is the Performance ring not a real speed score?

Timed metrics need the page to be loaded and rendered, which a pasted string never is. The Performance ring scores what the markup shows: render-blocking scripts, images without width and height, stylesheet count, DOM size (pass at 1,500 elements or fewer) and document weight (pass under 120 KB). For real numbers, Load & measure shift loads a same-origin page and rates CLS good at 0.1 or less and poor above 0.25, and LCP good at 2,500 ms or less and poor above 4,000 ms.

How are the scores calculated?

Each check has a weight of 1 to 3 points. A pass earns all of it, a warning half and a failure none, and checks that do not apply are left out. The sample page earns 22 of 28 SEO points, and 22 ÷ 28 × 100 = 78.6, shown as 79. The overall score is the plain average of the seven rings: (79 + 71 + 85 + 84 + 90 + 94 + 85) ÷ 7 = 84. Colours follow the Lighthouse bands: green from 90, orange from 50 to 89, red below 50.

Is the pasted markup run or fetched?

No. The HTML is parsed with the browser’s DOMParser into an inert document that is never attached to the page: scripts do not run, and images and stylesheets are not downloaded. Only the separate Load & measure shift button loads a page for real, and only one on this site, inside a sandboxed frame.

Why does disabling zoom cost so many points?

Because it locks out people who need to enlarge text, so it fails two checks. Adding maximum-scale=1 to the sample’s viewport fails “Viewport allows zoom” (1 point) in Accessibility and “Pinch-zoom not disabled” (2 points) in Mobile. Accessibility drops from 71 to 67, Mobile from 85 to 65, and the overall score from 84 to 81.

How do I use the HTML Page Auditor (Lighthouse-style)?

Simply type your numbers and read the result, which refreshes the instant you change something. There is nothing to submit and nothing to wait for.

Do I need to install or sign up for anything?

Not at all — it runs in the browser with nothing to install and no account. After it loads once, it even works without an internet connection.

Is my information private?

Yes. Everything happens in your browser. Nothing you type is sent to a server or saved anywhere.

Common Use Cases

Pre-launch SEO check

Confirm the title fits about 600 px, the description about 960 px, and there is exactly one h1, a canonical link and no noindex.

Accessibility sweep

In the sample, one image without alt text and one unlabelled field fail two 3-point checks, so Accessibility scores 71.

Privacy review

List every third-party origin a page contacts (pass at 4 or fewer) and spot known trackers, ad scripts and tracking pixels.

Layout-shift hunt

Load a page on this site and see its real CLS (good at 0.1 or less) and the elements that moved.

Teaching front-end quality

Show students how each markup choice moves a score: three fixes take the sample from 84 to 89.

Last updated: