Link & button text auditor

Find the labels that say nothing once the sentence around them is gone.

Right-click any page → Inspect → copy the element. Nothing is uploaded; the parsing happens in this tab.

Links0
Controls0
Errors0
Warnings0

No reading-level score, on purpose

Readability formulas are fitted on continuous prose and divide by sentence count, so they produce nonsense on short strings. Flesch-Kincaid rates “Learn more” and “Click here” at a reading ease of 120.2 — off the top of the scale — while “Download invoice PDF” scores 62.8. The two worst labels in interface design come out as the easiest text imaginable. A number here would be confidently wrong, so there isn’t one.

    In short

    Every finding here names the WCAG criterion it comes from. Nothing is a style preference, and nothing is a guess.

    What link text audit is

    A check of the words inside links, buttons and form controls against the WCAG success criteria that govern them. It is distinct from a writing check because the criteria are testable: a label either names its destination out of context or it does not, and an accessible name either contains the visible text or it does not.

    What this tool does that others do not

    • Findings cite a criterion and a conformance level

      Each result names what it breaches, so a review conversation is about a criterion rather than about taste. "This is vague" is an opinion; "this fails 2.4.4 Link Purpose, Level A" is something a ticket can carry.

      The rules cover 2.4.4 (A), 2.4.9 (AAA), 2.5.3 (A), 2.4.6 (AA) and 4.1.2 (A).

    • It shows each link the way a screen reader lists it

      Screen-reader users routinely pull up every link on a page at once, which strips each one down to its own words. "Read more" eleven times becomes eleven identical rows. The report reproduces that view, because it is the state the label will be read in.

    • It refuses to give a readability score

      Readability formulas divide by sentence count and were validated on continuous prose, so on a two-word string the divisor makes the output meaningless — and it reliably rewards the vaguest labels in interface design.

      Flesch–Kincaid rates “Learn more” and “Click here” at 120.2 reading ease, above the top of the scale, and the clearer “Download invoice PDF” at 62.8.

    How to use it

    1. Paste the markup, not the text

      Copy the outer HTML of the region from developer tools. The aria-labels are where half the findings live, and copying visible text discards them.

    2. Work through the errors before the warnings

      Errors are Level A failures — a control with no accessible name, a label the accessible name contradicts. Warnings are the ones that depend on context you may have and the parser does not.

    3. Rewrite to name the destination or the action

      “Download invoice PDF” rather than “Download”. If two links now share a name and go to different places, that is a second finding, not a fixed one.

    4. Start any aria-label with the visible words

      That satisfies 2.5.3 and keeps voice control working, which is the failure mode people forget because it does not show up in a screen-reader test.

    Worked examples

    Real input, real figures.

    A control voice control cannot operate

    You give it

    <button aria-label="Find records">Search</button>

    You get

    Fails 2.5.3 Label in Name, Level A. Someone saying “click Search” gets nothing, because the spoken words are not in the accessible name. “Search records” satisfies both the visible label and the name.

    An icon button with nothing to announce

    You give it

    <button><svg aria-hidden="true">…</svg></button>

    You get

    Fails 4.1.2 Name, Role, Value, Level A. The icon is correctly hidden, which leaves the button with no accessible name at all — a screen reader announces it as "button" and nothing more.

    Against a general writing checker

    AspectThis toolA grammar or readability checker
    InputMarkup, so name and visible text can be comparedPlain text
    StandardFive named WCAG criteria with levelsHouse style
    Readability scoreRefused, with the numbers showing whyA grade level per string
    OutputThe criterion each finding breachesA rewrite suggestion
    Where it runsYour browser; no markup is sentA server

    Guide

    What it will not do

    • You cannot paste a URL. A browser will not let a page fetch another site’s HTML under the same-origin policy, and this site is static, so there is no backend to fetch it on your behalf.
    • It cannot judge whether a label is accurate — only whether it is specific. A button that says "Delete" and archives instead will pass every check here.

    A link list has no sentences in it

    Screen reader users navigate by pulling up every link on the page at once. It is one of the fastest ways to move around, and it strips each link down to its own words. “Read more”, repeated eleven times, becomes eleven identical rows.

    The score this tool refuses to give you

    Paste a button label into any free readability checker and it will return a grade level. That number is an artefact. The formulas divide word count by sentence count and were validated on continuous prose — on a two-word string the divisor makes the output meaningless.

    Flesch-Kincaid rates “Learn more” and “Click here” at a reading ease of 120.2, above the top of the scale, and rates the far clearer “Download invoice PDF” at 62.8. It reliably rewards the vaguest labels in interface design. So this tool checks what can actually be checked — whether a label names its destination or its action — and stays quiet about the rest.

    Questions people ask

    Straight answers. Each one links directly: copy the address after opening it.

    Why does “Click here” fail?

    Because screen reader users routinely pull up a list of every link on a page and navigate from that. In that list a link is only its own words — the sentence around it is gone. “Click here” in a list of forty links tells you nothing about any of them. WCAG 2.4.4 Link Purpose (Level A) is the criterion, and it is one of the most commonly failed on the web.

    Why is there no readability score?

    Because readability formulas divide by sentence count and were fitted on continuous prose, so they return artefacts on short strings. Flesch-Kincaid gives “Learn more” and “Click here” a reading ease of 120.2 — above the top of the scale — and gives the clearer “Download invoice PDF” 62.8. Any tool showing you a grade level for a button label is showing you a number with nothing behind it.

    What is Label in Name?

    WCAG 2.5.3, Level A. If a control shows the word “Search” but its aria-label says “Find records”, someone using voice control who says “click Search” gets nothing, because the spoken words are not in the accessible name. The fix is to make the accessible name start with the visible text.

    Does anything get uploaded?

    No. The markup is parsed by your own browser in this tab. There is no server to send it to — the whole site is static. You can check in the network panel, or turn your connection off and keep working.

    Why can I not just paste a URL?

    Because a browser will not let a page fetch another site’s HTML — the same-origin policy stops it, and there is no backend here to do it on your behalf. Pasting the markup is the honest version of the feature.