Skip to main content

Font Subsetter

Select character ranges to subset your font and generate optimized @font-face CSS.

Free & unlimitedWorks offline

What is font subsetting?

Font subsetting reduces file size by including only the characters you need. The CSS unicode-range property tells the browser to only download the font file when characters in the specified range appear on the page.

Quick presets
Custom Unicode range
U+to U+
All processing happens in your browser. No data is sent to any server.

About this tool

  1. 1

    Upload a font

    Select the font file you want to subset for optimized loading.

  2. 2

    Define character ranges

    Choose which Unicode ranges to include - Latin, Cyrillic, Greek, symbols, etc.

  3. 3

    Generate CSS

    The tool outputs unicode-range declarations for each subset of the font.

  4. 4

    Copy the code

    Use the generated @font-face rules with unicode-range in your stylesheet.

  • Subset to Latin characters only if your site is English-only - this can reduce font size by 70% or more.
  • Use unicode-range so the browser only downloads the subsets it actually needs for the page content.
  • Always include basic punctuation and number ranges even in minimal subsets.
  • Test your subsets with real page content to ensure no characters are missing.
  • Generate CSS unicode-range declarations for font subsetting
  • Predefined ranges for Latin, Latin Extended, Cyrillic, Greek, CJK, and more
  • Custom Unicode range input for precise character selection
  • File size estimate showing savings per subset
  • Optimize web font loading by splitting a large font into language-specific subsets
  • Reduce initial page load time by loading only the Latin subset upfront
  • Create targeted font subsets for multilingual websites that serve different character sets
  • Generate Google Fonts-style unicode-range CSS for self-hosted fonts
The unicode-range descriptor tells the browser which characters a font file covers. The browser only downloads the font file if the page contains characters within that range, saving bandwidth.
A full Unicode font can be several megabytes. Subsetting to Latin-only characters typically reduces the file to 15-30KB in WOFF2 format - a reduction of 90% or more.
No. If a character is not in any loaded subset, the browser falls back to the next font in your font-family stack. Users will see the character in a fallback font rather than a blank.

Related tools

View all

We use anonymous analytics to improve ToolChamp. No personal data is stored or sold. Privacy Policy