DesignMD Maker logo โ† Home Report ยท Code analysis
D
Design System

Duolingo

Design system extracted from https://duolingo.com/ on 2026-08-28 (code-based analysis).

Source ยท https://duolingo.com/ Engine ยท Code analysis Created ยท Aug 28, 2026 03:01 Cost ยท $0.0000
Detected Language

Design Style

technical / mono accents
monospace font in use
Palette

Colors

primary
#111827
17.74 on white ยท 1.18 on black ยท 221ยฐ 39% 11%
Type System

Typography

headline-lg
inherit
32px ยท 400 ยท LH 1.15
Duolingo
headline-md
inherit
24px ยท 400 ยท LH 1.15
Duolingo
title-lg
inherit
19px ยท 400 ยท LH 1.4
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
body-lg
inherit
18px ยท 400 ยท LH 1.4
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
body-md
inherit
16px ยท 400 ยท LH 1.4
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-md
inherit
13px ยท 400 ยท LH 1.4
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
Detected Font Stacks
KaTeX_Main"KaTeX_SansSerif"monospace,monospaceKaTeX_CaligraphicKaTeX_FrakturKaTeX_MathinheritKaTeX_AMS
Structure

Layout

Container
Section padding: โ€” ยท card padding: โ€”
Grid
12-column reference grid ยท gap โ€”
Spacing Scale
xs
5.6px
sm
10.72px
lg
40px
detected
.35em
detected
.67em
detected
12px
detected
40px
Breakpoints
700px
Geometry

Shapes

sm
5px
Tokens in Context

Components

card
radius5px
button-primary
radius5px
Animation

Motion

Keyframes 18 found
@keyframes qnlsp
0%{opacity:1}33.3333333333%{opacity:.25}66.6666666667%{opacity:.5}to{opacity:1}
@keyframes tj_TT
0%{transform:scale(1)}33.3333333333%{transform:scale(.8)}66.6666666667%{transform:scale(.8)}to{transform:scale(1)}
@keyframes _3IjuS
0%{opacity:1}33.3333333333%{opacity:.3}66.6666666667%{opacity:.3}to{opacity:1}
@keyframes _2xhhK
0%{opacity:.5}33.3333333333%{opacity:1}66.6666666667%{opacity:.25}to{opacity:.5}
@keyframes _3wL1o
0%{transform:scale(.8)}33.3333333333%{transform:scale(1)}66.6666666667%{transform:scale(.8)}to{transform:scale(.8)}
@keyframes T-gio
0%{opacity:.3}33.3333333333%{opacity:1}66.6666666667%{opacity:.3}to{opacity:.3}
@keyframes EJauM
0%{opacity:.25}33.3333333333%{opacity:.5}66.6666666667%{opacity:1}to{opacity:.25}
@keyframes _2nQ30
0%{transform:scale(.8)}33.3333333333%{transform:scale(.8)}66.6666666667%{transform:scale(1)}to{transform:scale(.8)}
@keyframes _2eBze
0%{opacity:.3}33.3333333333%{opacity:.3}66.6666666667%{opacity:1}to{opacity:.3}
Easing Curves
ease-outease-in
Proof

Live Preview

Complete Reference

Full design.md Specification

Design Specification โ€” Duolingo

FieldValue
Site / Projecthttps://duolingo.com/
Analyzed on2026-08-28
Analysis modeAutomated code extraction (no AI)

Overview

This design system was extracted programmatically from the source page. It is built on the detected palette. All type is set in KaTeX_Main. Detected font weights: 400, 500, 700. Detected style signatures: technical / mono accents.

Logo asset(s): https://d35aaqx5ub95lt.cloudfront.net/images/duolingo-touch-icon2.png

Color System

Detected palette (by frequency)

HexRGBHSLCount

Typography

Primary typeface: KaTeX_Main โ€” stack: KaTeX_Main

Font stacks (most used first)

  • KaTeX_Main
  • "KaTeX_SansSerif"
  • monospace,monospace
  • KaTeX_Caligraphic
  • KaTeX_Fraktur
  • KaTeX_Math
  • inherit
  • KaTeX_AMS
  • KaTeX_Script
  • KaTeX_Size1

Derived type scale

TokenSize
headline-lg32px
headline-md24px
title-lg19px
body-lg18px
body-md16px
label-md13px

Font sizes (by frequency)

SizeCount
1em2
2em1
32px1
24px1
19px1
18px1
15px1
13px1

Weights in use: 400, 500, 700

Line heights (by frequency)

ValueCount
01
1.151
40px1
26px1
22px1

Spacing

Derived spacing scale

TokenValue
xs5.6px
sm10.72px
lg40px

Raw values (by frequency)

ValueCount
.67em1
.35em1
40px1
12px1

Borders & Radius

Derived radius tokens

TokenValue
sm5px

Raw values (resolved, by frequency)

RadiusCount
5px1

Layout

Breakpoints

  • 700px

Animation & Motion

Easing curves

  • ease-out
  • ease-in

Keyframes

@keyframes qnlsp { 0%{opacity:1}33.3333333333%{opacity:.25}66.6666666667%{opacity:.5}to{opacity:1} }
@keyframes tj_TT { 0%{transform:scale(1)}33.3333333333%{transform:scale(.8)}66.6666666667%{transform:scale(.8)}to{transform:scale(1)} }
@keyframes _3IjuS { 0%{opacity:1}33.3333333333%{opacity:.3}66.6666666667%{opacity:.3}to{opacity:1} }
@keyframes _2xhhK { 0%{opacity:.5}33.3333333333%{opacity:1}66.6666666667%{opacity:.25}to{opacity:.5} }
@keyframes _3wL1o { 0%{transform:scale(.8)}33.3333333333%{transform:scale(1)}66.6666666667%{transform:scale(.8)}to{transform:scale(.8)} }
@keyframes T-gio { 0%{opacity:.3}33.3333333333%{opacity:1}66.6666666667%{opacity:.3}to{opacity:.3} }
@keyframes EJauM { 0%{opacity:.25}33.3333333333%{opacity:.5}66.6666666667%{opacity:1}to{opacity:.25} }
@keyframes _2nQ30 { 0%{transform:scale(.8)}33.3333333333%{transform:scale(.8)}66.6666666667%{transform:scale(1)}to{transform:scale(.8)} }
@keyframes _2eBze { 0%{opacity:.3}33.3333333333%{opacity:.3}66.6666666667%{opacity:1}to{opacity:.3} }
@keyframes _2tb0b { 0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.5)} }
@keyframes lIsSW { 0%{transform:scale(1)}20%{transform:scale(1)}45%{transform:scale(1.2)}75%{transform:scale(1.2)}to{transform:scale(1)} }
@keyframes gTkFz { 0%{transform:translateY(100%)}to{transform:translateY(0)} }
@keyframes _1MFy_ { 0%{opacity:0}to{opacity:1} }
@keyframes qjYZL { 0%{opacity:1}to{opacity:0} }
@keyframes ikYiv { 0%{transform:scale(0)}to{transform:scale(1)} }
@keyframes _2Wi_s { 0%{transform:scale(1)}to{transform:scale(0)} }
@keyframes _3eO91 { 0%{background-position-y:20%}50%{background-position-y:30%}to{background-position-y:20%} }
@keyframes _3iy8w { 0%{opacity:.5;transform:rotate(-45deg) scale(1)}25%{opacity:0;transform:rotate(-45deg) scale(.5)}50%{opacity:.5;transform:rotate(-45deg) scale(1)}75%{opacity:0;transform:rotate(-45deg) scale(.5)}to{opacity:.5;transform:rotate(-45deg) scale(1)} }

Do's and Don'ts

Do

  • Do stick to the detected font weight(s): 400, 500, 700.

Don't

  • Don't introduce colors outside the detected palette โ€” every hue above was found in the source.
  • Don't add gradients โ€” the source page uses flat fills exclusively.
  • Don't add drop shadows; the source page relies on borders and surface shifts for depth, not elevation.

Design Tokens (copy-paste)

:root {
  --font-sans: KaTeX_Main;
  --font-size-headline-lg: 32px;
  --font-size-headline-md: 24px;
  --font-size-title-lg: 19px;
  --font-size-body-lg: 18px;
  --font-size-body-md: 16px;
  --font-size-label-md: 13px;
  --radius-sm: 5px;
  --space-xs: 5.6px;
  --space-sm: 10.72px;
  --space-lg: 40px;
}