Market
Pricing
Sign inStart
Field GuideType and text
Type and text

Typography system: choosing roles for every font

Choosing fonts is the easy part. Deciding exactly how they behave, at what size, in which weight, for which job, is what makes a brand look consistent everywhere.

GradientlyVerified Gradiently account·October 1, 2026·5 min read
Cover: Steep Thicket · GR·W1ZP·P7

The short version

  • A typography system is a small set of named roles, such as display, heading, body and label, each with a fixed font, weight, size, line height and case.
  • Sizes in a typography system come from one scale, a base size multiplied by a constant ratio, so every step relates to the others.
  • Most brands need only one or two typefaces; the system creates variety through roles, weights and sizes instead.
  • Design tokens store each role as a named value, so websites, apps and design files all use the same type decisions.
  • Social posts, slides and websites need different sizes for the same roles, so a good system lists each role per channel.
On this page
The roles in a typography systemHow many fonts a brand typography system needsBuild a type scaleStore the system as tokensOne role, different sizes per channelHow to build your typography system

A typography system is the set of rules that decides how type behaves across a brand: a few named roles (display, heading, body, label), each with one font, weight, size, line height and case, all sized from a single scale and stored as tokens so every designer and developer uses the same values. Fonts give a brand its voice. The system makes that voice consistent, so a headline on a poster, a website and a story all look like they came from the same place. Here is how to build one.

The roles in a typography system

Start with jobs, not fonts. Every piece of text a brand publishes does one of a handful of jobs, and each job becomes a role. Most brands need five to seven.

DisplayThe biggest words: campaign lines, covers, hero titles

Typical setting

Heading font, bold, tight line height, few words
HeadingSection titles and post headlines

Typical setting

Heading font, semibold or bold, sentence case
Subheading

Job

Leads into a section, standfirsts

Typical setting

Body font, medium weight, a step above body
BodyReading text

Typical setting

Body font, regular 400, line height around 1.5
Label and eyebrow

Job

Small text above headlines, tags, buttons

Typical setting

Body font, semibold, often capitals with added spacing
CaptionCredits, footnotes, small print

Typical setting

Body font, regular, smallest step
NumericPrices, statistics, tables

Typical setting

Tabular figures so digits line up
RoleJobTypical setting
DisplayThe biggest words: campaign lines, covers, hero titlesHeading font, bold, tight line height, few words
HeadingSection titles and post headlinesHeading font, semibold or bold, sentence case
SubheadingLeads into a section, standfirstsBody font, medium weight, a step above body
BodyReading textBody font, regular 400, line height around 1.5
Label and eyebrowSmall text above headlines, tags, buttonsBody font, semibold, often capitals with added spacing
CaptionCredits, footnotes, small printBody font, regular, smallest step
NumericPrices, statistics, tablesTabular figures so digits line up
Seven roles cover almost every brand. If you can't say what job a style does, it isn't a role; it is an exception.
Issue 12
Spring planting starts now
Five seeds to sow this week, and the ones to wait for
Gradiently · @gradiently

Three roles on one post: an eyebrow label, a heading and a body line. Each is instantly distinct, so the eye knows where to start.

How many fonts a brand typography system needs

Usually one or two. One family in three weights can carry a whole system. Two fonts, one for headings and one for body, add character. A third is justified only for a specific job such as code or data. The variety comes from roles, sizes and weights, not from more typefaces. Google Fonts pairings and brand fonts help you choose.

Avoid

  • A new font for every campaign
  • Sizes picked by eye on each design
  • Nine weights loaded, three used
  • Different casing rules in different teams
  • A style guide that lists fonts but not roles

Do

  • One or two families for everything
  • Every size from one scale
  • Only the weights the roles need
  • One written casing rule for headings and buttons
  • Roles with font, weight, size, line height and case

Build a type scale

A type scale picks a base size and multiplies it by the same ratio for each step up. The steps relate to each other, so any two sizes in the system look intentional together. A ratio of 1.25 suits interfaces and dense pages; 1.333 or 1.5 gives more drama for editorial and marketing work. Type scale explains the ratios in more depth.

Step 016 px

Role

Body
Step 120 px

Role

Subheading, large body
Step 225 px

Role

Small heading
Step 331 px

Role

Heading
Step 439 px

Role

Large heading
Step 549 px

Role

Display on mobile
Step 661 px

Role

Display on desktop
Step minus 1

Size at 1.25 from 16 px

13 px

Role

Caption, label
StepSize at 1.25 from 16 pxRole
Step 016 pxBody
Step 120 pxSubheading, large body
Step 225 pxSmall heading
Step 331 pxHeading
Step 439 pxLarge heading
Step 549 pxDisplay on mobile
Step 661 pxDisplay on desktop
Step minus 113 pxCaption, label
A web scale from a 16 px base at a ratio of 1.25, rounded to whole pixels. Each role takes one step and keeps it.

Store the system as tokens

A system that only lives in a PDF drifts. Tokens are named values that code and design files both read, so changing one value updates everything. Name tokens by role, never by size: --type-heading survives a redesign, --type-31 does not. Design tokens covers the wider idea.

css
:root {
  --font-heading: "Fraunces", Georgia, serif;
  --font-body: "Inter", system-ui, sans-serif;

  --type-display: 600 clamp(3.0625rem, 6vw, 3.8125rem) / 1.05 var(--font-heading);
  --type-heading: 600 1.9375rem / 1.15 var(--font-heading);
  --type-subheading: 500 1.25rem / 1.4 var(--font-body);
  --type-body: 400 1rem / 1.5 var(--font-body);
  --type-label: 600 0.8125rem / 1.2 var(--font-body);
}

h1 { font: var(--type-display); }
h2 { font: var(--type-heading); }
p { font: var(--type-body); }
.eyebrow { font: var(--type-label); text-transform: uppercase; letter-spacing: 0.08em; }
.price { font-variant-numeric: tabular-nums; }
Each role is one font shorthand token, so weight, size, line height and family always travel together. Values match the scale above in rem.

One role, different sizes per channel

A heading on a website and a heading on an Instagram post do the same job at very different sizes, because one is read at arm's length on a big screen and the other shrinks into a phone feed. Keep the roles identical and give each channel its own sizes.

Display49 to 61 px

Social post 1080×1350

140 to 200 px

Slides 1920×1080

120 to 160 px
Heading31 px

Social post 1080×1350

90 to 120 px

Slides 1920×1080

88 to 112 px
Body16 px

Social post 1080×1350

40 to 48 px

Slides 1920×1080

48 to 64 px
Label and eyebrow

Website

13 px

Social post 1080×1350

28 to 32 px

Slides 1920×1080

36 to 44 px
RoleWebsiteSocial post 1080×1350Slides 1920×1080
Display49 to 61 px140 to 200 px120 to 160 px
Heading31 px90 to 120 px88 to 112 px
Body16 px40 to 48 px48 to 64 px
Label and eyebrow13 px28 to 32 px36 to 44 px
Same roles, same fonts, same weights, different sizes. Font size for Instagram posts and presentation fonts explain the social and slide numbers.

How to build your typography system

  1. 1

    Collect what you already publish

    Screenshot your website, posts, emails and slides. Circle every distinct text style. Most brands find far more than they meant to have.

  2. 2

    Group styles into roles

    Merge near duplicates. Aim for five to seven roles that cover everything you circled.

  3. 3

    Choose fonts for the roles

    Usually a heading font and a body font. Check the licence covers web, apps and any logo use.

  4. 4

    Set the scale and the details

    Pick a base and ratio, then fix each role's weight, line height, case and spacing. Decide your heading case once; sentence case vs title case helps.

  5. 5

    Publish it as tokens and a one page sheet

    Tokens for code and design files, a single visual sheet in your brand style guide for everyone else.

For everyday social posts and decks, a Gradiently brand kit (on Pro) holds the heading and body fonts of your system, including uploaded font files, alongside your logos, colours and voice. New designs start with those two fonts, and the Designer applies the kit when it lays out a design, so the heading and body split holds without anyone having to remember it.

Ask the Designer

Describe what you need and Gradiently’s AI makes it, on your Mark.

Try the Designer

Questions people ask

What is a typography system?

A set of named type roles, such as display, heading, body and label, each with a fixed font, weight, size, line height and case, usually stored as design tokens.

How many fonts should a brand use?

One or two for most brands: one for headings and one for body text. A third is only worth adding for a specific job like code or data.

What is a type scale?

A sequence of font sizes made by multiplying a base size by a constant ratio, such as 1.25, so every size in the system relates to the others.

How should typography tokens be named?

By role, such as type-heading or type-body, not by size. Role names stay meaningful when the sizes change.

Should social media posts use the same font sizes as a website?

No. Keep the same roles and fonts, but use much larger sizes on posts, because they are viewed small in a phone feed.

Share this guide

Written by GradientlyVerified Gradiently account

The team behind Gradiently, a design tool built around Marks: living gradients that make everything you design look like yours.

See our profile

On this page

The roles in a typography systemHow many fonts a brand typography system needsBuild a type scaleStore the system as tokensOne role, different sizes per channelHow to build your typography system

Share this guide

Next in Type and text

Putting type on busy backgrounds without a box

Keep reading

All Type and text guides
Type and text

Type scale: sizes that look related, with ratios

5 min read

Pick font sizes by feel and they drift: 18, 22, 23, 30, 31. A type scale replaces those guesses with one base size and one ratio, so every size looks like it belongs to the same family.

CSS and web

Design tokens: one source of truth for colour and type

5 min read

A brand colour that lives in forty files will drift. A token lives in one place and every platform reads from it. Here is how to structure design tokens, name them so they last, and ship them to code and design tools.

Type and text

How to choose brand fonts that last

5 min read

A brand font gets used on everything from a billboard to a password reset email. Choosing one is less about taste in the moment and more about whether it can do every job for years.

Find the look that’s only yours.

Every Mark is a living background with one owner. Try an unclaimed Mark, and claim yours when it feels right.

Start designing

Check a certificate

Type a certificate number or a Mark’s code to see who owns it.

Works with ChatGPT and Claude

Ask your AI for a design. It makes it in your Mark, ready to edit.

ChatGPTClaude
How to connect

Product

  • Market
  • Explore
  • Pricing
  • Certificates

Learn

  • Field Guide
  • Help centre
  • What’s new

Developers

  • Overview
  • ChatGPT and Claude
  • API reference
  • API keys

Company

  • About
  • Contact us
  • Sign in

Legal

  • Terms
  • Privacy
  • Refunds
  • Mark protection
  • Cookies
  • All policies
Move through the letters. Each one wears a real Mark.Touch a letter to see its Mark.One name. Ten Marks inside it.
© 2026 Gradiently