Skip to content
ColorKit

Free type specimen viewer

Google Fonts preview that never calls Google

This preview is free, needs no signup, and is specific about its scope: it sets eight open-source families from woff2 files stored on this domain, not the 1,942 in the Google Fonts catalogue. Type one line and every specimen restates it, anywhere from 12 to 72 pixels and along each family's real variable weight axis. Every row also prints what the family costs to ship — x-height, cap height, weight range and the byte size of its latin slice, which runs from 21.8 KB for Space Grotesk to 95.3 KB for Merriweather.

  • 100% free
  • No signup
  • 8 families on file
  • 12-72px live
  • Cost per family in KB

Press Ctrl+V anywhere on the page to drop in the sentence you want to see set — no need to click the field first.

Showing 8 of 8 families · 339.9 KB of woff2 behind the specimens listed · 1,942 families exist in the Google Fonts catalogue, and the other 1,934 are not on this server.

Specimens, ordered by catalogue rank

  • Inter

    Sans serif · Rasmus Andersson · in the catalogue since 2020 · rank #3

    Handgloves & 0123456789 — the quick brown fox

    Weight axis
    100-900
    Latin slice
    47.3 KB
    x-height
    0.546 em · 17.5px here
    Cap height
    0.728 em · 23.3px here

    Drawn for user interfaces at small sizes: tall lowercase, open apertures, and tabular figures under a feature flag.

    font-family: "Inter", system-ui, sans-serif;
  • Merriweather

    Serif · Sorkin Type · in the catalogue since 2011 · rank #9

    Handgloves & 0123456789 — the quick brown fox

    Weight axis
    300-900
    Latin slice
    95.3 KB
    x-height
    0.555 em · 17.8px here
    Cap height
    0.743 em · 23.8px here

    The largest lowercase and the largest file: the same latin coverage costs more than four times what Space Grotesk charges for it.

    font-family: "Merriweather", Georgia, serif;
  • Lora

    Serif · Cyreal · in the catalogue since 2011 · rank #11

    Handgloves & 0123456789 — the quick brown fox

    Weight axis
    400-700
    Latin slice
    36.9 KB
    x-height
    0.500 em · 16.0px here
    Cap height
    0.700 em · 22.4px here

    Brush-derived serifs on a contemporary text skeleton, with the narrowest weight axis in this set at 400 to 700.

    font-family: "Lora", Georgia, serif;
  • Source Sans 3

    Sans serif · Paul D. Hunt · in the catalogue since 2021 · rank #15

    Handgloves & 0123456789 — the quick brown fox

    Weight axis
    200-900
    Latin slice
    28.1 KB
    x-height
    0.486 em · 15.6px here
    Cap height
    0.660 em · 21.1px here

    The third version of Adobe's first open-source family, released in 2021; the shallowest lowercase in this set, which is what lets it recede under a display heading.

    font-family: "Source Sans 3", system-ui, sans-serif;
  • Playfair Display

    Serif · Claus Eggers Sørensen · in the catalogue since 2011 · rank #16

    Handgloves & 0123456789 — the quick brown fox

    Weight axis
    400-900
    Latin slice
    37.6 KB
    x-height
    0.514 em · 16.4px here
    Cap height
    0.708 em · 22.7px here

    A didone with the widest stroke contrast here; its weight axis starts at 400, because hairlines this thin have nothing left to give a light cut.

    font-family: "Playfair Display", Georgia, serif;
  • JetBrains Mono

    Monospace · JetBrains · in the catalogue since 2020 · rank #18

    Handgloves & 0123456789 — the quick brown fox

    Weight axis
    100-800
    Latin slice
    39.5 KB
    x-height
    0.550 em · 17.6px here
    Cap height
    0.730 em · 23.4px here

    Every glyph is 0.6em wide and the lowercase is raised to 0.55em, both aimed at reading code at 13px for eight hours.

    font-family: "JetBrains Mono", ui-monospace, monospace;
  • Roboto Slab

    Serif · Christian Robertson · in the catalogue since 2013 · rank #28

    Handgloves & 0123456789 — the quick brown fox

    Weight axis
    100-900
    Latin slice
    33.4 KB
    x-height
    0.528 em · 16.9px here
    Cap height
    0.711 em · 22.8px here

    Roboto's skeleton with slab serifs bolted on, which is why it sets to almost the same width as the sans it came from.

    font-family: "Roboto Slab", Georgia, serif;
  • Space Grotesk

    Sans serif · Florian Karsten · in the catalogue since 2020 · rank #67

    Handgloves & 0123456789 — the quick brown fox

    Weight axis
    300-700
    Latin slice
    21.8 KB
    x-height
    0.486 em · 15.6px here
    Cap height
    0.700 em · 22.4px here

    A proportional redraw of Space Mono: squared curves and angled terminals that read as deliberate at 32px and as noise at 13px.

    font-family: "Space Grotesk", system-ui, sans-serif;

How to compare these families on your own text

Three steps from a sentence you care about to the font-family declaration.

  1. Type the line you actually need to see

    Replace the default sample with the words you are judging — a product name, a navigation label, a headline that has to fit on one line. The field holds 120 characters and every specimen below updates as you type. The default deliberately mixes an ampersand, figures and an em dash, because a family that handles lowercase beautifully can still set 0123456789 at three different widths and hide a weak ampersand behind a pretty g.

  2. Set the size and weight you will ship

    The size slider covers 12 to 72px in single pixels and the weight slider steps 100 to 900 in fifties. A family whose axis is narrower than the slider renders at its nearest drawn weight and says so under the specimen rather than pretending. Narrow the list to sans, serif or monospace, and reorder it by catalogue rank, file size, x-height or name when you are comparing one property rather than browsing.

  3. Read the cost before you copy the stack

    Each specimen carries its weight axis, its x-height and cap height in em and in pixels at the current size, and the byte count of the latin slice — the number that decides whether the font is affordable on a landing page. The line above the list totals the bytes for whatever is on screen. Copy stack puts the font-family declaration on your clipboard with a system fallback already behind it.

Technical specifications

Specimens8 variable woff2 files, committed to this repository and served from /_next/static/media on this domain
Catalogue coverageThe Google Fonts metadata feed listed 1,942 families on 13 August 2026; these eight are 0.4% of it
Font payload339.9 KB for all eight latin slices together — 21.8 KB for Space Grotesk, 95.3 KB for Merriweather — cached for a year after the first visit
Font originThis domain only: no stylesheet or woff2 is requested from fonts.googleapis.com or fonts.gstatic.com while the page renders
Weight controlOne slider, 100 to 900 in steps of 50; a family whose axis is narrower renders at its nearest drawn weight and labels the substitution
Size control12 to 72px in 1px steps, with the x-height and cap height of every family recomputed in pixels at each step
Per-family dataDesigner, year of entry to the catalogue, popularity rank, weight axis, x-height and cap height in em, and the byte size of the latin slice
Sample textOne line, 120 characters, kept in memory and never stored

Frequently asked questions

Why are only eight families here instead of the whole catalogue?

Because this site will not load a font from someone else's server, and a specimen you cannot render is not a specimen. The content security policy is default-src 'self', so every file the page shows is one this repository carries and this domain serves; that is a real cost per family, not a link. Eight is what covers the genres a web project actually chooses between — three sans, four serif and slab, one monospace — against the 1,942 families the catalogue listed in August 2026.

Does previewing a font here send anything to Google?

No font and no stylesheet is fetched from fonts.googleapis.com or fonts.gstatic.com — the eight woff2 files come from this domain. That distinction has been legally consequential since January 2022, when the Landgericht München I awarded a plaintiff €100 in case 3 O 17493/20 because a website embedded Google Fonts dynamically and, in doing so, transmitted the visitor's IP address to Google without consent. Self-hosting removes the transfer, which is why most EU sites now bundle their fonts.

How do I self-host these families on my own site?

Download the family, subset it, and write the @font-face rules yourself — or let a build tool do all three. The manual route is a woff2 per subset plus a rule carrying font-display: swap and the matching unicode-range; the tooling route on Next.js is next/font, which hashes the file into your static output and rewrites the CSS to point at it. This page takes the manual route one step further and commits the eight files to its own repository, because a build that downloads a font from Google is a build that fails whenever Google is unreachable. Either way the browser makes one request to your own origin instead of two to Google's.

Why is Merriweather 95.3 KB when Space Grotesk is 21.8 KB?

The two cover the same unicode range and differ in what is inside it. Space Grotesk carries a compact character set on a geometric skeleton across a 300-to-700 axis; Merriweather carries a much larger set, more complex outlines and a 300-to-900 axis, and a variable font stores an interpolation delta for every point on every outline it moves. That is why the file grows faster than the glyph count does, and why the largest family in this list costs more than four times the smallest.

Why does the weight slider stop before 900 on some families?

Because the file only contains the axis its designer drew. Lora ships 400 to 700 and Space Grotesk 300 to 700, so asking for 900 has nothing to interpolate towards. A browser given a weight outside the axis will synthesise one by smearing the outline, which produces uneven stems and blurs the counters at text sizes, so the specimen clamps to the nearest real weight and tells you it did.

What is font-display: swap doing to what I see?

It draws the text immediately in a fallback face and repaints when the woff2 arrives, instead of leaving a blank space for up to three seconds. The reason the repaint does not shove the page around is that each family here also gets a generated fallback face with size-adjust, ascent-override and descent-override tuned to match its metrics, so the fallback occupies close to the same box. Watching the first paint on a throttled connection is a fair preview of what a visitor to your own site will see.

Can I preview a font file from my own machine here?

No — there is no upload field, and adding one would mean either sending your file somewhere or shipping a font parser this page does not need. For a local file the shortest path is a scratch HTML file with an @font-face rule pointing at it, or your operating system's font viewer. What this page is for is the opposite case: deciding between families that are already free to use before you commit one to a build.

About previewing a web font before you ship it

A specimen page has one job: predict what the font will do on your site. The usual implementation quietly fails at it in two ways. It renders the sample from Google's edge network over a connection the browser has already warmed, so the preview appears instantly and your own page — which has to resolve a second hostname, fetch a stylesheet and only then discover which woff2 it needs — does not. And it never mentions bytes, so a family that happens to cost four times another looks like a free choice. The specimens below are the actual files this site serves, listed with what each one weighs, because on a landing page the difference between 22 KB and 95 KB decides the argument more often than the shape of the g does.

The mechanic worth knowing is unicode-range subsetting. A single family on Google Fonts is not one file but five to eight, split by script — latin, latin-ext, greek, cyrillic, vietnamese — each declared with the range of code points it covers. A browser downloads only the slices whose characters appear on the page, which is why the numbers here are labelled latin slice rather than font size: the same family costs more the moment your copy contains a Ł or a ż. All eight families ship under the SIL Open Font License or Apache 2.0, both of which allow commercial use, self-hosting and conversion to woff2 without a fee and without an attribution line in your interface. What neither licence allows is selling the font itself, which is rarely the plan.

Read the two metric columns before you judge a shape. x-height and cap height are given as fractions of the em, and they explain why 32px of Merriweather looks a size larger than 32px of Source Sans 3 — 0.555em of lowercase against 0.486em. Once a family is chosen, the decisions that follow are all measurable: font pairing for the second face and the scale between the two, line height for the leading a paragraph of that x-height needs, letter spacing for the tracking a display face wants once it passes 40px, and the font size converter or rem to px for turning the pixel value you settled on here into the unit your stylesheet should carry.

What this page loads, and from where

Every number on this page is worked out by JavaScript running in the tab you are reading it in. Nothing you type, paste or open is uploaded, logged or kept, which is also why the tools carry on working after you disconnect from the network.

The fonts are part of that claim rather than an exception to it: all eight woff2 files are served from this domain under an immutable one-year cache header, so no font host learns that you were here and no third party is told which typeface you were looking at.