Skip to main content
U.S. flag

An official website of the United States government

Dot gov

The .gov means it’s official.
Federal government websites often end in .gov or .mil. Before sharing sensitive information, make sure you’re on a federal government site.

Https

The site is secure.
The https:// ensures that you are connecting to the official website and that any information you provide is encrypted and transmitted securely.

Latest release: Component Library: v56.7.0 released on Jul 1, 2026 | Guidance: Sprint 3 released on Jul 13, 2026 | Figma: Changelog

Foundation

Typography

Typographical selections intended to meet the highest standards of usability and accessibility, while setting a consistent look and feel in order to convey credibility.

Fonts

Source Sans Pro (.vads-u-font-family--sans)

Source Sans Pro is an open-source sans serif typeface created for legibility in UI design. With a variety of weights that read easily at all sizes, Source Sans Pro provides clear headers as well as highly-readable body text.

Inspired by twentieth-century American gothic typeface design, its slender but open letters offer a clean and friendly simplicity. Advanced hinting allows Source Sans Pro to render well on Windows systems which run Cleartype, and across browsers and devices. Moreover, it supports a variety of languages and alphabets, including Western and European language, Vietnamese, pinyin Romanization of Chinese, and Navajo.

Aa

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

0 1 2 3 4 5 6 7 8 9


Bitter (.vads-u-font-family--serif)

People read and interact with text on screens more and more each day. What happens on screen ends up being more important than what comes out of the printer. With the accelerating popularity of electronic books, type designers are working hard to seek out the ideal designs for reading on screen.

Motivated by my love for the pixel I designed Bitter. A “contemporary” slab serif typeface for text, it is specially designed for comfortably reading on any computer or device. The robust design started from the austerity of the pixel grid, based on rational rather than emotional principles. It combines the large x-heights and legibility of the humanistic tradition with subtle characteristics in the characters that inject a certain rhythm to flowing texts.

Bitter has little variation in stroke weight and the Regular is thicker than a normal ‘Regular’ style for print design. This generates an intense color in paragraphs, accentuated by the serifs that are as thick as strokes with square terminals.

Each glyph is carefully designed with an excellent curve quality added to the first stage of the design, that was entirely made in a pixel grid. The typeface is balanced and manually spaced to use very few kerning pairs, especially important for web font use since most browsers do not currently support this feature.

- Sol Matas (Designed for Huerta Tipográfica)

Aa

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

0 1 2 3 4 5 6 7 8 9


Roboto Mono (.vads-u-font-family--mono)

Roboto Mono is a monospace addition to the Roboto type family. Like the other members of the Roboto family, the fonts are optimized for readability on screens across a wide variety of devices and reading environments.

While the monospace version is related to its variable width cousin, it doesn't hesitate to change forms when so beneficial. For instance, narrow glyphs like 'I', 'l' and 'i' have added serifs for more even texture while wider glyphs are adjusted for weight. Curved caps like 'C' and 'O' take on the straighter sides from Roboto Condensed.

Special consideration is given to code display, with clear distinction between similar characters like 0 (zero) and O (capital O), and between 1 (one), l (lowercase L), and I (capital i). This makes Roboto Mono ideal for displaying code, configuration files, and other technical content.

Aa

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

0 1 2 3 4 5 6 7 8 9 ! @ # $ % ^ & * ( ) - _ = +

{ } [ ] | \ : ; " ' < > , . ? /

Font sizing

Font sizes must use relative units (rem or em), not pixels. While pixels scale with page zoom, they don’t respond to user-set default font sizes in browser settings. Relative units respect these preferences, which is required for WCAG 2.2 AA SC 1.4.4 Resize Text.

When to use rem

Use rem for most font sizes. Rem units are relative to the root element’s font size, so they provide consistent sizing across the page regardless of nesting. This is the right choice for headings, body text, and any text that should maintain a predictable size.

When to use em

Use em for font sizes that should scale relative to their parent element. This can be useful for components that need to scale proportionally where all text should grow or shrink together based on a single parent size setting. We currently prefer rem to em in the codebase.

Spacing and font sizing

For spacing-related values (margins, padding, gaps), use the spacing unit tokens rather than hardcoded values. When custom spacing values are needed, use rem to maintain accessible scaling.

Headings

Headline H1

Headline H2

Headline H3

Headline H4

Headline H5
Headline H6
<h1>Headline H1</h1>
<h2>Headline H2</h2>
<h3>Headline H3</h3>
<h4>Headline H4</h4>
<h5>Headline H5</h5>
<h6>Headline H6</h6>

Headings and accessibility

Always use semantic headings, logically nested in the proper order. Do not use improper nesting to achieve a different font size. In other words, an h1 should never be followed by an h3; it should only be followed by an h2. Use the font-size utility to change the font size of a semantic heading instead.

Do

Use utility classes to change the font size of a semantic heading.

Example

<h1>Main heading</h1>

<p>Some text</p>

<h2 class="vads-u-font-size--h3">Secondary heading</h2>

Don’t

Don’t change heading level in order to use a different font size.

Example

<h1>Main heading</h1>

<p>Some text</p>

<h3>Secondary heading</h3>
  • Cognitive load and user expectations. Headings serve as structural elements that help users with assistive technologies understand page organization. When a heading is also a link, it creates dual functionality that can confuse users. Screen reader users may not expect headings to be actionable.
  • Challenging keyboard navigation. Keyboard users tab through links as a primary navigation method. Headers that are links can be accidentally activated during normal page exploration.
  • Confusing screen reader announcements. Screen readers announce headings and links differently. Combining them results in unclear announcements like “Heading level 2, link, Text,” making it harder to understand the element’s purpose.
  • Unnecessary redundancy. The linked text in a heading is often repeated elsewhere on the page, creating distracting duplication.

An exception can be made in the Card component, where:

  • Space is limited, and combining the heading and link reduces visual clutter
  • The card functions as a single actionable unit (such as linking to a detail page)
  • The design makes the linked heading the primary call-to-action in the card, minimizing confusion

When it’s not appropriate

  • In normal page content where headings primarily serve as organizational aids
  • When multiple links are associated with the heading, making the primary action unclear
  • When the link in the heading duplicates another visible link that immediately follows it

Monospace fonts

Use monospace fonts sparingly. Monospace fonts can be difficult to read, especially at small sizes or with poor color contrast. Use monospace fonts for numerical data in tables, code examples, or when precise horizontal alignment is needed. For body text, choose a sans serif typeface.

Do

Use monospace fonts for numerical data in tables, such as percentages, currency, or totals.

Example

Balance Interest Rate Monthly Payment
$1,234.56 3.25% $156.78
$987.65 4.50% $89.34
$10,000.00 2.75% $1,250.00

Don't

Do not use monospace fonts for phone numbers, zip codes, dates, or other data that can’t be added up.

Example

Service Phone number Zip Code
Health Care (555) 123-4567 12345
Disability Benefits (800) 827-1000 90210
Education Benefits (888) 442-4551 10001

Eyebrow

Eyebrow Title Headline H1

<h1>
  <span class="vads-c-eyebrow">Eyebrow Title</span>
  Headline H1
</h1>

Card with Eyebrow

Disability Benefits Compensation Claim

Your claim for compensation benefits has been received and is being processed.

Review your claim

<va-card>
  <h3>
    <span class="vads-c-eyebrow">Disability Benefits</span>
    Compensation Claim
  </h3>
  <p>Your claim for compensation benefits has been received and is being processed.</p>
  <p><a href="#" class="vads-c-action-link--blue">Review your claim</a></p>
</va-card>

The eyebrow sits above a heading and provides a label for a sequence of pages in a process or for groups of related content, such as multiple cards. The eyebrow component renders its text in uppercase through styling. Authors should still always enter label text in sentence case, not in ALL CAPS. Refer to Capitalization for guidance on when we permit all caps.

When to use

  • Use the eyebrow when you implement the Help users to complete a sub task pattern.
  • Use the eyebrow to indicate content type or category across related cards or pages.
  • Use the eyebrow to provide high-level context that helps users compare or scan multiple cards.

When to use something else

Note: This component has been tested indirectly with success.

Paragraphs

VA Intro Text has the class 'va-introtext'. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean venenatis laoreet augue scelerisque sollicitudin.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean venenatis laoreet augue scelerisque sollicitudin.

<!-- Intro text -->
<p class="va-introtext">VA Intro Text has the class 'va-introtext'. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean venenatis laoreet augue scelerisque sollicitudin.</p>

<!-- Regular paragraph -->
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean venenatis laoreet augue scelerisque sollicitudin.</p>
  • Paragraphs should not exceed vads-size-line-length-5 (72ex) and should use our line-length design tokens when appropriate to further constrain their width. Some elements that are not yet using our line-length design tokens will use 77ch as their max-width which is also acceptable.

Typography tokens

Primitive typography tokens

Token Value Notes vads-font-family-mono 'Roboto Mono Web', 'Bitstream Vera Sans Mono', 'Consolas', 'Courier', monospace Monospace font family, for code and tabular figures. vads-font-family-sans 'Source Sans Pro Web', 'Source Sans Pro', 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif Default sans-serif font family for UI and body text. vads-font-family-serif Bitter, Georgia, Cambria, 'Times New Roman', Times, serif Serif font family, for headings and display text. vads-font-line-height-1 1 Line height for buttons, navigation, and text not meant to wrap. vads-font-line-height-2 1.15 Line height for headings and short lead text (1-2 sentences). vads-font-line-height-3 1.35 Line height for short text, captions, and very short or long measures. vads-font-line-height-4 1.5 Line height for short running text with a short measure. vads-font-line-height-5 1.62 Line height for extended reading text. vads-font-line-height-6 1.75 Line height for shorter text and pullquotes set apart from body text. vads-font-size-2xl 2.5rem (40px) Font size scale step, 2X-large. vads-font-size-2xs 0.8125rem (13px) Font size scale step, 2X-small. vads-font-size-3xl 3rem (48px) Font size scale step, 3X-large. vads-font-size-3xs 0.75rem (12px) Font size scale step, 3X-small. vads-font-size-lg 1.25rem (20px) Font size scale step, large. vads-font-size-md 1.063rem (17px) Font size scale step, medium. vads-font-size-root 1rem (16px) Root font size that rem units are based on. vads-font-size-sm 0.938rem (15px) Font size scale step, small. vads-font-size-source-sans-normalized 1.06rem (17px) Do not use. Use vads-font-size-body-default instead. vads-font-size-xl 2rem (32px) Font size scale step, X-large. vads-font-size-xs 0.875rem (14px) Font size scale step, X-small. vads-font-style-italic italic Italic font style. vads-font-style-normal normal Normal font style. vads-font-weight-bold 700 Bold font weight. vads-font-weight-normal 400 Normal font weight.
Edit this page in GitHub (Permissions required)
Last updated: Jun 25, 2026