Font pairing
Fira Code+IBM Plex Sans
Fira Code headings over IBM Plex Sans body. A programming monospace with ligatures sets the section titles, and a humanist sans carries the prose. Useful for developer docs and API reference sites.
Fira Code's programming ligatures give headings a clear technical voice. IBM Plex Sans has a tall x-height and even color in body copy. The monospace and proportional-sans contrast signals 'this is a system' without making prose hard to read.
The art of typography
Typography is the visible voice of design. The right pairing balances contrast with consistency, a heading face that earns attention, a body face that earns trust. Test it at the sizes you actually ship, on the surfaces your readers actually use.
Fira Code (heading)
IBM Plex Sans (body)
Contrast Check
AAAThe quick brown fox
jumps over the lazy dog · 0123456789
- AA normal
- passes
- AA large
- passes
- AAA normal
- passes
- AAA large
- passes
Default colors come from the Editorial Cream palette. Adjust above to test your own combination, these are the recommended heading text against the recommended body / surface color.
Mood
Use cases
Tags
How to Use This Pairing
This Fira Code + IBM Plex Sans pairing works by combining the visual energy of a monospace typeface for headlines with the sustained readability of a sans serif for body text. The contrast in typeface classification creates a clear hierarchy that guides the reader from headline to body without confusion.
For the heading, use 500 or 600 weight, enough to anchor the page without overwhelming the layout. For body text, 400 or 500 weight keeps reading comfortable across paragraphs. If your layout calls for subheadings, step down one weight from your display heading to maintain clear distinction between levels. See the type scale calculator to generate a scale with mathematically coherent steps.
The mood keywords for this pairing, technical, modern, clean, describe the overall feeling the combination creates. Match these to the emotional register of your content. Formal content suits more neutral moods; creative or lifestyle brands benefit from warmer or more distinctive combinations. Browse all font pairings to compare mood categories and find a pairing that matches your brand tone.
Fira Code is a monospace with programming ligatures, drawing on the Fira Mono foundation. It's the most popular ligature-enabled coding font.
IBM Plex Sans is a humanist sans-serif designed by IBM as a corporate typeface. It has a neutral, technical character suited to documentation and enterprise UI.
Production Code
Copy-paste into your project, no build step required.
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fira%20Code:wght@500;600;700&family=IBM%20Plex%20Sans:wght@400;500&display=swap" rel="stylesheet">Setting It up in Your Project
Start by loading both fonts from Google Fonts using the production code snippet above. If you are using the Google Fonts link, both Fira Code and IBM Plex Sans load from a single URL. The Google Fonts API serves fonts from Google's global CDN with automatic version updates. For self-hosting or a design token approach, copy both the heading and body font-face declarations and assign them to distinct CSS custom properties.
In your CSS, set the heading font family on all h1 to h6 elements, and the body font family on the body or p selector. Using CSS custom properties for font families makes it easy to swap fonts across the entire site by editing one line.
This pairing works best when the heading size creates clear visual hierarchy above the body text. A common starting ratio is 2.5 to 3 times the body font size for h1, stepping down by approximately 1.2× for each subsequent heading level. Use the type scale calculator to generate a mathematically coherent scale.
Line-height for body text should sit between 1.4 and 1.6 times the font size for comfortable reading. Headings benefit from tighter line-height, 1.1 to 1.25 times, to bring the lines close enough that they read as a single unit rather than a list.
Related Pairings
View allThe art of typography
Good typography is the visible voice of design, quiet when it should be, loud when it must.
PreviewIBM Plex Mono + IBM Plex Sans
IBM Plex Mono headings over IBM Plex Sans body. A common pattern in developer docs where section titles are set in monospace and prose in a humanist sans.
The art of typography
Good typography is the visible voice of design, quiet when it should be, loud when it must.
PreviewIBM Plex Sans + IBM Plex Serif
IBM Plex Sans headings over IBM Plex Serif body. A unified corporate family where sans and serif were drawn to sit on the same grid.
The art of typography
Good typography is the visible voice of design, quiet when it should be, loud when it must.
PreviewIBM Plex Sans + Lora
IBM Plex Sans headings over Lora body. A neutral technical sans for section titles and a calligraphic serif for long-form prose. Used in product docs and editorial corporate sites.
Frequently Asked Questions
- What makes a good font pairing?
- A good pairing creates contrast through typeface classification while maintaining harmony in style, x-height, and overall proportion. The heading typeface should be visually distinct from the body typeface, a serif with a sans-serif, a geometric with a humanist, so the reader instantly understands the hierarchy without needing to read the text. At the same time, the two faces should share enough character that they feel like they belong to the same design system.
- Can I swap the heading and body fonts?
- This pairing is designed with Fira Code as the heading and IBM Plex Sans as the body. Swapping them, using IBM Plex Sans for headings and Fira Code for body, is technically possible but typically not recommended. Each typeface is chosen for its strengths at its intended size range. Fira Code has design characteristics that work best at display sizes, and IBM Plex Sans is optimised for sustained reading at body sizes.
- Which CSS weights should I use for this pairing?
- For headings, this pairing is designed to work with 500 or 600 or 700 weights. For body text, 400 or 500 weights provides the best balance of legibility and visual weight. If you are using a variable font, you can fine-tune the weight to match your layout exactly rather than snapping to fixed steps.
- Is this pairing free for commercial use?
- Both Fira Code (OFL-1.1) and IBM Plex Sans (OFL-1.1) are open-source fonts with permissive licenses. They can be used in personal and commercial projects, including client work, without attribution requirements. Confirm with your legal team if you are building a product that redistributes fonts, since some uses have specific license requirements.
Want a Different Combination?
Try the deterministic pairing generator or open the typography playground to mix your own.