Font Converter

Unicode Range Generator

Generate unicode-range values for font subsetting

Preset ScriptsCustom RangesCSS Export

Preset Scripts

Tip: Click a preset to add its Unicode ranges to your custom list

Custom Ranges

U+
U+

Generated Output

U+0020-U+007F
CSS Output
@font-face {
  font-family: 'YourFont';
  src: url('your-font.woff2') format('woff2');
  unicode-range: U+0020-U+007F;
}

Common Characters Reference

CharacterNameUnicode
A-ZUppercase LatinU+0041-U+005A
a-zLowercase LatinU+0061-U+007A
0-9DigitsU+0030-U+0039
À-ÿLatin-1 AccentedU+00C0-U+00FF
А-ЯCyrillic UppercaseU+0410-U+042F
а-яCyrillic LowercaseU+0430-U+044F
Α-ΩGreek UppercaseU+0391-U+03A9
α-ωGreek LowercaseU+03B1-U+03C9

Developer & Verifier

Marcus Rodriguez

Developed by

Marcus Rodriguez

Lead Developer

Sarah Mitchell

Verified by

Sarah Mitchell

Product Designer, Font Specialist

What is a CSS Unicode Range?

The CSS unicode-range descriptor specifies exactly which character code points a @font-face rule covers, enabling browsers to download font files only when the page contains characters within that range. Unicode 16.0 defines over 154,000 characters across hundreds of scripts — without unicode-range, browsers download entire font files regardless of which characters appear on the page.

Latin fonts typically use 100–1,000 glyphs, while CJK fonts require 10,000+ glyphs for basic coverage. The OpenType specification limits each font file to a maximum of 65,535 glyphs. Declaring unicode-range in @font-face triggers conditional font downloading — browsers evaluate which code points exist in the page content and fetch only the matching font files.

Coordinate unicode-range with font subsetting for maximum file size reduction: subset the font file to remove unused glyphs AND declare unicode-range to prevent unnecessary downloads. The median WOFF2 Latin font measures 12–19 KB (phpied.com analysis of 1,074 Google Fonts), but CJK fonts without subsetting reach 1–5 MB.

Language-specific subsetting guides cover Chinese, Japanese, Korean, Latin, Arabic, and Cyrillic character sets with recommended unicode-range values for each script.

Select from 19 preset Unicode blocks covering Latin, Cyrillic, Greek, CJK, Arabic, Hebrew, Thai, emoji, and more — or build custom ranges by entering hexadecimal start and end code points. The reference table lists 8 common character sets with their exact Unicode boundaries. Output includes the unicode-range value string and a complete @font-face CSS declaration with the unicode-range property ready for your stylesheet.

How to Use This Generator

1

Select Character Sets

Choose from preset language and script ranges like Latin, Cyrillic, Greek, Arabic, or CJK.

2

Add Custom Ranges

Optionally define specific Unicode ranges using hexadecimal notation for precise control.

3

Preview Characters

See a visual display of the characters included in your selected ranges.

4

Copy CSS

Copy the generated unicode-range CSS output to use in your @font-face declarations.

Features

Character Set Selection
Unicode Range Output
Visual Character Preview
Common Language Presets
Custom Range Input
Copy CSS Output
File-Based Generation
Glyphs Display

Common Unicode Ranges

ScriptUnicode RangeCharactersCommon Languages
Basic LatinU+0020-007E95English (ASCII)
Latin-1 SupplementU+00A0-00FF96French German Spanish
Latin Extended-AU+0100-017F128Czech Polish Turkish
CyrillicU+0400-04FF256Russian Ukrainian Bulgarian
GreekU+0370-03FF135Greek
CJK UnifiedU+4E00-9FFF20992Chinese Japanese Korean
DevanagariU+0900-097F128Hindi Sanskrit

Frequently Asked Questions

What is CSS unicode-range?
The unicode-range descriptor in @font-face tells the browser which Unicode characters a font covers. The browser only downloads the font file when characters on the page fall within the specified range, improving performance.
How does unicode-range improve performance?
By splitting a font into subsets with unicode-range, the browser only downloads the subsets needed for the current page content. A page with only Latin text won't download CJK or Cyrillic font subsets.
How do I write unicode-range syntax?
Use U+ followed by hex code points: single character (U+0041 for "A"), range (U+0020-007E for Basic Latin), or wildcard (U+4?? for U+0400-04FF). Separate multiple ranges with commas.
What are wildcard ranges?
Wildcard ranges use ? to match any hex digit. U+4?? matches U+0400 through U+04FF (256 characters). U+00?? matches U+0000 through U+00FF. This is a shorthand for common Unicode blocks.
How do I find which characters are in a font?
Use our Font Analyzer tool to inspect a font file's Unicode coverage. It shows all supported character ranges, letting you create precise unicode-range values for your @font-face rules.
What are common unicode-range values for different languages?
Basic Latin: U+0020-007E; Latin Extended: U+0100-024F; Cyrillic: U+0400-04FF; Greek: U+0370-03FF; CJK Unified: U+4E00-9FFF. This tool provides presets for all major languages.

Related Tools & Guides