UXM UXMachine Real casesWhat UXMachine isTry it with a URLSign inESEN

Verifiable review

What we checked on this site

https://duolingo.com

Declared goal

A general review

This report is written for whoever can change this site. If that is not you, pass it on.

October 11, 2026·evidence captured during the analysis

This is the report we issued on October 11, 2026. We have not edited it since.

Check your own site the same way

We open up to 11 pages of your site in a real browser, on desktop and mobile, and tell you what we observed, with its evidence and its limits.

Check a URL

If you change only one thing

Raise the contrast of this text against its background

When you change it, measure this site again: we will tell you whether we still observe it.

See the full order and why ↓

1

Diagnose

What we were able to measure

We reviewed 11 of the 101 linked pages, at 1280 px and 390 px. Everything we say below comes from these captures, and each statement has the measurement it comes from underneath it.

Screenshot of the first screen of the page, as it looked when we read it, in a 1280×800 window.
Screenshot of the first screen of the page, as it looked when we read it, in a 390×844 window.

First screen at 1280×800 and at 390×844, as it looked when we read it. Where the first screen ends depends on the window size. Open them at full size to see it.

First screen at 1280×800 and at 390×844, as it looked when we read it. Where the first screen ends depends on the window size. Open them at full size to see it.

What you can leave as it isSee
What we checked and what was left outSee
The measurements, one by oneSee

We ran 6 checks. Complete: 1. Partial: 4. Not measured: 1. With that, we flag 2 changes for you.

2

Decide

What you can decide

Each one is a change you can make, with the measurement it comes from and how to check that it is done. In stage 3 we tell you in what order we would make them.

They are not ordered by urgency. Which one you work on first is a decision this report does not make.

Found in the review, with no demonstrated relation to what you asked for.

  • Act

    Darken the text that does not reach the minimum against its background

    Why we say this —At least one piece of text on these pages falls below the minimum contrast that applies to it. It appears on 10 of the 11 pages we reviewed.

    In low light, in bright light or with tired eyes, this text blends into the background. Anyone who does not read it, does not read it.

    Lightening the background also works, or changing both. We give you one so you do not have to choose.


    You will know it is done wheneach pair reaches the minimum that applies to it.

    This is not all of them: there are at least 137 more.

    It appears on 10 of the 11 pages we reviewed.

    Where: /, /register, /course/en/en/Learn-English, /chess, /math, /course/es/en/Learn-Spanish, /courses, https://about.duolingo.com/, /efficacy, https://blog.duolingo.com/handbook/

    The measurement: We measure against the reference the check itself brings: 4.5 to 1 for normal text and 3 to 1 for large text. We did not set it. We do not measure text that sits on an image or a gradient: the check cannot work out the background color, and those cases never get this far.

    Confirm it with the eyedropper in the browser inspector: each of the color pairs listed in the full report now reaches its minimum

    What we do not know about this check: Partial. Visible focus does not show in a still capture, so we did not check it.

    The evidence

  • Act

    Write the alt text for these images

    Why we say this —On these pages we found at least one image with no alt. It appears on 6 of the 11 pages we reviewed.

    Anyone using a screen reader gets nothing from them. If one of them carries information that is not also in the text, that person misses it entirely.


    You will know it is done whenthose images declare their alt text.

    It appears on 6 of the 11 pages we reviewed. · at both widths

    Where: /, /register, /chess, /math, /courses, /efficacy

    The measurement: We found no alt attribute on those images. A decorative image is declared with alt="", and we do not count those here.

    Confirm it in the code: every image on those pages has its alt text

    What we do not know about this check: Partial. Visible focus does not show in a still capture, so we did not check it.

    The evidence

What gets in the way most

Computed accessibility

  • Let this page be zoomed in on a phone

    This site asks the browser not to allow zooming in on a phone.

    The viewport tag declares user-scalable=no. Some browsers ignore that request and others respect it.

    Anyone who needs to zoom in to read cannot do it on their phone.

    It appears on 8 of the 11 pages we reviewed. Among them: /, /register, /course/en/en/Learn-English. Plus 5 more.

    at both widths

    It is in the viewport tag, in maximum-scale=1 or in user-scalable=no.

What the evidence does not allow you to decide

Found in the review, with no demonstrated relation to what you asked for.

  • On 4 of the 11 pages we reviewed, the first screen has links and buttons that share the same background, text color and font size.

    Their appearance does not separate one action from another: someone arriving has no visual cue to choose by.

    It appears on 4 of the 11 pages we reviewed. · only on mobile (390 px)

    Where: /register, /courses, /efficacy, https://blog.duolingo.com/handbook/

    Check before you touch it: we do not measure this.

    What we do not know about this check: Not measured. A fixed layer sat over the first screen, and we cannot separate what is underneath.

    The evidence

3

Act

What to do, and in what order

2 changes, in the order we would make them. If you are only going to change one thing, change the first one.

Where this order comes from: three things we measured — how much it overlaps with what you asked us for, whether we could check it fully or only partly, and on how many of the 11 reviewed pages it appears. What we checked fully goes before what we checked partly. We do not measure how much each change costs, so if the first is expensive and the third is one line, start with the third.

Raise the contrast of this text against its background

How to check it: Confirm it with the eyedropper in the browser inspector: each of the color pairs listed in the full report now reaches its minimum

10 of the 11 pages · the card

Declare the alt text for these images

How to check it: Confirm it in the code: every image on those pages has its alt text

6 of the 11 pages · the card

There are 2 more steps, in the same order

Declare the description of this page

How to check it: Confirm it in the page head: the meta description tag appears with its text

1 of the 11 pages · the card

Declare how this page looks when shared

How to check it: Confirm it in the page head: the Open Graph tags appear

1 of the 11 pages · the card

What you can leave as it is

None of the checks we completed lets us say that something should stay as it is. That does not mean it is wrong: it means we do not have a complete check that certifies it.

What we checked and what was left out

This report looks at this site at 390 pixels wide, with the same checks we run on desktop. There are three things specific to mobile that we do not check yet: the size of what has to be tapped, whether the phone zooms in on the page when a field is tapped, and what text size is left afterwards. That we do not name them does not mean they are fine: it means we have not looked at them.

We read 11 pages on desktop, and all of them could also be read on mobile.

Consent notice: we could not determine whether there was one on 1 of the 11 pages of this review. On that page, what we describe is what loaded before we responded to anything; if the notice exists, content that only appears afterwards may be missing.

We read 11 of the 101 pages we found linked from the one you gave us. We start with the pages in the main navigation; footer links go last. Besides the page you gave us, we read up to 10 more pages per diagnostic. Here we reached that limit.

What we did and on what

We read 11 pages on October 11, 2026. We have 7 findings, in 4 groups. There is 1 more that we only show with its evidence.

How we chose which pages to read. We followed the links on www.duolingo.com and found 117 anchors. 7 were repeated and 10 pointed outside the site.

We ran 6 checks. Complete: 1. Partial: 4. Not measured: 1.

  • https://www.duolingo.com/
  • https://www.duolingo.com/register
  • https://www.duolingo.com/course/en/en/Learn-English
  • https://www.duolingo.com/chess
  • https://www.duolingo.com/math
  • https://www.duolingo.com/course/es/en/Learn-Spanish
  • https://www.duolingo.com/cookies
  • https://www.duolingo.com/courses
  • https://about.duolingo.com/
  • https://www.duolingo.com/efficacy
  • https://blog.duolingo.com/handbook/

We ran 6 checks. Complete: 1. Partial: 4. Not measured: 1.

With that, we flag 2 changes. In 1 case, we hold back.

Where we did not look

Each abstention with its cause and its scope. Absence of observation is not absence of the problem.

  • What we cannot separate from the cookie notice · throughout this report

    We could not close the cookie notice on 1 of the 11 pages we read. That is why we say nothing in this report about computed accessibility, navigation and links, or observed forms, not even on the pages where we did close it: what you see with the notice closed and with the notice on top is not the same, and mixing them would give a count that means nothing.

  • Links whose destination we could not determine · on 11 pages we read

    We cannot tell which are links that lead nowhere and which are buttons that work — tabs and dropdowns are written the same way. We do not claim that any of them is broken.

  • Computed accessibility

    Partial. Visible focus does not show in a still capture, so we did not check it.

  • Navigation and links

    Partial. We checked links with no declared destination, but we did not follow any, so we do not detect a link that leads to a page that does not exist.

  • Observed forms

    Partial. On some pages the cookie notice covered what needed measuring, and there we did not measure it. On the rest, we did.

  • First screen and calls to action

    Not measured. A fixed layer sat over the first screen, and we cannot separate what is underneath.

  • Third parties and consent

    Partial. This check only covers the domains the page called while loading. We removed the cookie notice by rejecting it. We do not judge whether what the page does with those domains is lawful.

  • Comparison with a reference population

    We do not yet compare this site with any reference corpus.

LIMITS OF THIS REVIEW

  • These observations are limited to the reviewed pages listed above.

  • The pages we did not read are not in these observations: nothing this report says refers to them.

  • What we count as a link or button: links, buttons, controls that submit a form, and anything that declares a link or button role. If something acts as a control without declaring itself one, we do not see it.

  • We measure contrast against the reference the check itself comes with: 4.5 to 1 for normal text and 3 to 1 for large text. It is not a threshold of our own. We do not measure text placed over an image or a gradient: the check cannot determine the background color, and those cases do not reach these observations.

  • This review looked at the site in its light version. If the site changes its appearance when the computer or phone is in dark mode, that version has not been looked at, and what we say here about contrast does not apply to it.

  • This review was done from the Netherlands, within the European Union. A visitor from outside the European Union may not see the same thing: some sites change depending on where they are requested from.

  • Fixed layers are measured in each of the windows used in this review. At another window size, the part of the first screen that is covered changes, and a layer that covers nothing in one window may cover something in another.

  • We do not count images declared as decorative: an image is declared decorative with alt="", and that is a choice made by whoever put it there. We trust that declaration; we do not check whether the image really is decorative.

  • When we review the declared type of a field, we go by its name and its label. We do not check what is typed into it, so a field whose name does not announce what it expects can go by without us flagging it.

  • We chose which pages to read by following the links on the first one, and the cookie notice we could not close was inside it, with its own links. We do not know whether any of the pages we read got onto the list because of the notice rather than because of your site.

  • You wrote “A general review” as your goal. We could not relate what you wrote to what we know how to check, so we ordered the report without taking it into account. That is a limit on our side.

  • This review abstains on 8 points. Each one, with its cause and its scope, is under “Where we did not look”.

The measurements, one by one

On 4 of the 11 pages we reviewed, the first screen has links and buttons that share the same background, text color and font size.

F4 · First screen and calls to action

Their appearance does not separate one action from another: someone arriving has no visual cue to choose by.

It appears on 4 of the 11 pages we reviewed. Among them: /register, /courses, /efficacy. Plus 1 more.

only on mobile (390 px)

The count for each page

  • https://www.duolingo.com/register · 6
  • https://www.duolingo.com/courses · 8
  • https://www.duolingo.com/efficacy · 7
  • https://blog.duolingo.com/handbook/ · 2

Where it is

a,button

About this check: Not measured. A fixed layer sat over the first screen, and we cannot separate what is underneath.

If you decide to change it: Change the style of whichever one should be the main action. We have not tested the change, so we do not know what else is affected.

On 10 of the 11 pages we reviewed, there are pieces of text that barely stand out from their background.

F1 · Computed accessibility

Why it matters: It is hard to read against the color behind it.

It appears on 10 of the 11 pages we reviewed. Among them: /, /register, /course/en/en/Learn-English. Plus 7 more.

We measure against the reference the check itself brings: 4.5 to 1 for normal text and 3 to 1 for large text. We did not set it. We do not measure text that sits on an image or a gradient: the check cannot work out the background color, and those cases never get this far.

This is not all of them: there are at least 137 more.

The measured colors, with their page

  • 2.08The text is #58cc02 on #ffffff · 6 times on https://www.duolingo.com/ · it says “free. fun. effective.”
  • 4.47The text is #777777 on #ffffff · 13 times on https://www.duolingo.com/ · it says “Learning with Duolingo is fun, and research shows that it works! With quick, bite-sized le”
  • 2.44The text is #1cb0f6 on #ffffff · once on https://www.duolingo.com/ · it says “research shows that it works”
  • 1.87The text is #d7ffb8 on #58cc02 · 11 times on https://www.duolingo.com/ · it says “About us”
  • 1.48The text is #a5ed6e on #58cc02 · 40 times on https://www.duolingo.com/ · it says “Courses”
  • 4.47The text is #777777 on #ffffff · 40 times on https://www.duolingo.com/register · it says “41.9M learners”
  • 2.08The text is #58cc02 on #ffffff · 5 times on https://www.duolingo.com/course/en/en/Learn-English · it says “free. fun. effective.”
  • 4.47The text is #777777 on #ffffff · 4 times on https://www.duolingo.com/course/en/en/Learn-English · it says “Learning with Duolingo is fun, and research shows that it works! With quick, bite-sized le”
  • 2.44The text is #1cb0f6 on #ffffff · once on https://www.duolingo.com/course/en/en/Learn-English · it says “research shows that it works”
  • 1.87The text is #d7ffb8 on #58cc02 · 11 times on https://www.duolingo.com/course/en/en/Learn-English · it says “About us”
  • 1.48The text is #a5ed6e on #58cc02 · 45 times on https://www.duolingo.com/course/en/en/Learn-English · it says “Courses”
  • 4.12The text is #777777 on #e6faf5 · once on https://www.duolingo.com/chess · it says “Join millions learning chess on the world’s #1 learning app.”
  • 2.19The text is #afafaf on #ffffff · 4 times on https://www.duolingo.com/chess · it says “Bite-sized learning”
  • 4.47The text is #777777 on #ffffff · 4 times on https://www.duolingo.com/chess · it says “Learn the game one piece, one puzzle, one tactic at a time.”
  • 1.83The text is #bfbfbf on #ffffff · 8 times on https://www.duolingo.com/chess · it says “Duolingo”
  • 4.47The text is #777777 on #ffffff · 5 times on https://www.duolingo.com/math · it says “A built-in tutor helps motivate kids to keep learning with tips and support.”
  • 1.83The text is #bfbfbf on #ffffff · 8 times on https://www.duolingo.com/math · it says “Duolingo”
  • 2.08The text is #58cc02 on #ffffff · 5 times on https://www.duolingo.com/course/es/en/Learn-Spanish · it says “free. fun. effective.”
  • 4.47The text is #777777 on #ffffff · 4 times on https://www.duolingo.com/course/es/en/Learn-Spanish · it says “Learning with Duolingo is fun, and research shows that it works! With quick, bite-sized le”
  • 2.44The text is #1cb0f6 on #ffffff · once on https://www.duolingo.com/course/es/en/Learn-Spanish · it says “research shows that it works”
  • 1.87The text is #d7ffb8 on #58cc02 · 11 times on https://www.duolingo.com/course/es/en/Learn-Spanish · it says “About us”
  • 1.48The text is #a5ed6e on #58cc02 · 45 times on https://www.duolingo.com/course/es/en/Learn-Spanish · it says “Courses”
  • 2.19The text is #afafaf on #ffffff · once on https://www.duolingo.com/courses · it says “I speak English”
  • 4.47The text is #777777 on #ffffff · 40 times on https://www.duolingo.com/courses · it says “41.9M learners”
  • 4.18The text is #777777 on #f7f7f7 · once on https://www.duolingo.com/courses · it says “iOS and Android only”
  • 2.08The text is #58cc02 on #ffffff · once on https://about.duolingo.com/ · it says “Our mission”
  • 4.47The text is #777777 on #ffffff · 13 times on https://about.duolingo.com/ · it says “The world’s most popular language learning app.”
  • 2.44The text is #1cb0f6 on #ffffff · 10 times on https://about.duolingo.com/ · it says “Learn more”
  • 2.19The text is #afafaf on #ffffff · 32 times on https://about.duolingo.com/ · it says “Duolingo app”
  • 2.08The text is #58cc02 on #ffffff · 3 times on https://www.duolingo.com/efficacy · it says “duolingo works”
  • 2.44The text is #1cb0f6 on #ffffff · 9 times on https://www.duolingo.com/efficacy · it says “teaching method”
  • 2.19The text is #afafaf on #ffffff · 9 times on https://www.duolingo.com/efficacy · it says “1:47”
  • 1.83The text is #bfbfbf on #ffffff · 8 times on https://www.duolingo.com/efficacy · it says “Duolingo”
  • 2.46The text is #a5a5a5 on #ffffff · 12 times on https://blog.duolingo.com/handbook/ · it says “February 10, 2025”
  • 2.44The text is #ffffff on #1cb0f6 · 2 times on https://blog.duolingo.com/handbook/ · it says “DOWNLOAD THE HANDBOOK”
  • 2.71The text is #009be4 on #ddf4ff · once on https://blog.duolingo.com/handbook/ · it says “Life at Duolingo”
  • 2.19The text is #afafaf on #ffffff · 36 times on https://blog.duolingo.com/handbook/ · it says “About us”
  • 2.19The text is #afafaf on #ffffff · once on https://www.duolingo.com/ · it says “Site language: English”
  • 2.19The text is #afafaf on #ffffff · once on https://www.duolingo.com/register · it says “Site language: English”
  • 2.19The text is #afafaf on #ffffff · once on https://www.duolingo.com/course/en/en/Learn-English · it says “Site language: English”
  • 2.02The text is #afafaf on #e6faf5 · once on https://www.duolingo.com/chess · it says “Site language: English”
  • 2.19The text is #afafaf on #ffffff · once on https://www.duolingo.com/course/es/en/Learn-Spanish · it says “Site language: English”
  • 2.44The text is #ffffff on #1cb0f6 · once on https://www.duolingo.com/courses · it says “Site language: English”
  • 2.08The text is #58cc02 on #ffffff · once on https://blog.duolingo.com/handbook/ · it says “The Duolingo Handbook”
  • 4.47The text is #777777 on #ffffff · 7 times on https://blog.duolingo.com/handbook/ · it says “How Duolingo works: 14 years of big learnings in one little handbook.”

About this check: Partial. Visible focus does not show in a still capture, so we did not check it.

If you decide to change it: Change one color in the stylesheet. We have not tested the change, so we do not know what else is affected.

On 6 of the 11 pages we reviewed, we found images without alt text.

F1 · Computed accessibility

Why it matters: A screen reader cannot describe them.

It appears on 6 of the 11 pages we reviewed. Among them: /, /register, /chess. Plus 3 more.

at both widths

We found no alt attribute on those images. A decorative image is declared with alt="", and we do not count those here.

The count for each page

  • https://www.duolingo.com/ · 42
  • https://www.duolingo.com/register · 42
  • https://www.duolingo.com/chess · 8
  • https://www.duolingo.com/math · 12
  • https://www.duolingo.com/courses · 43
  • https://www.duolingo.com/efficacy · 6

Where it is

img

About this check: Partial. Visible focus does not show in a still capture, so we did not check it.

If you decide to change it: One attribute per image. We have not tested the change, so we do not know what else is affected.

This site asks the browser not to allow zooming in on a phone.

F1 · Computed accessibility

The viewport tag declares user-scalable=no. Some browsers ignore that request and others respect it.

It appears on 8 of the 11 pages we reviewed. Among them: /, /register, /course/en/en/Learn-English. Plus 5 more.

at both widths

It is in the viewport tag, in maximum-scale=1 or in user-scalable=no.

Where it is

meta[name=viewport]

About this check: Partial. Visible focus does not show in a still capture, so we did not check it.

If you decide to change it: Remove that value from one line. We have not tested the change, so we do not know what else is affected.

We found no search engine description on 1 of the 11 pages we reviewed.

F5 · Metadata and shareability

Why it matters: Google chooses on its own which snippet to show under the title.

It is on https://about.duolingo.com/.

at both widths

We found no <meta name="description"> tag on those pages.

The count for each page

  • https://about.duolingo.com/ · 1

Where it is

head

If you decide to change it: One line in the page head. We have not tested the change, so we do not know what else is affected.

We found nothing on this page that says how it should look when shared.

F5 · Metadata and shareability

Why it matters: When the link is pasted into WhatsApp or LinkedIn, each one improvises the title and the image.

It is on https://about.duolingo.com/.

at both widths

We found no Open Graph tags: og:title, og:description and og:image.

Where it is

head

If you decide to change it: Three lines in the page head. We have not tested the change, so we do not know what else is affected.

On 10 of the 11 pages we reviewed, there are external domains that load before anyone touches anything. On the page with the most, there are 10.

F6 · Third parties and consent

They showed up in the first load, before we answered the cookie notice on 9 of the 11 pages in this review. It is what someone finds when they arrive at the site and have not answered yet.

Among them: accounts.google.com, cdn.cookielaw.org, d35aaqx5ub95lt.cloudfront.net. Plus 12 more.

It appears on 10 of the 11 pages we reviewed. Among them: /, /register, /course/en/en/Learn-English. Plus 7 more.

at both widths

The count for each page

  • https://www.duolingo.com/ · 8
  • https://www.duolingo.com/register · 8
  • https://www.duolingo.com/course/en/en/Learn-English · 8
  • https://www.duolingo.com/chess · 8
  • https://www.duolingo.com/math · 8
  • https://www.duolingo.com/course/es/en/Learn-Spanish · 8
  • https://www.duolingo.com/cookies · 8
  • https://www.duolingo.com/courses · 8
  • https://www.duolingo.com/efficacy · 8
  • https://blog.duolingo.com/handbook/ · 10

Where it is

network

About this check: Partial. This check only covers the domains the page called while loading. We removed the cookie notice by rejecting it. We do not judge whether what the page does with those domains is lawful.

No fix proposed: this is a decision worth consulting on.

On 3 of the 11 pages we reviewed, there are headings that skip levels.

F1 · Computed accessibility

Why it matters: Anyone navigating by headings loses the thread of the document.

It appears on 3 of the 11 pages we reviewed. Among them: /course/en/en/Learn-English, /course/es/en/Learn-Spanish, https://blog.duolingo.com/handbook/.

at both widths

We look at the order of the heading levels (h1, h2, h3…) as they appear in the document, and here there is a skip between levels. We do not judge what each heading says.

The count for each page

  • https://www.duolingo.com/course/en/en/Learn-English · 1
  • https://www.duolingo.com/course/es/en/Learn-Spanish · 1
  • https://blog.duolingo.com/handbook/ · 2

Where it is

h1..h6

About this check: Partial. Visible focus does not show in a still capture, so we did not check it.

If you decide to change it: Change the level of the tag, not how it looks. We have not tested the change, so we do not know what else is affected.

All cases

The other cases: Airbnb · Atlassian · Attio · Basecamp · Calendly · Dropbox · GitHub · Intercom · Linear · Loom · Miro · Notion · Paddle · PostHog · Shopify · Simple Analytics · Typeform · Umami · Vercel · Zoom

Check your own site the same way

We open up to 11 pages of your site in a real browser, on desktop and mobile, and tell you what we observed, with its evidence and its limits.

Check a URL

Provenance

The instrument this review was written with.

Artifact versionartifact.v15
Resolution baseCaptured
CapturedOctober 11, 2026, 12:52 UTC
Page setcs-12c5ab4e-44c2-4c26-a4c1-38bdef28b763
Instrumentcopy-familias.v32 · spine seis-secciones.v1 · surface superficie:47f340120276a76a
Field definitioncenso-de-formularios.v1 · we do not count: hidden, submit, button, reset, image and the anti-spam tokens · the fields marked aria-hidden · the search fields: they do not ask for details about the person; they are a navigation control · the fields that appear while typing or in later steps: they are not guessed
Selection rulenot recorded

These versions identify the instrument, not the exact wording: the same version can cover later wording corrections.

Requested addresshttps://duolingo.com
Final addresshttps://www.duolingo.com/
ReadingRead on October 11, 2026. Sites change.

Examples made on public home pages. They imply no commercial relationship, engagement, validation or approval on the part of the brands analyzed.

If you own one of these sites and do not want its report here, write to us and we will take it down the same day. You do not have to explain why.

UXMachine would like to use Google to measure visits and which ads bring them. Without your permission, we do not load those tools. Details

Settings