Seven monospace families, and the difference that matters on screen

There are seven monospace families in the 150 most-used Google Fonts, and every one of them is under the SIL Open Font License, so the licence is not the thing that separates them. What separates them is a short list of measured differences, and most of those differences never come up in the arguments people have about coding fonts.

The one that matters most for code on a screen is whether the family has a width axis. Exactly one of the seven does. A width axis is the only way to fit a long line into a fixed frame without switching typeface or dropping the point size, which is the single most common problem when code appears in a video rather than in an editor.

7
families in the category
5 of 7
expose a variable axis
1 of 7
expose a width axis
6.8x
between the smallest and largest download

The whole category, on the fields that differ

FamilyRankWeightsVariable axesScriptsSize
Roboto Mono177 + 7iwght 100‑7006186KB
Geist Mono579 + 9iwght 100‑9006173KB
Inconsolata578 + 0iwdth, wght3339KB
DM Mono603 + 3istatic250KB
JetBrains Mono628 + 8iwght 100‑8006185KB
Source Code Pro668 + 8iwght 200‑9007189KB
IBM Plex Mono1037 + 7istatic5138KB

Weights counts roman styles, with matched italics after the plus. Families with one axis show its range; families with several show the first three axis names and a count of the rest, with full ranges in the profiles below. Rank is the position within the 150 families our census covers. Every name links to its own page with full licence terms.

Why the usual comparison misses

Coding font comparisons are written for editors. They weigh ligatures, they weigh how sharply a zero is slashed, and they assume the reader will spend eight hours a day inside the result. Those are the right questions for an editor, where the text reflows, the reader controls the size, and nothing is ever compressed.

Code on a screen is a different problem. The frame is fixed, the size is chosen once, the viewer cannot zoom, and the whole thing is going through video compression that treats fine detail as noise to be discarded. Under those constraints the questions change. Can a long line be made to fit without shrinking the type? Is there a real italic, or will the renderer fake one? How many weights are there to build a hierarchy from? None of those are matters of taste, and all of them are recorded in the font metadata.

The width axis, and why only one family has it

A variable font exposes named axes that can be set anywhere in a range rather than at fixed steps. Almost every variable font here exposes weight, which is the familiar one. Inconsolata additionally exposes width, from 50 to 200, and it is the only family in the set that does.

That single axis solves the fixed-frame problem directly. A line that overruns by fifteen per cent can be condensed by fifteen per cent, and it is still Inconsolata, still monospaced, still the same weight and colour on the screen. The alternative in every other family is to reduce the point size, which costs legibility everywhere on the frame, or to switch to a condensed face from a different family, which changes the look of the code halfway through a sequence.

This is worth being precise about, because a width axis is not a licence to distort type. Squeezing a face in a graphics program scales the strokes along with everything else and produces the thin, smeared verticals that make condensed text look cheap. A real width axis is drawn: the designer has decided what the letterforms should be at every width, and the vertical stems hold their weight across the range. The axis is the difference between condensing type and pretending to.

Italics are not guaranteed

Six of the seven families ship italic styles, matched to each roman weight. Inconsolata ships none.

That matters more than it sounds, because software does not refuse to render an italic that does not exist. It synthesises one by slanting the roman, which produces exactly the distorted verticals the width axis discussion above is about. If a syntax theme uses italics for comments or types, and many do, a family without italics will silently produce faked ones. The code will still be readable and it will look slightly wrong in a way that is hard to name.

So the two headline facts about Inconsolata point in opposite directions. It is the only family here that can be condensed properly, and it is the only one that cannot be italicised at all. Which of those matters more depends entirely on whether the frame is tight or the theme is expressive.

Download size is a production constraint, not a web one

The size column spans a factor of nearly seven, from DM Mono at 50KB to Inconsolata at 339KB. For a web page that difference is real but manageable, and it is what subsetting exists for.

For a production it is a different kind of number. A variable font with a wide axis range carries the whole range in the file, which is why the two largest entries here are also the two with the most axis territory. If a title sequence is being rendered on a machine that has to load every asset for every frame, and if the font is one of forty being loaded, the weight is worth knowing. If the code is going into a single still frame, it is not worth a second of thought. The number is here because it is measured, not because it is always important.

Script coverage decides whether subtitles can use the same face

Script coverage runs from two subsets on DM Mono to seven on Source Code Pro. This is the field that quietly decides whether one family can carry a whole project.

A monospace face in a video is rarely only code. It ends up in file paths, in terminal output, in on-screen labels, and often in subtitles or captions that have to be localised. A family covering Latin and Latin Extended handles most Western European languages and stops there. A family that also covers Cyrillic and Greek can carry a Russian or Greek localisation in the same typeface, which is the difference between one design decision and three. Nothing about the design changes; the question is only whether the characters exist.

The seven, one at a time

Roboto Mono

Rank 17 · Christian Robertson · OFL-1.1

  • One of only 3 here covering Greek
  • The highest-ranked family in the set at number 17
  • A weight axis reaching down to hairline at 100

The default in the sense that it is the highest-ranked monospace family here by a clear margin, and the one most viewers will have seen without registering it. Seven weights with matched italics and a weight axis from 100 to 700 is a complete kit for building hierarchy inside a code block, and six script subsets cover most localisation work. It has no width axis, so a long line has to be handled by reducing size or reflowing.

Geist Mono

Rank 57 · Andrés Briganti, Mateo Zaragoza, Guillermo Rauch, Evil Rabbit, José Rago, Facundo Santana · OFL-1.1

  • The only family here covering the extended symbols set
  • The most roman weights in the set at 9
  • A weight axis reaching down to hairline at 100
  • A credited team of 6
  • The widest weight range here, 100 to 900

The widest weight range in the set, running the full 100 to 900, with nine weights and nine matched italics. That is more hierarchy than most code blocks will ever need, which makes it useful when one face has to carry both the code and the interface labels around it. It is also the only family here that ships the extended symbols subset, so arrows, box-drawing characters and technical marks are present rather than falling back to whatever the system supplies, which is the usual reason a terminal screenshot renders with one mismatched glyph in it.

Inconsolata

Rank 57 · Raph Levien · OFL-1.1

  • A width axis (50 to 200)
  • No italic styles at all
  • The largest download in the set at 339KB

The only family here carrying a width axis, running 50 to 200, and that is the reason to reach for it: a line that does not fit can be made to fit, properly, without changing typeface or point size. The counterweight is that it ships no italic at all, so any theme leaning on italics gets a synthesised slant. It is also the largest download in the set at 339KB, and it covers the fewest scripts alongside DM Mono at three, so it is a Latin-first choice.

DM Mono

Rank 60 · Colophon Foundry · OFL-1.1

  • Static instances only, no variable axis
  • The smallest download in the set at 50KB
  • The narrowest script coverage in the set at 2 subsets
  • The fewest roman weights in the set at 3

The lightweight option, at 50KB roughly a seventh of Inconsolata, with three weights and three matched italics and no variable axis. The narrow specification is the point: it is a face for a single confident setting rather than a system to build a hierarchy in. Two script subsets is the narrowest coverage here, so it is a Latin-only choice in practice.

JetBrains Mono

Rank 62 · JetBrains, Philipp Nurullin, Konstantin Bulenkov · OFL-1.1

  • One of only 3 here covering Greek
  • A weight axis reaching down to hairline at 100
  • A credited team of 3

Eight weights, eight matched italics, a weight axis from 100 to 800 and six script subsets, which puts it within a hair of Roboto Mono on every field measured here. It is credited to a team of three, one of only two team credits in the set. The honest reading is that the specification gives no reason to prefer it over Roboto Mono and none to avoid it: the two are interchangeable on paper, and the choice between them comes down to the drawing, which is the part this page will not pretend to have measured.

Source Code Pro

Rank 66 · Paul D. Hunt · OFL-1.1

  • One of only 3 here covering Greek
  • The only family here covering extended Greek
  • The widest script coverage in the set at 7 subsets

The widest script coverage in the set at seven subsets, and the only family here carrying extended Greek. That is the fact worth taking away: if one monospace family has to serve a project that will be localised past Western Europe, this is the one whose character set runs out last. Eight weights with matched italics and a weight axis from 200 to 900 make it a full system rather than a single setting, though the axis floor of 200 means it has no true hairline.

IBM Plex Mono

Rank 103 · Mike Abbink, Bold Monday · OFL-1.1

  • Static instances only, no variable axis
  • The lowest-ranked family in the set at number 103

The lowest-ranked family in the set at 103, and one of only two here with no variable axis, shipping seven static weights and seven matched italics instead. Static instances are not a shortcoming: they are seven files that do exactly what they say, which is easier to reason about in a render pipeline than an axis that can be set to any value between two numbers and will be set slightly differently by two people. It is the monospace member of a family that also spans sans and serif, which is the reason to pick it when the code and the text around it should look related rather than merely adjacent.

Common questions

How many monospace fonts are in the 150 most-used Google Fonts?

Seven. Monospace is the smallest of the five categories in that set, behind Sans Serif at 95, Serif at 26, Display at 13 and Handwriting at 8. Despite being the smallest category it reaches higher than most: Roboto Mono ranks 17th overall, better than any serif except two and better than every display and handwriting face.

Which monospace font can be condensed to fit a line?

Inconsolata, and only Inconsolata. It exposes a width axis running from 50 to 200, which lets a line be narrowed without changing typeface, weight or point size. The other six families expose a weight axis or no axis at all, so fitting a long line means reducing the size or reflowing the text.

Do all of these monospace fonts have italics?

No. Six of the seven ship italic styles matched to their roman weights. Inconsolata ships none, so any software asked for an italic will synthesise one by slanting the roman. That matters for syntax themes that set comments or type names in italic.

Are these monospace fonts free for commercial use?

All seven are under the SIL Open Font License 1.1, which permits commercial use, use in monetised video, broadcast, merchandise, client work and logos, with no attribution required. The licence does forbid selling the font software itself on its own, and requires that a modified version not reuse the Reserved Font Name. Neither restriction affects using the font in a video or a design.

Which monospace font is the smallest download?

DM Mono at roughly 50KB, against 339KB for Inconsolata at the other end. Size tracks how much axis territory a family carries: the two largest entries are also the two with the widest variable ranges, because a variable font holds its whole range in the file.

Method and sources. Category, licence and popularity rank come from our own typeface census, which reads the Google Fonts metadata API and the licence files in the google/fonts repository, and records a licence only with a source URL and a verification date. Weights, italics, variable axes, script subsets, byte size and dates come from the Google Fonts metadata API read on the build date shown above. Popularity rank is the position within the 150 families the census covers, not Google’s global ordering. Every family named here links to its own page on this site with its full licence terms. Built 2026-08-29.