Plus Jakarta Sans

Replaces: Aeonik (80%) | OFL-1.1 | Updated: Aug 2026

About Plus Jakarta Sans

Classification
sans-serif
Weights
Variable (100-900)
Features
Variable, Italics
SIL Open Font License 1.1

Free to use, modify, and distribute. Can be used commercially without attribution.

What's allowed?
  • Client work
  • SaaS / Web apps
  • YouTube / Video
  • Sell products
  • Print materials

Note: Derivative fonts must use the same license.

Full license guide →
Get Plus Jakarta Sans Free ↗

Plus Jakarta Sans is an open-source geometric sans drawn by Gumpita Rahayu at Tokotype as the typeface for a city-branding programme, then released under the SIL Open Font License. It ships seven weights from 200 to 800, each with a matching italic — fourteen styles — as two variable files, one roman and one italic, each carrying a single wght axis. Google's metadata API gives it a popularity value of 13, shared with DM Sans, with only 20 of the catalogue's 1,942 families ranked ahead of it. Two things to know before committing: the default line box is 1.26 em, and coverage is Latin only — whatever the Google Fonts subset list appears to promise.

What it is, and where it came from

The design credit is Gumpita Rahayu, verified three ways: name ID 9 (Designer) in the shipped binary reads Gumpita Rahayu while name ID 8 (Manufacturer) reads Tokotype; google/fonts' DESCRIPTION.en_us.html says the family was "designed by Gumpita Rahayu from Tokotype"; and the project FONTLOG credits him on every design release — the one ChangeLog entry not in his name, v2.600 of 11 March 2022, is a build-system migration logged by Yanone. Worth stating, because Google's metadata API lists the designer only as the studio name (designer: "Tokotype" in METADATA.pb), so the sidebar Designer byline on the specimen page reads Tokotype alone. The individual credit does reach that page, but only inside the About text Google renders from DESCRIPTION.en_us.html — never in the field most tools, APIs and listings actually read. Tokotype is an Indonesian foundry; the URL in the binary's name ID 11 is https://www.tokotype.com.

This was commissioned work, not a speculative retail release. Both the google/fonts description and the project README say the fonts "were originally commissioned by 6616 Studio for Jakarta Provincial Government program's +Jakarta City of Collaboration identity in 2020". The official microsite words it differently — "+Jakarta City of Collaboration branding designed by 6616 Creative House. Custom Typeface designed & developed by Tokotype Studio" — both are primary, so pick one rather than blending them. Releasing it under the OFL was part of that programme, which is how a municipal identity font ended up among the most-served families on Google Fonts.

On influences the README is specific, and it is the only first-party statement of intent: "Neuzit Grotesk, Futura, and 1930s grotesque sans serif with almost monoline contrast and pointy curves". (google/fonts spells it "Neuzeit Grotesk" and "almost monolinear contrast".) Interwar grotesque skeleton, geometric proportion, contrast kept near flat, curves that come to a point rather than easing off.

The dates need care. Version 1.000 shipped 21 February 2020 per the FONTLOG; the family did not enter the Google Fonts catalogue until 24 March 2022 (date_added in METADATA.pb). Google currently serves 2.071, built with gftools 0.9.30; the upstream repo's latest tag is 2.7.1, published 26 May 2023. One piece of history still misleads people: v1.000 was structured as two optical sub-families, Plus Jakarta Display and Plus Jakarta Text, and the frozen microsite still shows them. The FONTLOG for v2.400, 4 December 2020, records "Removed Plus Jakarta Sans Text Version". Today it is one unified family with no optical sizes.

Design characteristics

Measured from PlusJakartaSans[wght].ttf at the default wght 400, on a 1000-unit em.

The top of the face is unusually tight. X-height 536, cap height 745, and the ascender — yMax of b and d — reaches 757, clearing the capitals by twelve units. Close enough to read as one line, so mixed-case text sets as an even band with almost no peaks above the caps. The x-height/cap ratio of 0.72 is generous without being extreme, matching the foundry's own account: an x-height set "slight taller to provide clear spaces between caps and x-height", with "open counter and balanced spaces". The bottom is less uniform: p and q stop at -200 while g, y and j run to -220, and sTypoDescender sits deeper still at -222.

The default line height is 1.26 em, and that is the most practical fact here for a developer. Typo and hhea metrics agree at 1038 / -222 / 0; Google's metadata reports lineHeight: 1.26 for every style. Drop this into a component library that never sets line-height and every text block arrives pre-leaded more loosely than you intended. usWinAscent is 1296 and usWinDescent 356, so nothing clips — the space is real. Set leading explicitly.

Geometric forms on grotesque bones. Default a is double-storey, g single-storey, G spurless, y carries a curved hooked tail. Contrast is near-monoline and the curves come to points, as the README describes.

There are no ink traps in this typeface, and no softened corners. Rendered at 300px from the shipped binary, every stem and branch junction on n, y, K, R and G is a plain unmodified joint — no notches, no flared cuts. No primary source mentions ink traps, and "softened corners" says the opposite of the foundry's own words: clean cut forms, pointy curves.

Three stylistic sets, three different jobs

The family's most distinctive feature, and the specimen page barely mentions it. There is no salt feature; the alternates live in three sets, named on the official microsite in Indonesian with English glosses that google/fonts repeats:

  • ss01 — Lancip (Sharp). The largest at 175 substitutions, covering G I K U a f g h i j k l m n r t u y and their accented forms.
  • ss02 — Lurus (Straight). The smallest at 48 substitutions, across a j p q r y. It adds straight terminals where the default has none: the a gains a flat foot at the baseline (the outline reaches 555 units instead of 495, and the advance widens from 572 to 594), j, p, q and r each gain a flat spur at the top of the stem, r also gains a full baseline serif, and y's hooked descender straightens into a plain diagonal that stops at -200 instead of curling to -220. Note what it does not do: the a keeps its double-storey construction — bowl below, arm above — in this set and in the other two. The family ships four a glyphs — a, a.ss01, a.ss02, a.ss03 — and all four are double-storey. There is no single-storey a in this typeface.
  • ss03 — Lingkar (Swirl). 133 substitutions across G J K Q R a e g h l m n u y. Where ss01 squares every shoulder outright, this one softens the same corners and saves its curves for the tails: the a's top arm runs dead straight in ss01 and curves in ss03, n loses every curve in ss01 and gets a bowed shoulder in ss03, l picks up a tail that turns right at the baseline, and the diagonal y is replaced by one with a curved descending tail. The t and lowercase j alternates people tend to associate with this set are not in it — they live in ss01.

All three are opt-in; calt is the only contextual feature on by default.

The rest of the feature set, read from the tables: GSUB carries aalt, calt, case, ccmp, dnom, frac, liga, locl, numr, ordn, pnum, sinf, ss01, ss02, ss03, subs, sups, tnum; GPOS carries cpsp, kern, mark. Figures are proportional by default — widths run 371 for one to 732 for zero — and tnum switches to a uniform 600-unit tabular set, added in v2.600. locl handles Azeri, Catalan, Crimean Tatar, Kazakh, Moldovan, Romanian, Tatar and Turkish. Exactly five ligatures ship (fi, fl, ff, ffi, ffl), and there is no dlig, no smcp/c2sc, no onum/lnum, and no zero feature — the zero.tf glyph is the tabular figure, not a slashed zero.

The italics are corrected obliques

post.italicAngle is -8.0, and comparing the italic outlines to the roman glyph by glyph shows a hybrid. Straight-sided glyphs are an exact mechanical shear: least-squares fits give 7.97° for l, 7.95° for I and H, 8.01° for v and 7.98° for one, all with maximum horizontal residual under 2.2 units and zero vertical movement. Add a hook and the fit degrades immediately — f returns 7.79° from the same fit, but with residuals up to 8.3 units and four points that also move vertically — by -8, -3, -4 and -12 units. It is a hooked glyph, so it belongs with the redrawn curves, not with the sheared straights. The curves are genuinely redrawn — point counts differ for o (32 vs 34), n (24 vs 23), a (45 vs 46), g (52 vs 53), y (23 vs 24), O (40 vs 38), and e and S deviate far from any single shear.

So: an optically corrected oblique across the full range, shipped as a second variable font (PlusJakartaSans-Italic[wght].ttf). The letterforms stay roman — the italic a is still double-storey, the g single-storey, the f has no descender. Going italic is a file swap, not an axis move; neither file has a slnt or ital axis.

Where it works

Product and marketing UI is the obvious home, and the weight ladder is the reason more than the drawing: 200 to 800 in steps of 100 with no gaps, so a design system can use 400/500/600/700 for body, emphasis, subheads and headings and get real separation between adjacent tokens.

It suits dashboards and fintech surfaces because tnum is present and works — proportional figures for prose, a 600-unit tabular set for anything that aligns in a column, with fractions, superiors and inferiors alongside. And for brand work, its original job, the stylistic sets are the argument: ss01 alone re-cuts eighteen letters (G I K U a f g h i j k l m n r t u y) across 175 substitutions, enough to give a wordmark a second voice drawn from the same text face.

Where it struggles

Latin only, and the metadata implies otherwise. The binary maps 721 codepoints across 1,188 glyphs: 95 ASCII, 95 Latin-1, 126 Latin Extended-A, 62 Latin Extended-B, 164 Latin Extended Additional (90 of them in the Vietnamese range U+1EA0–U+1EF9), 23 combining diacritics, 24 currency signs, plus punctuation, arrows, maths operators and fractions. Vietnamese is fully covered by design — the v2.400 FONTLOG names "GF Latin Pro & GF Latin Plus" and "Adding support for multiple languages (Incl. Vietnamese)". But Google lists a cyrillic-ext subset for this family and fonts.googleapis.com/css2 will serve you that @font-face block, while the font contains zero codepoints in U+0400–U+052F. The tag is triggered by one character: U+20B4, the hryvnia sign, which happens to fall in that unicode-range. Greek is the same story — Δ, Ω and π only, as maths symbols. Ship Cyrillic or Greek and this face silently falls back.

No small caps, no oldstyle figures, no slashed zero. All three are routine requests in the enterprise and financial UI work this face otherwise fits. smcp, c2sc, onum, lnum and zero do not exist in the file, so font-variant-caps will synthesise, badly.

ExtraLight 200 is a display weight. At 14–16px the near-monoline strokes thin out, especially light-on-dark. Treat 300 as the practical floor for text.

The italics do not carry long emphasis. An 8° corrected oblique is fine for a label, a caption or a pull quote. A page of emphasised editorial copy set in a slanted roman reads as slanted roman.

No siblings. No Plus Jakarta Mono or Serif, and since v2.400 no Display or Text cuts either. A complete system has to pair outside the family.

Which premium fonts it substitutes for

What Plus Jakarta Sans brings to any of these swaps is constant: seven weights with italics, a variable axis, an OFL licence, and a geometric skeleton at near-monoline contrast. What it cannot bring is a match on a signature letterform, non-Latin coverage, or optical sizing.

  • Aeonik (CoType Foundry) and Neue Montreal (Pangram Pangram) are the closest in register — contemporary sans-serifs bought for product and brand work rather than for a quirk. Jakarta reads more overtly geometric than either, with rounder bowls and pointier curve joins, so display sizes look warmer and less neutral. At body size the substitution is convincing.
  • Söhne (Klim Type Foundry) is the loosest of the group. If Söhne was chosen for neo-grotesque neutrality, this is a different animal, and the spurless G is the first thing anyone will spot. Jakarta answers with a variable axis and a seven-step ladder at no licence cost.
  • GT Walsheim (Grilli Type) and Degular (OH no Type Co) are usually picked for personality — rounded terminals in the first case, optical and angled variation in the second. Jakarta has neither. What it offers back is ss03, whose curved tails and legs on l, y, R, Q and K give a display line some character a plain geometric sans lacks.
  • TT Norms Pro (TypeType) is affected by coverage more than shape. If the reason for it was script range, this is not a substitute at all. If it was a clean geometric UI sans with a full weight ladder, it substitutes well.
  • Brown (Lineto), Centra No.1 (Sharp Type), Euclid (Swiss Typefaces), Maison Neue (Milieu Grotesque), Marblis (Fincker Font Cuisine) and Mont (Fontfabric) sit across the same geometric-to-grotesque band, and the summary is identical for all of them: a good tonal substitute, never a metric one. Check the figures and the italic first — that is where these substitutions break.

Pairing Plus Jakarta Sans

Pair on structure, not mood. This is a near-monoline geometric face with a 0.72 x-height ratio and ascenders level with the caps; a companion should differ on at least two of those, or the page reads as an accident rather than a decision.

For editorial work a serif with real stroke contrast does the separating: Source Serif Pro or Literata when the serif carries running text, Newsreader or Playfair Display when it only sets headlines. That partner also fixes Jakarta's weakest spot by giving you a drawn italic to switch into.

There is no Plus Jakarta Mono, so code and fixed-width data need an outside partner — JetBrains Mono or Geist Mono, whose low stroke contrast keeps the page consistent while the fixed widths mark the change of role. For columns of numbers rather than code, use tnum and stay in the family.

Pairing it with itself is the strongest option: 700 headings against 400 body with 500 or 600 for subheads gives three clean tiers out of one variable file, and ss01 on a wordmark adds a fourth voice with no second download. Avoid other geometric sans families at a similar x-height — two faces that are 85% alike look like a mistake, not a system.

Licensing and self-hosting in plain terms

Plus Jakarta Sans is under the SIL Open Font License 1.1, verified four ways: OFL.txt in google/fonts ("Copyright 2020 The Plus Jakarta Sans Project Authors"), license: "OFL" in METADATA.pb, name ID 13 in the binary, and the project microsite. Google's metadata reports isOpenSource: true, isBrandFont: false.

  • You may use it commercially, on the web, in apps, in client work, embedded in PDFs and in products you sell — and you may self-host, subset and modify it.
  • You must keep derivatives under the OFL and pass the licence along with the files.
  • You may not sell the font on its own. Bundling it in something you sell is fine; selling the font as the product is not.

The copyright string names no Reserved Font Name, and none appears in OFL.txt — derivatives still stay under the OFL, but there is no reserved name to work around when naming one.

For self-hosting, two files cover all fourteen styles: PlusJakartaSans[wght].ttf and PlusJakartaSans-Italic[wght].ttf, both carrying a STAT table so named-instance selection behaves. The upstream repository also ships 14 static TTFs (seven weights × roman and italic). Since the whole family is Latin plus Vietnamese, subsetting to latin is a large saving on an English-only site.

Frequently asked questions

Is Plus Jakarta Sans free for commercial use? Yes. The SIL Open Font License 1.1 permits commercial use, embedding, self-hosting, subsetting, modification and redistribution. You cannot sell the font file by itself, and derivatives must stay under the OFL. There is no Reserved Font Name to work around.

Is it a variable font? Yes — two of them. PlusJakartaSans[wght].ttf and PlusJakartaSans-Italic[wght].ttf each carry a single wght axis: min 200, default 400, max 800, with seven named instances. There is no slnt or ital axis, so going italic means loading the second file, not moving a slider.

How many weights does it have? Seven — ExtraLight 200, Light 300, Regular 400, Medium 500, SemiBold 600, Bold 700, ExtraBold 800 — each with an italic, for fourteen styles. The range grew over time: ExtraLight arrived in v2.400 (4 December 2020), SemiBold in v2.600 (12 November 2021).

Does it have real italics? Not cursive ones. italicAngle is -8.0; straight-sided glyphs are a clean mechanical shear (measured 7.95°–8.01°) and curves and hooks are redrawn to correct optically, but the letterforms stay roman — double-storey a, single-storey g, no descending f. Corrected obliques.

Does Plus Jakarta Sans support Cyrillic? No. Google lists a cyrillic-ext subset and the CSS API will serve you that block, but the binary has zero codepoints in U+0400–U+052F. The tag is triggered by a single character, U+20B4, the hryvnia sign. Greek is the same: only Δ, Ω and π, present as maths symbols. Vietnamese, by contrast, is genuinely and fully covered.

What are ss01, ss02 and ss03? Three opt-in stylistic sets, named on the official microsite: ss01 Lancip (Sharp, 175 substitutions), ss02 Lurus (Straight, 48 substitutions — straight spurs and feet on a j p q r y, plus a straightened y tail), ss03 Lingkar (Swirl, 133 substitutions — curved tails on l and y, and curved arms where ss01 runs them flat). Enable with font-feature-settings: "ss02" or equivalent. None of the three gives you a single-storey a — every a in the family is double-storey.

Why does my Plus Jakarta Sans text look so loosely leaded? Because line-height is unset. The vertical metrics (1038 / -222 / 0) give a default line box of 1.26 em, and Google's metadata reports lineHeight: 1.26 for every style. Set it explicitly.

What happened to Plus Jakarta Display and Plus Jakarta Text? They were the shape of the original v1.000 release in February 2020, and the frozen project microsite still shows them. The FONTLOG for v2.400, 4 December 2020, records "Removed Plus Jakarta Sans Text Version". There is now one unified family and no optical sizes.

Does it have small caps or a slashed zero? Neither, and no discretionary ligatures. There is no smcp, c2sc, onum, lnum or zero feature — only the five standard ligatures fi, fl, ff, ffi, ffl. The zero.tf glyph in a glyph browser is the tabular figure, not an alternate zero.

Which brands use Plus Jakarta Sans? There is no verifiable list. The one documented use is the original commission: the +Jakarta City of Collaboration identity for the Jakarta Provincial Government, credited to 6616 Studio (the microsite says 6616 Creative House) with the typeface by Tokotype. If you see a claim that a major tech company uses it, ask for a source before repeating it.

Is Plus Jakarta Sans on Google Fonts?

Yes, Plus Jakarta Sans is available for free on Google Fonts. Get Plus Jakarta Sans on Google Fonts ↗

Alternative For (12)

Plus Jakarta Sans is a free alternative to the following premium fonts:

#1 Aeonik 80%
[cotype-foundry] · sans-serif

Modern geometric with similar warmth and contemporary positioning

View all alternatives
#2 Brown 79%
[lineto] · sans-serif

Modern geometric-grotesque with warm character and excellent screen optimization

View all alternatives
[sharp-type] · sans-serif

Modern geometric-grotesque with design-forward character and screen optimization

View all alternatives
#4 Euclid 80%
[swiss-typefaces] · sans-serif

Modern geometric with subtle humanist influences

View all alternatives
[milieu-grotesque] · sans-serif

Modern geometric with similar approachability and premium feel

View all alternatives
#6 Marblis 74%
[fincker-font-cuisine] · sans-serif

Contemporary geometric sans with variable axes and polished detailing

View all alternatives
[pangram-pangram] · sans-serif

Modern geometric with compatible proportions

View all alternatives
#8 Söhne 76%
[klim-type-foundry] · sans-serif

Contemporary geometric with slightly warmer character

View all alternatives
[typetype] · sans-serif

Contemporary geometric with ink traps and modern details that echo TT Norms Pro's precision

View all alternatives
[grilli-type] · sans-serif

Modern geometric with subtle warmth and ink traps that bridge the gap toward GT Walsheim's character

View all alternatives
#11 Mont 68%
[fontfabric] · sans-serif

Contemporary geometric sans-serif with overlapping use cases in UI and branding

View all alternatives
#12 Degular 70%
[oh-no-type-co] · sans-serif

Geometric sans with rounded terminals and friendly character

View all alternatives

Compare Plus Jakarta Sans

See how Plus Jakarta Sans compares to other fonts side by side.

Variable Font Axes

Plus Jakarta Sans is a variable font with 1 axis you can fine-tune.

Axis Min Default Max
wght 200 400 800

Font Pairings

Fonts that pair well with Plus Jakarta Sans based on contrast and complementary design characteristics.

Geist Mono + Plus Jakarta Sans
92/100
mono + sans-serif
Best for: Professional, Clean
Enterprise
JetBrains Mono + Plus Jakarta Sans
92/100
mono + sans-serif
Best for: Clean, Professional
Enterprise Finance
Koh Santepheap + Plus Jakarta Sans
78/100
serif + sans-serif
Best for: Professional, Clean
Enterprise
Playfair Display + Plus Jakarta Sans
76/100
serif + sans-serif
Best for: Modern, Precise
Enterprise Finance Legal
Merriweather + Plus Jakarta Sans
76/100
serif + sans-serif
Best for: Modern, Precise
Enterprise Finance Legal

Performance

Key metrics for evaluating Plus Jakarta Sans in production.

Score
64 /100 Good
File Size
143.9 KB Light
Weights
9 (variable) + Italics
Languages
3 groups CDN delivery

Font Metrics

x-Height Ratio
0.536
Cap Height Ratio
0.745
Ascender
1038
Descender
-222

Fallback CSS Overrides

Apply these overrides to Arial to minimize layout shift when loading Plus Jakarta Sans.

@font-face {
  font-family: 'Plus Jakarta Sans Fallback';
  src: local('Arial');
  ascent-override: 103.8%;
  descent-override: 22.2%;
  line-gap-override: 0%;
  size-adjust: 103.36%;
}
woff2 Measured via Google Fonts API Metrics extracted from WOFF2

How to Use Plus Jakarta Sans

Copy these code snippets to quickly add Plus Jakarta Sans to your project.

Quick Start

CSS code for Plus Jakarta Sans

@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@100..900&display=swap');