# Free alternatives to SF Pro

SF Pro is a commercial neo-grotesque sans from Apple (https://developer.apple.com/fonts/). Free to use only for designing Apple-platform software; not licensed for other web use. The name is used only to identify the typeface; BrandSweets does not host or embed it. Below: the 8 closest free, open-licensed families, ranked by a published deterministic score (https://brandsweets.com/fonts/alternatives/methodology).

## Reference profile

- Slug: `sf-pro`
- Also searched as: San Francisco, SF Pro Display, SF Pro Text
- Category: sans · Class: neo-grotesque
- Traits: neutral, modern, clean, technical, monoline
- Roles: ui, body, heading
- Metrics: x-height 0.53, cap height 0.71, normal width, low contrast (approximate, publicly documented)
- Languages: latin, latin-ext, cyrillic, greek · Variable: yes
- Page: https://brandsweets.com/fonts/alternatives/sf-pro

## Score

`score = 0.35·classification + 0.25·metrics + 0.20·traits + 0.10·useCase + 0.05·language + 0.05·variable`; every axis in [0, 1]. A family gate runs first: specialist families (blackletter, script, glyphic, stencil, monospace, pixel) only list same-family fonts; elsewhere a cross-family mismatch is capped at 0.2. Curated picks are listed first, then pure formula; ties break on popularity, then slug.

## Ranked alternatives

### 1. Inter — 89% (curated)

- Slug: `inter` · sans · OFL-1.1 · Rasmus Andersson · static
- Page: https://brandsweets.com/fonts/inter · font.md: https://brandsweets.com/fonts/inter/font.md
- Why (curated): Designed for UI at the same sizes; nearly identical x-height, apertures and tabular figures.
- Classification (×0.35): 1.00 — Same class: neo-grotesque.
- Metrics (×0.25): 0.92 — x-height 0.55 vs 0.53 for SF Pro (near-identical); cap height 0.73 vs 0.71 for SF Pro (near-identical); both normal width; both low stroke contrast.
- Traits (×0.20): 0.80 — Shares clean, modern, monoline, neutral (4 of 5 traits).
- Role (×0.10): 1.00 — Both suit body, heading, ui.
- Language (×0.05): 1.00 — Covers all of SF Pro's subsets (cyrillic, greek, latin, latin-ext).
- Variable (×0.05): 0.00 — Static instances only; SF Pro is variable.
- Family gate: pass — Same family: sans.

### 2. Roboto — 85% (curated)

- Slug: `roboto` · sans · Apache-2.0 · Christian Robertson, ParaType, Font Bureau · static
- Page: https://brandsweets.com/fonts/roboto · font.md: https://brandsweets.com/fonts/roboto/font.md
- Why (curated): Android's system UI sans — the closest platform equivalent in feel and coverage.
- Classification (×0.35): 1.00 — Same class: neo-grotesque.
- Metrics (×0.25): 0.99 — x-height 0.53 vs 0.53 for SF Pro (near-identical); cap height 0.71 vs 0.71 for SF Pro (near-identical); both normal width; both low stroke contrast.
- Traits (×0.20): 0.50 — Shares modern, monoline, neutral (3 of 6 traits).
- Role (×0.10): 1.00 — Both suit body, heading, ui.
- Language (×0.05): 1.00 — Covers all of SF Pro's subsets (cyrillic, greek, latin, latin-ext).
- Variable (×0.05): 0.00 — Static instances only; SF Pro is variable.
- Family gate: pass — Same family: sans.

### 3. Instrument Sans — 78% (curated)

- Slug: `instrument-sans` · sans · OFL-1.1 · Rodrigo Fuenzalida, Jordan Egstad · static
- Page: https://brandsweets.com/fonts/instrument-sans · font.md: https://brandsweets.com/fonts/instrument-sans/font.md
- Why (curated): Neutral UI sans with a width axis, similar to SF Pro's Display/Text/Compact range.
- Classification (×0.35): 1.00 — Same class: neo-grotesque.
- Metrics (×0.25): 0.93 — x-height 0.51 vs 0.53 for SF Pro (near-identical); cap height 0.72 vs 0.71 for SF Pro (near-identical); both normal width; both low stroke contrast.
- Traits (×0.20): 0.33 — Shares monoline, neutral (2 of 6 traits).
- Role (×0.10): 1.00 — Both suit body, heading, ui.
- Language (×0.05): 0.50 — Covers latin, latin-ext; lacks cyrillic, greek.
- Variable (×0.05): 0.00 — Static instances only; SF Pro is variable.
- Family gate: pass — Same family: sans.

### 4. Manrope — 87%

- Slug: `manrope` · sans · OFL-1.1 · Mikhail Sharanda · static
- Page: https://brandsweets.com/fonts/manrope · font.md: https://brandsweets.com/fonts/manrope/font.md
- Classification (×0.35): 1.00 — Same class: neo-grotesque.
- Metrics (×0.25): 0.95 — x-height 0.54 vs 0.53 for SF Pro (near-identical); cap height 0.72 vs 0.71 for SF Pro (near-identical); both normal width; both low stroke contrast.
- Traits (×0.20): 0.67 — Shares clean, modern, monoline, neutral (4 of 6 traits).
- Role (×0.10): 1.00 — Both suit body, heading, ui.
- Language (×0.05): 1.00 — Covers all of SF Pro's subsets (cyrillic, greek, latin, latin-ext).
- Variable (×0.05): 0.00 — Static instances only; SF Pro is variable.
- Family gate: pass — Same family: sans.

### 5. Roboto Flex — 82%

- Slug: `roboto-flex` · sans · OFL-1.1 · Font Bureau, David Berlow, Santiago Orozco, Irene Vlachou, Ilya Ruderman, Yury Ostromentsky, Mikhail Strukov · static
- Page: https://brandsweets.com/fonts/roboto-flex · font.md: https://brandsweets.com/fonts/roboto-flex/font.md
- Classification (×0.35): 1.00 — Same class: neo-grotesque.
- Metrics (×0.25): 0.96 — x-height 0.51 vs 0.53 for SF Pro (near-identical); cap height 0.71 vs 0.71 for SF Pro (near-identical); both normal width; both low stroke contrast.
- Traits (×0.20): 0.40 — Shares monoline, neutral (2 of 5 traits).
- Role (×0.10): 1.00 — Both suit body, heading, ui.
- Language (×0.05): 1.00 — Covers all of SF Pro's subsets (cyrillic, greek, latin, latin-ext).
- Variable (×0.05): 0.00 — Static instances only; SF Pro is variable.
- Family gate: pass — Same family: sans.

### 6. Geist — 82%

- Slug: `geist` · sans · OFL-1.1 · Andrés Briganti, Mateo Zaragoza, Guillermo Rauch, Evil Rabbit, José Rago, Facundo Santana · static
- Page: https://brandsweets.com/fonts/geist · font.md: https://brandsweets.com/fonts/geist/font.md
- Classification (×0.35): 1.00 — Same class: neo-grotesque.
- Metrics (×0.25): 1.00 — x-height 0.53 vs 0.53 for SF Pro (near-identical); cap height 0.71 vs 0.71 for SF Pro (near-identical); both normal width; both low stroke contrast.
- Traits (×0.20): 0.40 — Shares monoline, neutral (2 of 5 traits).
- Role (×0.10): 1.00 — Both suit body, heading, ui.
- Language (×0.05): 0.75 — Covers cyrillic, latin, latin-ext; lacks greek.
- Variable (×0.05): 0.00 — Static instances only; SF Pro is variable.
- Family gate: pass — Same family: sans.

### 7. Arimo — 82%

- Slug: `arimo` · sans · Apache-2.0 · Steve Matteson · static
- Page: https://brandsweets.com/fonts/arimo · font.md: https://brandsweets.com/fonts/arimo/font.md
- Classification (×0.35): 1.00 — Same class: neo-grotesque.
- Metrics (×0.25): 0.94 — x-height 0.53 vs 0.53 for SF Pro (near-identical); cap height 0.69 vs 0.71 for SF Pro (close); both normal width; both low stroke contrast.
- Traits (×0.20): 0.40 — Shares monoline, neutral (2 of 5 traits).
- Role (×0.10): 1.00 — Both suit body, heading, ui.
- Language (×0.05): 1.00 — Covers all of SF Pro's subsets (cyrillic, greek, latin, latin-ext).
- Variable (×0.05): 0.00 — Static instances only; SF Pro is variable.
- Family gate: pass — Same family: sans.

### 8. Golos Text — 81%

- Slug: `golos-text` · sans · OFL-1.1 · Alexandra Korolkova, Vitaly Kuzmin · static
- Page: https://brandsweets.com/fonts/golos-text · font.md: https://brandsweets.com/fonts/golos-text/font.md
- Classification (×0.35): 1.00 — Same class: neo-grotesque.
- Metrics (×0.25): 0.97 — x-height 0.53 vs 0.53 for SF Pro (near-identical); cap height 0.70 vs 0.71 for SF Pro (near-identical); both normal width; both low stroke contrast.
- Traits (×0.20): 0.40 — Shares monoline, neutral (2 of 5 traits).
- Role (×0.10): 1.00 — Both suit body, heading, ui.
- Language (×0.05): 0.75 — Covers cyrillic, latin, latin-ext; lacks greek.
- Variable (×0.05): 0.00 — Static instances only; SF Pro is variable.
- Family gate: pass — Same family: sans.

## Self-host Inter (woff2)

- 100 normal: https://fonts.brandsweets.com/inter/inter-100.woff2
- 200 normal: https://fonts.brandsweets.com/inter/inter-200.woff2
- 300 normal: https://fonts.brandsweets.com/inter/inter-300.woff2
- 400 normal: https://fonts.brandsweets.com/inter/inter-400.woff2
- 500 normal: https://fonts.brandsweets.com/inter/inter-500.woff2
- 600 normal: https://fonts.brandsweets.com/inter/inter-600.woff2
- 700 normal: https://fonts.brandsweets.com/inter/inter-700.woff2
- 800 normal: https://fonts.brandsweets.com/inter/inter-800.woff2
- 900 normal: https://fonts.brandsweets.com/inter/inter-900.woff2
- 100 italic: https://fonts.brandsweets.com/inter/inter-100i.woff2
- 200 italic: https://fonts.brandsweets.com/inter/inter-200i.woff2
- 300 italic: https://fonts.brandsweets.com/inter/inter-300i.woff2
- 400 italic: https://fonts.brandsweets.com/inter/inter-400i.woff2
- 500 italic: https://fonts.brandsweets.com/inter/inter-500i.woff2
- 600 italic: https://fonts.brandsweets.com/inter/inter-600i.woff2
- 700 italic: https://fonts.brandsweets.com/inter/inter-700i.woff2
- 800 italic: https://fonts.brandsweets.com/inter/inter-800i.woff2
- 900 italic: https://fonts.brandsweets.com/inter/inter-900i.woff2

## Connect an agent

Point any MCP client at the BrandSweets fonts endpoint to get this list with scores, or search the catalog:

- Endpoint: https://mcp.brandsweets.com/fonts/mcp
- Tools: `find_alternatives` (e.g. `find_alternatives({ commercialFont: "sf-pro", limit: 8 })`), `list_commercial_fonts`, `list_fonts`, `suggest_fonts`.
