Fontlog
All typefaces

Recursive

by Stephen Nixon · ArrowType · 2020 · variable

One variable family that morphs from a warm sans to a code mono, with a Casual axis that adds marker-pen flair.

Recursive is five typefaces pretending to be one file. The MONO axis slides it from a proportional sans to a fixed-width code font; CASL warms it from neutral to hand-drawn; CRSV and slnt handle the italic. In practice you pick two or three settings and never touch them again — but having sans and mono that are unmistakably siblings is genuinely useful for docs and dev tools.

The catch is discipline. With this many axes it’s easy to ship an inconsistent set of instances, and the heaviest weights (up to 1000) get very dense. Decide your combinations up front and lock them into CSS custom properties.

Best for

Where Recursive earns its place — and why. My opinion, not a rule.

Get it

Pick the one that fits your setup. Self-hosting is best for production; the CDN link is quickest to try.

npm (Fontsource) bash
pnpm add @fontsource-variable/recursive
# npm install @fontsource-variable/recursive
# yarn add @fontsource-variable/recursive
Import & use ts
import '@fontsource-variable/recursive';

/* then, in your CSS */
font-family: 'Recursive Variable', sans-serif;

Fontsource appends “Variable” to the family name for variable fonts — use “Recursive Variable”, not “Recursive”.

next/font tsx
import { Recursive } from 'next/font/google';

const recursive = Recursive({
  subsets: ['latin'],
  display: 'swap',
  axes: [],
});

// <body className={recursive.className}>

Self-hosted and optimised at build time — no network request to Google.

Google Fonts (CDN) html
<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=Recursive:slnt,wght,CASL,CRSV,MONO@-15..0,300..1000,0..1,0..1,0..1&display=swap"
  rel="stylesheet"
/>

/* CSS */
font-family: 'Recursive', sans-serif;

Quickest to paste in, but adds a third-party request. Prefer self-hosting for production.

Self-host css
/* Download the OFL-1.1 files from the source below, then: */
@font-face {
  font-family: 'Recursive';
  src: url('/fonts/recursive.woff2') format('woff2');
  font-weight: 300 1000;
  font-display: swap;
}

Files: https://github.com/arrowtype/recursive

AI / agent prompt prompt
Add the "Recursive" font to this project.

- CSS family name once loaded: 'Recursive Variable'
- Fallback stack: sans-serif
- Variable font. Axes: wght 300–1000, MONO 0–1, CASL 0–1, slnt -15–0, CRSV 0–1
- Fontsource package (self-hosted, npm): @fontsource-variable/recursive
- next/font/google export name: Recursive
- Google Fonts CDN family param: Recursive:slnt,wght,CASL,CRSV,MONO@-15..0,300..1000,0..1,0..1,0..1
- License: OFL-1.1 — Free for commercial use — self-host, bundle, and modify freely; only reselling the font files on their own is prohibited.
- Source: https://github.com/arrowtype/recursive

Detect how this project already loads fonts (Fontsource import, next/font, Tailwind @theme, plain @font-face) and follow that pattern. Prefer self-hosting over the Google Fonts CDN link for production.

Paste into Claude Code, Codex, T3 Code, Cursor or similar — it has what an agent needs to wire the font up itself.

Seen on

Real sites using Recursive. Click through to see it live.

If you like this, try

Pairs well with