Discover

spectr.pm vs Twitch

Two design systems side by side, measured from the live sites — colour, type, shape, depth, components, states and responsive behaviour.

spectr.pm: Spectr - AI Product Ops: Meetings to PRDs, Specs & Stories · Above the fold
spectr.pm
spectr.pm· read 2026-10-14
Twitch: Twitch · Above the fold
Twitch
twitch.tv· read 2026-11-03

Ground and ink

Each side painted in its own measured canvas, ink, muted and primary roles.

spectr.pm

Heading on canvas

Body copy in the measured muted role.

Primary action
18.6:1 ink on canvas

Twitch

Heading on canvas

Body copy in the measured muted role.

Primary action
18:1 ink on canvas

Palette

Named roles first, then every colour measured without one.

spectr.pm

  • canvas#0D0D0D
  • surface#171717
  • ink#FAFAFA
  • hairline#2E2E2E
  • primary#894DEF
  • on-primary#FAFAFA

10 more, no measured role

Twitch

  • canvas#F7F7F8
  • surface#ADADB8
  • ink#0E0E10
  • primary#9147FF
  • on-primary#0E0E10

2 more, no measured role

Type scale

Set at the measured size, weight, tracking and leading. Brand typefaces are not loaded, so the metrics are real and the letterforms are not.

spectr.pm

hero-display

288px · 900 · shown smaller

display

280px · 900 · shown smaller

display

252px · 900 · shown smaller

display

200px · 900 · shown smaller

display

132px · 800 · shown smaller

display

99px · 600 · shown smaller

h2

92px · 800 · shown smaller

Twitch

h2

18px · 500

h3

14px · 600

link

14px · 400

h4

14px · 600

body

14px · 400

input

14px · 400

body

14px · 600

Corners

Drawn at the measured radii.

spectr.pm

0px

Twitch

pill

0px

0px

pill

pill

8px

Spacing

One shared scale across both sides, so the bars are directly comparable.

spectr.pm

4
8
12
16
24
28
32
40

Twitch

4
8
16
24

Depth

Shadows cast on each side's own ground.

spectr.pm

sm

Twitch

sm

Buttons

Rendered from the measured computed styles.

spectr.pm

primaryfilledprimary-smtext

Twitch

primaryfilledfilled-2icon

The measured values behind the panels above.

spectr.pmTwitch

At a glance

Ground — these differDarkLight
Corners — these differSharpPill
Display size — these differ288px18px
Spacing base4px4px
Accent colours — these differ82
Type families22
Ink on canvas — these differ18.6:118.0:1
Components — these differ1113

Colour roles

primary — these differ#894DEF#9147FF
accent—#5C16C5
canvas — these differ#0D0D0D#F7F7F8
surface — these differ#171717#ADADB8
ink — these differ#FAFAFA#0E0E10
body — these differ#B8B8B8#3B3B44
hairline#2E2E2E—
on-primary — these differ#FAFAFA#0E0E10

Full palette

Every colour each extraction kept, including the ones with no measured role.

All colours — these differ#894DEF#A273F2#14532D#78350F#166534#4ADE80#92400E#FBBF24#0D0D0D#171717#FAFAFA#B8B8B8#2E2E2E#6B6B6B#000000#262626#9147FF#5C16C5#F7F7F8#ADADB8#0E0E10#3B3B44#FFFFFF#000000
Semantic——

Typography

Families — these differInter-e4c28016845df4efJetBrains Mono-33799697913f1f09RoobertInter
hero-display288px · 900 · 288px · -11.52px · uppercase · Inter-e4c28016845df4ef—
display132px · 800 · 198px · -2.64px · Inter-e4c28016845df4ef—
h172px · 800 · 72px · -2.52px · Inter-e4c28016845df4ef—
h2 — these differ44px · 800 · 46.2px · -1.32px · Inter-e4c28016845df4ef18px · 500 · 19.8px · -0.18px · Roobert
h3 — these differ19px · 600 · 28.5px · 0px · Inter-e4c28016845df4ef14px · 600 · 19.6px · 0px · Roobert
heading16px · 600 · 24px · 0px · Inter-e4c28016845df4ef—
list-item16px · 500 · 24px · 0px · Inter-e4c28016845df4ef—
body — these differ15px · 500 · 23.25px · 0px · Inter-e4c28016845df4ef14px · 400 · 19.6px · 0px · Inter
button — these differ15px · 600 · 22.5px · 0px · Inter-e4c28016845df4ef14px · 600 · 14px · 0px · Inter
link — these differ14px · 500 · 20px · 0px · Inter-e4c28016845df4ef14px · 400 · 19.6px · 0px · Roobert
h4—14px · 600 · 19.6px · 0px · Inter
input—14px · 400 · 21px · 0px · Inter
code13px · 600 · 19.5px · 1.82px · uppercase · JetBrains Mono-33799697913f1f09—
caption — these differ12px · 500 · 16.5px · 0px · Inter-e4c28016845df4ef12px · 600 · 16.8px · 0px · Inter

Shape and rhythm

Radius — these differ0px0px8px 0px 0px 8px9999px
Spacing — these differ4px8px12px16px24px28px32px40px44px48px64px144px4px8px16px24px
Border widths — these differ1px—

Depth

Strategysingle-tiersingle-tier
Shadows — these differrgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.1) 0px 10px 15px -3px, rgba(0, 0, 0, 0.1) 0px 4px 6px -4pxrgba(0, 0, 0, 0.13) 0px 1px 2px 0px, rgba(0, 0, 0, 0.08) 0px 0px 2px 0px
Gradients — these differ—section: linear-gradient(rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, rgba(0, 0, 0, 0) 100%)section: linear-gradient(rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.5) 40%, rgb(0, 0, 0) 100%)section: linear-gradient(rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 75%, rgb(255, 255, 255) 80%, rgb(255, 255, 255) 100%)
Opacity — these differ1.000.700.900.940.650.360.500.01
Z-index — these differdropdown 10dropdown 50base 1base 2base 3dropdown 10dropdown 11modal 1000modal 5010modal 9999

Components

Sharedbutton-primarybutton-filledbutton-textcardnavigationfooterlinkbutton-primarybutton-filledbutton-textcardnavigationfooterlink
Only here — these differbutton-primary-smbutton-text-2card-lglink-smbutton-filled-2button-iconcard-featuredcard-smcard-featured-smlink-2
Signature——

Interaction states

Read from each site's own stylesheets. An empty side means they were cross-origin and unreadable.

Measured — these differother:focus-visibleinput:hoverother:hovercard:hoverother:focusother:disablednav:hovernav:focus-visiblebadge:hoverbadge:disabledother:hoverother:focus-visibleother:activeother:focuslink:hoverother:disabled

Responsive

Breakpoints — these differ375→343px · 6col768→704px · 3col1024→960px · 5col1280→1216px · 5col1440→1376px · 5col375→150px · 2col768→768px · 2col1024→400px · 1col1280→490px · 1col1440→530px · 1col

Themes

Measured on the live site, not derived.

SupportSingle themeSingle theme

How this was measured

Differences here are ours, not the brands'.

Pages read6—
Extracted — these differ2026-10-142026-11-03
StylesheetsReadableReadable
Roles unassigned — these differ102

Measured by DesignMD from the live sites. Compare two others. Generate a DESIGN.md for your own site.