# Martian Mono: a brutalist monospaced font built for interfaces

> Martian Mono is Evil Martians' open source monospaced font, derived from Martian Grotesk and released under the SIL Open Font License. It ships as a variable font plus 28 static styles, and it is aimed at UI work as much as at code.

**evilmartians/mono** — Free and open-source monospaced font from Evil Martians

- Repository: https://github.com/evilmartians/mono
- Stars: 2,735 · Forks: 23
- Language: Unknown
- License: OFL-1.1
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/evilmartians-mono

## What Martian Mono solves, and who it is actually for

Most monospaced fonts are designed for source code first and retrofitted into interfaces later. Martian Mono inverts that. It is a monospaced version of Martian Grotesk, and the README states that it inherits Grotesk's "brutalist and eye-catching aesthetics" along with its metrics equilibrium. The stated goal is a typeface that works for "web developers and designers who believe in a systematic approach to design."

The concrete mechanism behind that claim is vertical metrics. According to the README, the typeface has a tall x-height and vertical metrics that guarantee equal space above the cap height and under the baseline. That is what makes it sit evenly inside buttons, inputs, lists and forms without per-component padding hacks. A font that is only tuned for code does not give you that; you end up nudging line boxes by a pixel or two wherever text meets a border.

So the audience is narrower than "anyone who writes code." It is people building product UI who also want their monospace text, whether that is a code block in documentation or a numeric column in a table, to come from the same design family as the rest of the product. If you only need a terminal font and nothing else, the interface argument does not apply to you, and the width axis is mostly dead weight.

## The width and weight axes, and why the naming is confusing

Martian Mono is not one font. It is a variable font plus 28 static styles spanning four widths and seven weights. The README lists the widths with both short names and CSS values: Semi Wide (sWd) at 112.5%, Standard (Std) at 100%, Narrow (Nr) at 87.5%, and Condensed (Cn) at 75%, which map to the CSS keywords semi-expanded, normal, semi-condensed and condensed.

The weights run Thin 100, Extra Light 200, Light 300, Regular 400, Medium 500, Bold 700 and Extra Bold 800. Note what is missing: there is no 600, and the jump from Medium to Bold skips the semibold slot that many design systems expect. If your type scale assumes a semibold, you will be choosing between 500 and 700.

The naming convention matters in practice because it leaks into configuration files. The README says that if your application is configured through a text file, you use `Martian Mono` or `Martian Mono VF` for the default variant, which is Martian Mono Std Rg, or you specify a name like `MartianMono-NrRg` for the Narrow Regular variant. That concatenated form is what you will be typing into terminal configs, and getting the width and weight abbreviations in the right order is the most common place to make a mistake.

## Installing Martian Mono and setting it up for the first time

There is no build step required for normal use. The README points to the releases page for the latest package and to Google Fonts for embedding. On macOS, the documented route is Homebrew, which installs the cask:

```bash
brew install --cask font-martian-mono
```

After that, the README says to pick `Martian Mono` or `Martian Mono VF` in your application's font picker along with the variant you want. On Windows and for manual installs, the instruction is to download `ttf` files from the releases page and install them; on macOS manually, download `otf`. The README's format guidance is worth following: prefer `ttf` for variable and `otf` for static on macOS, and `ttf` on Windows.

For the web, you download the `woff2` package from the releases page to get the variable font in WOFF2 format. The README links a WOFF2 browser support matrix rather than restating it, which is the honest move here.

One setup detail that will save you a support thread: the static font version is named `Martian Mono` and the variable font family is `Martian Mono VF`, deliberately, so both can be installed side by side without conflict. If you install both and your font picker shows two entries, that is the intended behaviour, not a duplicate install.

Finally, the README recommends installing several static fonts rather than a single variable font on the desktop, for better compatibility with terminal emulators and text editors. That is a real constraint on the variable-font story: on the web the variable file is the efficient choice, on the desktop it is the less compatible one.

## Line spacing, dark backgrounds and the tuning the README expects you to do

The README is candid that a fresh install may look wrong. It shows a comparison and notes that the font "might look quite confined" at default spacing, then suggests trying 120% or 140%, or pixel paddings of 1, 2 or 4. For terminal emulators it gives two concrete paths: in macOS Terminal, Preferences then Profiles then a profile then Text then Font, where the font picker dialog exposes a Line Spacing property; in iTerm 2, Preferences then Profiles then a profile then Text, where the line spacing is the `n/n` symbol that looks like a fraction, expressed as a percentage with 100% as the default.

The README also gives size and line height pairs rather than a single recommendation: 7.5/10 (or 14, 18), 10/12 (or 16, 20), 12.5/14 (or 18, 22) and 15/20 (or 24, 28) pixels. The pattern is that the increments are small, which is a consequence of the glyph heights sticking to the pixel grid at common sizes.

There is also a counterintuitive note about dark themes. The README advises choosing a lighter variant if white text on a dark background looks too bold, giving Std Lt instead of Std Rg as the example. This is a genuine difference from how most people configure a terminal font, where you pick a weight once and stop thinking about it. Martian Mono asks you to pick a weight relative to your background colour.

## Ligatures: two sets, and one you have to turn on

Martian Mono ships two sets of coding ligatures, and the default is not the one everyone expects. The default set transforms sequences like `-->` into a standard arrow. The second set is described as spacing ligatures, where `-->` stays two hyphens and a greater-than sign but gets subtle spacing and vertical alignment adjustments.

That second set is not enabled by default. According to the README, you activate it through the Stylistic Set #03 OpenType feature. This is a design position worth naming plainly: the font's authors think an arrow glyph is the better default, and the conservative option is opt-in. If you have ever had a ligature break a diff view or a screenshot in a bug report, you know why someone would want the spacing set, and you will need to configure it rather than assume it.

The README also notes that the font comes with OpenType and TrueType hinting, which is the mechanism behind the legibility claim at small sizes. Hinting is expensive to produce and easy to skip, so its presence is a signal about where the effort went.

## Where Martian Mono is the wrong choice

The README does not document language coverage, character set extensions beyond the CJK-free sample image, or a fallback strategy. If your product ships in scripts that a Latin-first grotesk does not cover, you cannot tell from the documentation whether Martian Mono handles them, and the repository gives you no coverage table to check. That silence is the answer: verify before you build a type stack on it.

The second limitation is the desktop variable-font story. The README explicitly recommends installing several static fonts instead of the variable font for terminal and editor compatibility. That means the tidy one-file mental model applies to the web, not to your machine. On the desktop you are managing 28 potential static styles, and the README's own advice is to install the ones you need rather than the whole set.

The third is weight granularity. Seven weights with a gap at 600 is fine for a font, less fine for a design system that already defines a semibold token. You will either remap that token or accept a heavier or lighter heading than intended.

And if you want a monospaced font with a conventional, neutral look, this is the wrong family. The README describes the aesthetic as brutalist and eye-catching, which is the opposite of what you want when the typeface should disappear behind the content.

## How it compares to JetBrains Mono and Space Mono

JetBrains Mono is the closest comparison point, and the difference is in stated intent rather than features. JetBrains Mono is a code font that people also use in interfaces. Martian Mono is framed from the start as a font for interface design that happens to be monospaced, with the vertical metrics argument about buttons, inputs, lists and forms as the justification. If your decision is driven by how text sits inside a control, that framing is the relevant difference; if it is driven by how a bracket looks in a function signature, both fonts address it.

Space Mono is the other reference point people reach for, and the gap is more structural. Space Mono is a static family. Martian Mono ships a variable font with a width axis, so a single file can cover Semi Wide through Condensed on the web, and the README's CSS percentage table maps those widths to real CSS keywords. If you need to compress a monospaced label to fit a narrow column without switching families, that axis is the mechanism, and a static family does not offer it.

The trade-off is that a width axis is only useful if your tooling honours it. In a terminal or editor that exposes a font picker and nothing else, you get the static styles and the axis is irrelevant. The variable font earns its place in CSS, not in your shell profile.

## Licence, maintenance and what updating costs

Martian Mono is released under the SIL Open Font License 1.1, and the repository carries an OFL.txt at the top level. The practical implication of OFL for a product team is that embedding the font in an application is within the licence's intent, but the licence has its own conditions around redistribution and naming, and those conditions are not something this article can interpret for you. Read OFL.txt rather than a summary of it.

The release history is uneven. v1.0.0 landed on 2022-12-29, v1.1.0 on 2025-02-10, and the last push to the repository was on 2026-07-23. The gap between v1.0.0 and v1.1.0 is more than two years, so treating a version bump as a routine event is a mistake. The repository is not archived, but a font is not a library: an upgrade can change glyph shapes, metrics or hinting, and any of those can shift your line breaks.

Upgrading therefore carries a visual regression risk that a version number does not communicate. If you self-host the WOFF2 package, pin it and treat a version change as a design review, not a dependency bump. The repository also carries requirements.txt listing fontmake, fontbakery, gftools[qa], drawbot-skia, sh and bumpfontversion, which tells you the source in `sources/` is built with a Python toolchain rather than edited by hand. That matters only if you intend to modify the font, and if you do, you are maintaining a build environment, not a stylesheet.

## Conclusion

Adopt Martian Mono if you are setting UI text, form controls or code in a design system that already leans on Martian Grotesk, or if you want one family that covers both a variable web font and static desktop styles. Skip it if you need a font with broad language coverage, or if you depend on a terminal or editor that only handles a single installed variant cleanly. Before you commit, open the releases page and confirm which of the four width variants and seven weights you actually need, because installing all 28 static styles is a decision you cannot easily undo in a font picker.

## FAQ

### How do I install Martian Mono on macOS?

The README gives a Homebrew route, `brew install --cask font-martian-mono`, or you can download `otf` files from the releases page and install them manually. After installing, choose `Martian Mono` or `Martian Mono VF` in your application's font picker.

### What is the difference between Martian Mono and Martian Mono VF?

The README states that the static font version is named `Martian Mono` while the variable font family is `Martian Mono VF`, so that both can be installed at the same time without conflicting. Seeing both in a font picker is expected behaviour.

### Which file format should I download for Martian Mono?

The README advises preferring `ttf` for variable and `otf` for static on macOS, and `ttf` for Windows. For the web, it says to download the `woff2` package from the releases page to get the variable font in WOFF2 format.

### How do I switch Martian Mono to the spacing ligature set?

Regular ligatures are enabled by default. According to the README, you activate the spacing ligature set, where `-->` remains two hyphens and a greater-than sign, through the Stylistic Set #03 OpenType feature.

## Sources

- [evilmartians/mono on GitHub](https://github.com/evilmartians/mono)
- [Issues](https://github.com/evilmartians/mono/issues)
- [License: OFL-1.1](https://github.com/evilmartians/mono/blob/main/LICENSE)
- [README](https://github.com/evilmartians/mono/blob/main/README.md)
- [Releases](https://github.com/evilmartians/mono/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/evilmartians-mono
