12 Multilingual Fonts for Your Website: Free Picks by Script

Twelve free web fonts that cover more than one script, with the exact coverage of each, a CSS font-stack setup and a checklist for testing fonts before you launch a new language.
No card details No commitment

· Updated · Alex B · Blog

Summarize this post with: 9 min read

There is no single web font that covers every language well. The closest thing is Google’s Noto project, which covers “more than 1,000 languages and over 150 writing systems”, but it ships as separate families per script. For most multilingual websites the practical answer is one main font for Latin, Cyrillic and Greek text, plus a script-specific fallback (Noto or a matching family) for Arabic, Hebrew, Devanagari, Thai and CJK.

Below are 12 free fonts that handle more than one script, with the exact scripts each one supports, followed by a CSS setup and a test routine you can run before you launch a new language.

Key takeaways

  • Check scripts, not “number of languages”. If a font has no Arabic glyphs, it doesn’t matter how many Latin-script languages it lists.
  • Missing glyphs show up as empty boxes (“tofu”) or as a mismatched system font. Both look broken to native readers.
  • Build a font stack: your brand font first, a script-specific font next, then a generic family. The browser picks per character.
  • Load CJK and other large fonts only where needed. Google Fonts already splits them into small unicode-range slices.
  • Test every language on real pages, at real sizes, before switching it on for visitors.

How we picked and checked these fonts

All 12 fonts are free to use and available on Google Fonts. The script coverage listed for each one comes from the Google Fonts family metadata, checked on 27 September 2026. “Latin” includes the extended Latin set that covers most European languages, Turkish and Vietnamese where listed.

We left out premium fonts. Paid families like Helvetica World or Frutiger can be excellent, but their language support and pricing change by license and vendor, and you should check those directly with the foundry.

The 12 multilingual fonts

1. Noto Sans

Scripts: Latin, Cyrillic, Greek, Devanagari, Vietnamese. Companion families cover almost everything else: Noto Sans Arabic, Hebrew, Thai, JP, KR, SC (Simplified Chinese), TC (Traditional Chinese) and more.

Noto (short for “no tofu”) is the default choice when you need breadth. The Noto project describes it as a collection “in more than 1,000 languages and over 150 writing systems”, and the fonts are released under the SIL Open Font License. Because every script family is designed to work together, Noto is also the safest fallback behind any other font on this list.

2. Noto Serif

Scripts: Latin, Cyrillic, Greek, Vietnamese, plus math symbols.

The serif partner to Noto Sans, with its own set of script companions (Noto Serif JP, Noto Naskh Arabic for a traditional Arabic style, and others). Good for editorial sites that want a book-like feel in every language.

3. Open Sans

Scripts: Latin, Cyrillic, Greek, Hebrew, Vietnamese.

Steve Matteson’s humanist sans has been a web staple for years. Its Hebrew support is the reason it’s on this list: few popular Latin fonts include it. It is a solid body-text choice for sites that need English, Russian, Greek and Hebrew from one family.

4. Roboto

Scripts: Latin, Cyrillic, Greek, Vietnamese.

Android’s system font, designed by Christian Robertson. Visitors already know it, it has many weights and a variable version, and it pairs cleanly with Noto for scripts it doesn’t cover.

5. Inter

Scripts: Latin, Cyrillic, Greek, Vietnamese.

Rasmus Andersson designed Inter for screens, and it shows in small UI text: buttons, labels, tables. If your site is an app or dashboard, Inter plus Noto fallbacks is a strong combination.

6. Source Sans 3

Scripts: Latin, Cyrillic, Greek, Vietnamese.

Adobe’s first open-source family, by Paul D. Hunt. Neutral, very readable in long text, and a close stylistic match for Source Han Sans, the CJK design Adobe developed with Google and that Google ships as Noto Sans CJK.

7. Fira Sans

Scripts: Latin, Cyrillic, Greek, Vietnamese.

Designed by Carrois Apostrophe for Mozilla. A bit more personality than Roboto or Inter, with a matching Fira Mono if your site shows code.

8. Montserrat

Scripts: Latin, Cyrillic, Vietnamese. No Greek.

Popular for headings. It’s here as a reminder to read the coverage line: Montserrat works for English, German, Polish, Russian and Ukrainian, but a Greek page would fall back to another font mid-headline.

9. IBM Plex Sans (and its script companions)

Scripts: Plex Sans covers Latin, Cyrillic, Greek and Vietnamese. Separate families add Arabic, Hebrew, Devanagari, Thai, Japanese and Korean.

IBM Plex is the most complete “designed as one system” option after Noto. Each companion shares Plex’s proportions and tone, so a page in Arabic and a page in English feel like the same brand.

10. Rubik

Scripts: Latin, Cyrillic, Hebrew, Arabic.

Slightly rounded and friendly. One of the few single families that covers both Hebrew and Arabic along with Latin and Cyrillic, which makes it handy for Middle East sites.

11. Cairo

Scripts: Arabic, Latin.

A contemporary Arabic family with a matching Latin set. Useful when your Arabic pages are the priority and you want the English words inside Arabic text (brand names, product codes) to match.

12. Noto Sans JP, SC, TC and KR

Scripts: Japanese, Simplified Chinese, Traditional Chinese and Korean respectively, each with Latin and Cyrillic.

Chinese, Japanese and Korean fonts contain thousands of characters, so file size is the real issue. Google Fonts serves them in small unicode-range chunks, and the browser only downloads the chunks a page needs. Use the family that matches the language: Japanese and Chinese share many characters but draw them differently, and readers notice.

A quick warning about Latin-only favorites: Lato, for example, lists only Latin and Latin Extended on Google Fonts. Many brand fonts are the same. That’s fine, as long as your stack has a fallback for every other script you publish.

How to set up a multilingual font stack

The browser chooses a font per character. If the first font in font-family doesn’t have a glyph, it tries the next. You can use that on purpose:

body {
  font-family: 'Inter', 'Noto Sans', 'Noto Sans Arabic', 'Noto Sans JP', system-ui, sans-serif;
}

For better control, set fonts per language with the :lang() selector. It works as long as the page’s <html lang="…"> attribute is correct for the language being shown:

:lang(ar) body {
  font-family: 'IBM Plex Sans Arabic', 'Noto Sans Arabic', sans-serif;
}
:lang(he) body {
  font-family: 'Open Sans', 'Noto Sans Hebrew', sans-serif;
}
:lang(ja) body {
  font-family: 'Noto Sans JP', sans-serif;
  line-height: 1.8;
}
:lang(th) body {
  font-family: 'IBM Plex Sans Thai', 'Noto Sans Thai', sans-serif;
  line-height: 1.9;
}

Three details that save time later:

  • Line height. Thai, Devanagari and Arabic have marks above and below the letters. A line height tuned for English can clip them. Give those languages more room.
  • Bold and italic. Many scripts have no true italic. If you rely on italics for emphasis, choose a different style (weight or color) for those languages.
  • Self-hosting. If you host fonts yourself, keep the unicode-range descriptors when you copy @font-face rules. The MDN reference for unicode-range shows the syntax.

How to test fonts before you launch a language

  1. Turn the language on in a hidden or staging state and load your five most important pages: home, a product or pricing page, a long article, a form, and the checkout or sign-up.
  2. Look for tofu and font switching. Empty rectangles are obvious. A sudden change in letter shape halfway through a heading is easier to miss and means the font fell back.
  3. Check small text. Footers, form labels, table cells and buttons at mobile size. Complex scripts get hard to read below the size that works for English.
  4. Check text length. Translated text is often longer. The W3C’s article on text size in translation cites IBM guidance that short English strings (up to 10 characters) can grow by 200 to 300% in European languages. Buttons and menus break first.
  5. Check direction. For Arabic, Hebrew and Persian, confirm the layout mirrors correctly and that numbers and Latin words inside the text still read the right way. Our guide to RTL design covers the layout side.
  6. Ask a native reader. A fluent speaker will spot a wrong regional glyph (common with Chinese and Japanese) in seconds.

How ConveyThis helps with the testing step

ConveyThis translates your site’s text and sets the page’s lang attribute to the language being shown, so the :lang() rules above apply automatically. You can preview every language through the language switcher and fix awkward wording in the visual editor on the page itself, which is the quickest way to catch a button label that no longer fits. If a string is too long for your design, edit the translation there, or use the glossary so a short term is used consistently.

What ConveyThis does not do is choose or load fonts for you. The font stack stays in your theme’s CSS. Plans and language limits are on the pricing page, and ConveyThis supports 210 languages, so it’s worth checking font coverage before you add a new script.

FAQ

What font supports all languages? No single font file does. Google’s Noto family comes closest, with a separate family per script designed to work together.

What is “tofu” in fonts? The empty rectangle a browser draws when the font has no glyph for a character. Noto’s name comes from “no tofu”.

Should I use one font for every language? Only if it genuinely covers every script you publish. Otherwise use your brand font for Latin text and matching fallbacks for the rest.

Do multilingual fonts slow down my site? They can, especially CJK fonts. Load only the weights you use, keep unicode-range subsetting, and use font-display: swap so text shows while fonts load.


Ready to see your site in a new language, fonts and all? Create a ConveyThis account and preview translations on your own pages before you publish them.

Share:
G2 High Performer Spring 2023
G2 Easiest Setup Fall 2024
G2 Best Support Spring 2025