No single font rules the web’s busiest homepages. We loaded the homepages behind the top 1,000 domains of the Tranco ranking on 26 September 2026 and measured 511 distinct homepages. Inter drew most of the body text on 41 of 511 (8%), the operating system’s own UI font on 38 (7%), and Arial on 29 (6%). Altogether, 213 different families served as the main body font, and 159 homepages used a body font that no other measured homepage used.
We also recorded what each page’s CSS declares, and that tells a different story. Arial is named somewhere in the CSS of 443 of 511 (87%) homepages, yet it draws the main body text on only 29 (6%). If you want to know what visitors actually see, you have to look at what the browser renders, not at the stylesheet.
This page shares the results, the method, the limits and the full dataset. Percentages are shares of the 511 measured homepages unless another n is given.
Key Findings
- Inter and the system UI font lead, narrowly. Inter (41, 8%) and the system UI font (38, 7%) are the most common main body fonts, ahead of Arial (29, 6%), Open Sans (26, 5%) and Roboto (26, 5%).
- The long tail is long. The ten most common families cover 223 of 511 (44%) homepages. 159 of the 213 body families appear on a single homepage, many of them custom or licensed brand fonts.
- Most homepages use a web font for body text. 387 of 511 (76%) homepages set their body text in a web font, 38 (7%) in the system UI font and 86 (17%) in another installed font, mostly Arial, Helvetica or, on Chinese sites, PingFang SC.
- Declared is not rendered. The median homepage names 13 font families in its CSS but draws its visible text in 2. Consolas, a Windows code font, is named by 220 (43%) homepages and drew no visible text at all in our crawl.
- Self-hosting beats Google Fonts. 396 of 511 (77%) homepages downloaded font files from their own domain or CDN, 108 (21%) from Google Fonts servers (including Google’s own sites) and 9 (2%) from Adobe Fonts. 68 (13%) downloaded no font files at all.
- Sans-serif everywhere. Sans-serif families are the main body font on 486 of 511 (95%) homepages. Serif body text is rare (19, 4%), and about half of it is on news sites.
Choosing for your own site? Our guide on how to choose fonts turns these numbers into a shortlist by job, judged on legibility, weights, languages, licence and file size. To see what another site uses, check which fonts a site uses with our free Website Font Checker.
The Most Common Body Fonts
The table counts the family that drew the most visible characters outside h1 to h3 headings on each homepage. The “Type” column says how the font reached the screen: a downloaded web font looks the same on every device, while the system UI font and other installed fonts depend on the visitor’s operating system. Our results for those two rows are what a Mac shows.
| Main body font | Homepages (n = 511) | Type |
|---|---|---|
| Inter | 41 (8%) | Web font |
| System UI font | 38 (7%) | System UI font |
| Arial | 29 (6%) | Installed font |
| Open Sans | 26 (5%) | Web font |
| Roboto | 26 (5%) | Web font |
| Source Sans | 15 (3%) | Web font |
| PingFang SC | 13 (3%) | Installed font |
| Helvetica Neue | 12 (2%) | Installed font |
| Proxima Nova | 12 (2%) | Web font |
| Helvetica | 11 (2%) | Installed font |
| Lato | 9 (2%) | Web font |
| Poppins | 9 (2%) | Web font |
| Segoe UI | 8 (2%) | Web font |
| Google Sans | 5 (1%) | Web font |
| Times | 5 (1%) | Installed font |
A few examples from the dataset: Inter is the body font of wordpress.org, wordpress.com, zoom.us, epicgames.com, twitch.tv and cisco.com. The system UI font runs Instagram, LinkedIn, Wikipedia and ChatGPT’s homepage. Arial still carries the body text of Google’s homepage, Amazon and Mail.ru. Roboto is YouTube’s body font, and all 8 Segoe UI homepages belong to Microsoft.
Below the top 15, the list gets personal fast. It includes brand families such as Airbnb Cereal, GitHub’s Mona Sans, OpenAI Sans, Anthropic Sans, the BBC’s Reith fonts, Spotify Mix and TikTok’s own family, and licensed commercial families such as Söhne (Stripe and Medium) and Graphik. For many of the web’s biggest brands, typography is part of the identity, not a default.
For a closer look at individual brands, our 28 October 2026 follow-up checks explain Discord’s gg sans announcement and rendered Ginto website fonts and Spotify Mix in the public web player. Those dated page checks are separate from this September dataset.
The Most Common Heading Fonts
Headings tell the same story with a little more variety. 458 of 511 (90%) homepages had visible h1 to h3 text; the table uses that n.
| Main heading font | Homepages (n = 458) | Type |
|---|---|---|
| System UI font | 27 (6%) | System UI font |
| Inter | 21 (5%) | Web font |
| Open Sans | 20 (4%) | Web font |
| Roboto | 18 (4%) | Web font |
| Arial | 16 (3%) | Installed font |
| Montserrat | 11 (2%) | Web font |
| Poppins | 10 (2%) | Web font |
| Google Sans | 9 (2%) | Web font |
| PingFang SC | 9 (2%) | Installed font |
| Proxima Nova | 9 (2%) | Web font |
| Helvetica Neue | 8 (2%) | Installed font |
| Source Sans | 8 (2%) | Web font |
326 of 458 (71%) homepages with headings use the same family for headings and body text. Some well-known pairings: Google pairs Arial body text with Google Sans headings, Amazon pairs Arial with Amazon Ember Modern, Wikipedia pairs the system UI font with Georgia, and wordpress.org pairs Inter with EB Garamond.
Declared vs Rendered: What the CSS Asks For and What Visitors See
A CSS font-family value is a list of wishes: “use this family if you have it, otherwise the next one”. Stylesheets also carry font stacks for code blocks, other languages, email widgets and third-party embeds. So the families declared in a page’s CSS and the families rendered on screen are two very different lists.
| Family | Named in the CSS | Drew any visible text | Main body font |
|---|---|---|---|
| Arial | 443 (87%) | 65 (13%) | 29 (6%) |
| Helvetica | 362 (71%) | 37 (7%) | 11 (2%) |
| Helvetica Neue | 302 (59%) | 31 (6%) | 12 (2%) |
| Roboto | 298 (58%) | 35 (7%) | 26 (5%) |
| System UI font | 279 (55%) | 69 (14%) | 38 (7%) |
| Segoe UI | 224 (44%) | 8 (2%) | 8 (2%) |
| Consolas | 220 (43%) | 0 (0%) | 0 (0%) |
| Courier New | 196 (38%) | 1 (0.2%) | 0 (0%) |
| Monaco | 195 (38%) | 3 (0.6%) | 2 (0.4%) |
| Menlo | 177 (35%) | 10 (2%) | 0 (0%) |
| SF Mono | 146 (29%) | 0 (0%) | 0 (0%) |
| Liberation Mono | 141 (28%) | 0 (0%) | 0 (0%) |
| Noto Sans | 123 (24%) | 6 (1%) | 4 (0.8%) |
| Verdana | 110 (22%) | 2 (0.4%) | 0 (0%) |
| Inter | 103 (20%) | 49 (10%) | 41 (8%) |
| Georgia | 100 (20%) | 9 (2%) | 1 (0.2%) |
Four patterns stand out:
- Safe fallbacks are everywhere, and rarely used. Arial, Helvetica and Helvetica Neue sit at the end of most stacks as insurance. On our Mac, Helvetica Neue drew visible text on 31 (6%) homepages although 302 (59%) named it.
- System stacks are common in CSS, rarer as the body font. A system UI keyword such as
system-uior-apple-systemappears in the CSS of 279 (55%) homepages; the system UI font drew the main body text on 38 (7%). Segoe UI (224, 44%) and Roboto (298, 58%) are the Windows and Android UI fonts and appear in many of the same stacks, so on those systems some of these homepages would render them where our Mac could not. - Inter is rarely just a fallback. Inter is named by 103 (20%) homepages, and 49 of them draw visible text with it (48% of those that declare it). For Arial the same rate is 15%.
- The first family is not always the one you see. On our Mac, 26 of 511 (5%) homepages drew their main body text without using the first family in its CSS stack, mostly because that family was a Windows font such as Segoe UI or Microsoft YaHei, or a web font that never loaded. 13 (3%) drew it in a font their stack does not name at all, the browser’s default.
The same gap shows up for web fonts. The median homepage declares 2 web font families (through @font-face rules or the JavaScript FontFace API), loads 1 and draws visible text in 1. Of the 453 homepages that declare web fonts, 307 (68%) declare at least one family that no visible homepage text used. That is not automatically waste: the family may serve other pages or languages, and browsers normally download a web font only when some text needs it.
Web Fonts, System Fonts and Installed Fonts
| How the font reached the screen | Main body font (n = 511) | Main heading font (n = 458) |
|---|---|---|
| Web font | 387 (76%) | 382 (83%) |
| System UI font | 38 (7%) | 27 (6%) |
| Installed font | 86 (17%) | 49 (11%) |
Three quarters of these homepages download a font so their text looks the same everywhere. The rest leave the choice to the device:
- The system UI font is what
system-ui,-apple-systemandBlinkMacSystemFontask for. It is San Francisco on a Mac or iPhone, Segoe UI on Windows and Roboto on Android. It costs nothing to load and feels native; Instagram, LinkedIn and Wikipedia are among the homepages that use it. - Other installed fonts are named families that already live on the device. On our Mac the most common were Arial (29), PingFang SC (13), Helvetica Neue (12), Helvetica (11) and Times (5). On a Windows PC the same stacks could render Arial, Segoe UI or Microsoft YaHei instead, so treat these rows as a Mac snapshot, not a universal result.
Where the Fonts Come From
We classified every font file a homepage downloaded by its host. A homepage can use several sources, so the shares add up to more than 100%.
| Font file source | Homepages (n = 511) |
|---|---|
| Own domain or own CDN (self-hosted) | 396 (77%) |
| Google Fonts (fonts.gstatic.com) | 108 (21%) |
| Other font services (Font Awesome, Monotype, Bunny Fonts and others) | 10 (2%) |
| Adobe Fonts (Typekit) | 9 (2%) |
| Public open-source CDNs (jsDelivr, cdnjs, unpkg) | 3 (0.6%) |
| No font files downloaded | 68 (13%) |
Self-hosting is the norm at this level. Large sites run their own CDNs, many use commercial or custom fonts that free font services do not offer, and self-hosting avoids an extra connection to a third-party server. The Google Fonts count includes Google’s own properties, such as google.com and youtube.com, which load Google Sans and Roboto from the same servers. Adobe Fonts appeared on 9 homepages, including mit.edu, princeton.edu, cornell.edu, doi.org and behance.net.
A further 115 (23%) homepages embed at least one font directly in their CSS as a data: URI. We report them separately because we cannot tell whether those embedded fonts were used.
How Many Fonts Does a Top Homepage Load?
| Measure | Median | 90th percentile | n |
|---|---|---|---|
| Font families drawing visible text | 2 | 3 | 511 |
| Font families named in the CSS | 13 | 28 | 511 |
| Font files downloaded | 4 | 9 | 511 |
| Font data downloaded, where any (KB) | 172 | 614 | 443 |
Most popular homepages are disciplined: two families, a handful of files. The heavy end is real, though: one in ten homepages that downloaded fonts pulled more than 614 KB of font data.
For loading behaviour, we read the font-display value of every loaded web font face. Of the 443 homepages that loaded web fonts, 329 (74%) use swap, fallback or optional on at least one face, so text stays readable while fonts download, and 93 (21%) leave every face on the browser default (auto). Across all 2,982 loaded faces, swap was the most common value (1,686, 57%).
Sans-Serif, Serif or Monospace?
| Category | Main body font (n = 511) | Main heading font (n = 458) |
|---|---|---|
| Sans-serif | 486 (95%) | 413 (90%) |
| Serif | 19 (4%) | 32 (7%) |
| Monospace | 3 (0.6%) | 1 (0.2%) |
| Unclassified | 3 (0.6%) | 12 (3%) |
Sans-serif is the default language of the popular web. About half of the 19 serif homepages were news publishers: the BBC, NPR, the Financial Times, Wired, El País, Le Figaro, The Verge, NBC News, La Repubblica and El Mundo. Most of the rest were pages whose text was left in the browser’s default serif (Times on a Mac) and Chinese sites whose stacks name Songti SC. Serif does better in headings (32, 7%).
We classified families with a curated table, then by the generic fallback the sites themselves declare (for example , serif), then by name. Families we could not verify are counted as unclassified rather than guessed.
These usage figures do not decide readability. Compare the same paragraph, prices and multilingual text in our serif vs sans-serif website specimens before choosing for your own page.
Big Brands Count More Than Once
Rankings list domains, not organisations. Google, Microsoft and Amazon each own many domains in the top 1,000, and their country sites share one design. As a check, we kept only the highest-ranked measured homepage per brand name (so amazon.de and amazon.co.uk count once), which leaves 481 homepages.
| Main body font | Per homepage (n = 511) | One per brand (n = 481) |
|---|---|---|
| Inter | 41 (8%) | 40 (8%) |
| System UI font | 38 (7%) | 37 (8%) |
| Open Sans | 26 (5%) | 26 (5%) |
| Roboto | 26 (5%) | 24 (5%) |
| Arial | 29 (6%) | 16 (3%) |
| Source Sans | 15 (3%) | 15 (3%) |
| Helvetica Neue | 12 (2%) | 12 (2%) |
| PingFang SC | 13 (3%) | 12 (2%) |
| Proxima Nova | 12 (2%) | 12 (2%) |
| Helvetica | 11 (2%) | 11 (2%) |
The leaders stay the same. Arial drops most, from 29 homepages to 16, because Amazon’s country domains and Google’s .cn and .com.hk domains all use it. The check cannot merge brands whose domains have different names: all 8 Segoe UI homepages are Microsoft properties such as microsoft.com, office.com, azure.com and xbox.com.
What This Means for Your Website
- There is no single right font. The most popular choice covers only 8% of these homepages. Choose for your brand, your readers and your languages, not for popularity. For a shortlist of the best fonts for websites in 2026, judged by job rather than popularity, see our font selection guide.
- One or two families are enough. That is what most of the web’s biggest homepages use. Spend the effort on sizes, spacing and hierarchy instead; the website typography guide covers those details.
- 16px body text is the norm. When we revisited these homepages on 17 October 2026, the median paragraph text on the 482 we could measure was 16px with a line height of 1.5, and 54% used 16px or more.
- Test what renders, not what you declared. Your CSS may name a font that never draws a word on some devices. Our free Website Font Checker lists the families, sources and files a page references; confirm the rendered font in your browser’s developer tools (in Chrome: Elements, then Computed, then Rendered Fonts).
- Self-hosting is normal. If you load Google Fonts, the Font Self-Hosting Helper turns a Google Fonts URL into WOFF2 download links and self-hosted
@font-faceCSS. - Keep text visible while fonts load. Use
font-display: swaporoptionaland a fallback stack with similar proportions.
Method
Sample. We took the top 1,000 entries of Tranco list L5PZ4, created on 25 September 2026. Tranco is a research ranking that averages Chrome UX Report, Cloudflare Radar, Farsight, Majestic and Cisco Umbrella data over 30 days (27 August to 25 September 2026) and lists registrable domains. The frame was fixed before the crawl: we did not replace failed domains with lower-ranked ones, because that would favour sites that do not block crawlers. We excluded 12 adult sites before crawling and did not visit them.
Crawl. Each domain got one homepage visit (https:// plus the domain, following redirects, with a single www. fallback after network errors) in headless Chromium 153 on macOS 27, from one connection in Lithuania, with a 1366×900 desktop viewport, US English locale and a normal Chrome user agent carrying the token WebAlohaFontStudy. We checked robots.txt before each visit and left out every page whose robots.txt disallows crawlers, including pages reached through a redirect. We waited up to 30 seconds for the page, then for fonts to finish loading, and did not click, scroll or accept cookie banners. At most four sites loaded at a time. Domains that failed at the network level or timed out were retried once; none of them loaded on the second attempt.
Declared fonts. Every font family named in the page’s stylesheets (read through the CSSOM and from the downloaded stylesheet text, including cross-origin CSS), @font-face rules, font stacks in CSS custom properties, Google Fonts URLs and fonts added through the FontFace API.
Rendered fonts. For every visible text element (excluding cookie-consent banners), we asked Chromium through the DevTools Protocol method CSS.getPlatformFontsForNode which font it actually used for the glyphs, and weighted the answer by the number of characters. The main body font is the family with the most characters outside h1 to h3; the main heading font is the family with the most characters inside them. Web fonts are named by their CSS family; names are normalised (for example Inter var, InterVariable and a Next.js name such as __Inter_d65c78 all count as Inter), and icon and emoji fonts are excluded.
Outcomes. Every one of the 1,000 domains has exactly one outcome in the dataset:
| Outcome | Domains | Meaning |
|---|---|---|
| Measured | 511 | Homepage loaded and measured |
| Duplicate | 50 | Redirected to a homepage already measured for a higher-ranked domain (for example youtu.be) |
| Disallowed by robots.txt | 44 | The site asks crawlers not to fetch its homepage, so we did not |
| Blocked, timed out or blank | 119 | Bot protection (74), no page within 30 seconds (42) or no visible text (3) |
| No public homepage | 264 | Mostly CDN, DNS, API and tracking domains: no web server for the bare domain or its www host (DNS, connection or certificate errors, 214), an HTTP error (29), a non-HTML response (20) or a parked domain (1) |
| Excluded adult site | 12 | Not visited |
Leaving out duplicates, excluded sites and domains without a public homepage, 674 domains remain, and we measured 511 of them: a success rate of 76%. Robots.txt refusals, blocks and timeouts all count as failures in that rate. The dataset file includes the definitions we used. The full protocol, the run manifest and the corrections log, including every fix we made after the pilot and after the crawl, follow below.
Limits
- One place, one moment, one device type. A single connection in Lithuania on 26 September 2026, desktop viewport only. Regional redirects, EU consent walls and geo-blocks follow from that, and sites change their fonts.
- Homepages only. Inner pages, apps and logged-in areas can use other fonts. We did not scroll, so text that appears only after scrolling or interaction is missing.
- Installed fonts are Mac results. Web fonts look the same everywhere, but system and installed fonts depend on the operating system. Windows and Android visitors would see Segoe UI, Arial or Roboto in some of our Mac rows.
- Missing sites may differ. 44 domains disallowed crawlers, among them facebook.com, x.com, reddit.com and netflix.com, and 74 blocked our identified crawler, among them nytimes.com, etsy.com and walmart.com. Their fonts are not in the results.
- Consent banners and hidden content. We excluded text inside detected cookie-consent containers, which we found on 224 of 511 (44%) homepages, but other overlays still count. Text in iframes and closed shadow roots is out of reach, and yahoo.com, for example, showed only a consent page.
- Declared counts depend on readable CSS. Styles injected after our measurement are missed, and a family named in the CSS may be used on other pages.
- Names are normalised by rules. Weight, version and format suffixes are merged into one family. Brand builds of public families keep their own names, and two unrelated fonts that share a name are counted together.
Full Protocol
We wrote the protocol on 26 September 2026, before any homepage in the sample was crawled. A technical pilot of 75 homepage visits then led to seven amendments, made before the full crawl and listed in the corrections log. Everything below is the protocol as applied.
Research questions
- Which font families do the homepages of very popular websites actually render for body text and for headings?
- How does that differ from the families their CSS declares?
- Where do the fonts come from: Google Fonts, Adobe Fonts, other font services, self-hosted files or fonts installed on the device?
- How many font families and font files does a popular homepage use?
Sample frame and exclusions
- List: Tranco list L5PZ4, created on 25 September 2026 at 22:00 UTC with the default configuration: Chrome UX Report, Farsight, Majestic, Cloudflare Radar and Cisco Umbrella, averaged over 30 days (27 August to 25 September 2026) with the Dowdall rule, registrable domains only.
- Frame: the top 1,000 entries, read on 26 September 2026. The frame is fixed: excluded or failed domains are never replaced with lower-ranked ones, because replacing on crawl success would favour sites that do not block crawlers.
- Why Tranco: it is a research ranking designed to resist manipulation. It ranks domains, not websites, so many entries are CDN, DNS, API, advertising or telemetry domains. We keep them in the frame and report what happened to each one.
- Pre-crawl exclusion: 12 adult domains, identified by name before the crawl under the rule “a domain whose primary purpose is sexually explicit content or its delivery network”, were not visited. A visited page carrying an adult rating label would also have been excluded and reported separately.
Crawl settings
- Machine: macOS 27.0 (arm64) with no user-installed fonts, so installed-font results are those of a default Mac.
- Network: one internet connection in Lithuania (EU), one IP address.
- Browser: Playwright 1.63.0 with its bundled headless Chromium 153.0.8010.12.
- Context per site: a fresh browser context with no shared cookies or cache, a 1366×900 viewport at device scale factor 1, locale en-US, JavaScript on, service workers blocked and HTTPS errors not ignored.
- User agent: a normal Chrome desktop user agent with the token
WebAlohaFontStudy/1.0 (+https://webaloha.co/). No stealth plugins or other techniques to evade bot detection. - robots.txt: fetched once per domain before the homepage and matched under RFC 9309 for the token
WebAlohaFontStudy, falling back to the*group. A disallowed/means no visit. A 4xx robots.txt means no restrictions and a 5xx means complete disallow, as RFC 9309 specifies. - Visit: one navigation to
https://plus the domain, following redirects. Only after a network-level failure (DNS, connection or TLS) do we try thewww.host once, after checking its robots.txt. Never plainhttp://. - Waiting: up to 30 seconds for DOMContentLoaded, then up to 15 seconds for the load event, 5 seconds for network idle, 5 seconds for
document.fonts.readyand 1.5 seconds to settle. No clicks, scrolling, typing, consent interaction or screenshots. - Politeness: at most four sites at a time, each visited once plus its robots.txt, in rank order.
Outcome rules
Each attempted domain gets exactly one outcome, assigned in this order:
| Outcome | Rule |
|---|---|
| Excluded adult site | On the pre-crawl list, or the page carries an adult rating label |
| Disallowed by robots.txt | robots.txt disallows / for our token or for *, or returned a 5xx status |
| No public homepage: unreachable | DNS, refused or unroutable connection, or TLS error on both the domain and its www. host |
| Timed out | No DOMContentLoaded within 30 seconds |
| Blocked | Final status 403, 429 or 451, a Cloudflare challenge header, a dropped connection, or a short page whose title or text matches a bot-challenge or geo-block pattern |
| No public homepage: HTTP error | Any other final status of 400 or more |
| No public homepage: not HTML | The final response is JSON, XML, plain text or a download |
| No public homepage: parked | A server default page or a domain-parking page |
| Blank | An HTML page with no visible text after waiting |
| Duplicate | The final host was already measured for a higher-ranked domain |
| Crawler error | Any other failure of our crawler |
| Measured | Everything else |
The success rate is measured homepages divided by eligible domains, where eligible excludes unreachable, HTTP error, not HTML, parked, duplicate and excluded domains. Robots.txt refusals, blocks, timeouts and blank pages stay in the denominator. Below 70%, the article would have stayed a draft.
What we measured
- Declared fonts: every
font-familyvalue in the page’s CSS, read through the CSSOM (including nested@media,@supports,@layer,@containerand@importrules) and from the downloaded text of every stylesheet, inline style and style attribute; every@font-facefamily and every family added through the FontFace API; font stacks held in CSS custom properties whose names contain “font” or “family”; and families named in Google Fonts URLs. Generic families and CSS-wide keywords are not counted as families. - Loaded fonts: faces with the status “loaded” in
document.fonts, with their weight range, style andfont-displayvalue, and every font file response with its host and size. - Font sources: each downloaded font file is classified by host as Google Fonts, Adobe Fonts, another font service, a public open-source CDN, or self-hosted (everything else).
- Rendered fonts: every visible element with direct text, outside scripts, styles, SVG and detected cookie-consent containers, including open shadow roots. Elements are grouped by computed family, weight and style; for each group, Chromium’s DevTools Protocol method
CSS.getPlatformFontsForNodeis called on up to five of its largest elements (at most 300 per page) and reports the font actually used for the glyphs. Characters are attributed in proportion to the glyph counts. - Roles: text inside an
h1,h2orh3counts as heading text, everything else as body text. The main body font is the rendered family with the most body characters; the main heading font is the one with the most heading characters. Icon and emoji fonts are excluded from both.
Names, categories and reporting rules
- Names: compared without regard to case; build-tool hashes, generated fallback names, weight and style words, variable-font markers and “Web” suffixes are removed; width words such as “Condensed” are kept because they name separate families. A short alias table merges spellings and optical sizes of one family, such as Inter Display and Inter. Brand builds of public families, such as Shopify-Inter, keep their own names.
- System UI:
system-ui,-apple-system,BlinkMacSystemFontand similar keywords request the operating system’s interface font, which our Mac renders as San Francisco. - Categories: sans-serif, serif, monospace, display or script, taken from a curated table, then from the generic fallback the sites themselves declare, then from the family name. Anything else is reported as unclassified, not guessed.
- Percentages: every share states its n, rounded to whole numbers with one decimal below 1%. The frame is a near-census of one ranking, not a random sample, so we publish no margins of error and describe non-response instead.
- Brand check: the main tables are repeated keeping only the highest-ranked measured homepage per brand label, as shown in the brand section above.
- Data handling: raw per-site output stays private. The published dataset holds aggregates and one row per ranked domain with public facts only, and no page text, screenshots, cookies or personal data.
Run Manifest
| Item | Value |
|---|---|
| Ranking | Tranco L5PZ4, created 25 September 2026, top 1,000 entries |
| Technical pilot | 26 September 2026, 75 homepage visits in three batches of 30, 33 and 12, kept out of the dataset |
| Main pass | 26 September 2026, 11:27 to 11:51 UTC |
| Retry pass | 26 September 2026, 11:51 to 11:58 UTC: 261 unreachable, timed-out or failed domains visited once more; none loaded |
| Extra visit | 4 domains revisited after a measurement fix (correction 1 below); all were bot-protection pages |
| Redirect check | robots.txt fetched once for each of the 123 hosts that measured homepages redirected to; 2 disallowed us and 3 homepages were removed |
| Machine and browser | macOS 27.0 (arm64), no user-installed fonts; Headless Chromium 153.0.8010.12 (Playwright 1.63.0) |
| Location | Lithuania (EU), one IP address |
| Viewport and locale | 1366x900, en-US |
| Concurrency | At most 4 sites at a time |
| Outcomes | 511 measured, 50 duplicates, 44 disallowed by robots.txt, 74 blocked, 42 timed out, 3 blank, 214 unreachable, 29 HTTP errors, 20 not HTML, 1 parked, 12 excluded |
| Success rate | 511 of 674 eligible domains (76%); coverage 511 of 1,000 (51%) |
| Follow-up run | 17 October 2026: the 511 measured homepages revisited once with the same settings to record body text size and line height; 482 measured |
| Dataset file | font-study-2026.json, 260 KB, SHA-256 0e5dbeb676afddc48f28a729d3c79db268d725ce494b4ac64b594e39605c7780 |
The crawler and aggregation scripts are not published. If you need them to replicate the study, ask us and we will share them.
Corrections Log
Amendments after the pilot, before the full crawl (26 September 2026). None was chosen by looking at results of the full crawl, which had not started.
- Mac system font names. Named SF Pro families count as ordinary families, because Apple serves SF Pro as a web font. Only the system keywords and Chromium’s hidden platform names count as the system UI font. The pilot had labelled apple.com’s web font as the system font.
- Consent containers. Only known consent-management containers, and elements whose names combine “cookie”, “consent”, “gdpr” or “privacy” with a banner word, are excluded, and only when at most 1.5 viewport heights tall. The broader first rule removed all text from consent vendors’ own homepages.
- Shadow DOM. Text inside open shadow roots is included (msn.com renders its content there), and the probe no longer writes attributes into the page.
- Dropped connections. A connection that a server accepts and then drops is classified as blocked, not unreachable, which keeps it in the success-rate denominator.
- Name normalisation. Version suffixes, Monotype-style suffixes and numbered weights are removed; optical-size members of one family are merged through an explicit alias table; localised Mac font names are mapped to English names.
- Naming rule. Web fonts are named by their CSS family, except for Next.js hashed names, where the font file’s family is used.
- Retry pass. Unreachable, timed-out and failed domains are visited once more with the same protocol, and the second outcome is final.
Corrections after the full crawl (26 September 2026, before publication). Each is a rule applied to every record; none selects sites by the fonts they use.
- Probe failure on bot-challenge pages. Four domains (bloomberg.com, walmart.com, zillow.com and fiverr.com) crashed the probe. After the fix they were visited once more; all were bot-protection pages and count as blocked.
- Icon glyphs inside text. Icon glyphs reported with surrounding text had been merged into the text family; three homepages lost their main font as a result. Icon and emoji glyphs now keep their own name.
- Case-insensitive face matching. A stack family now matches a loaded face regardless of case, as CSS does.
- Site aliases of known families. When the CSS name is unknown but the font file names a known family, the file’s family is used.
- Name clean-up. Build hashes and junk internal names are removed and Latin diacritics are matched (Söhne and Sohne).
- Sources from downloaded files only. Fonts embedded as
data:URIs are reported separately instead of as a font source. - robots.txt of redirect targets. Three homepages that redirected to hosts disallowing us were reclassified as disallowed and removed.
- First family not rendered. The measure now skips leading emoji, icon and metric-fallback families and counts a loaded web font as used. The count fell from 39 to 26 homepages.
Together, these corrections changed the measured homepages from 513 to 511, found a main body font for all 511 (previously 3 were missing) and left the top five body fonts and their order unchanged.
After publication. No published result has been corrected since 26 September 2026. On 17 October 2026 we added the body text size measurement as separate data. On 20 October 2026 we published this protocol, the run manifest and this log; no data changed.
Download the Data
The dataset is a single JSON file: download font-study-2026.json. It contains every aggregate on this page plus one row per ranked domain: rank, domain, outcome, final host, main body and heading fonts with their type, font sources, number of font files and kilobytes, and counts of declared and rendered families. It contains no page text, screenshots or personal data.
If you use the data, please link to this page and cite the ranking: Le Pochat et al., “Tranco: A Research-Oriented Top Sites Ranking Hardened Against Manipulation”, NDSS 2019, list L5PZ4.
Frequently asked questions
What is the most common font on the top 1,000 websites?
No single font dominates. We measured 511 distinct homepages behind the top 1,000 domains of the Tranco ranking in September 2026. Inter drew most of the body text on 41 of them (8%), the operating system's own UI font on 38 (7%), Arial on 29 (6%), and Open Sans and Roboto on 26 each (5%). In total, 213 different families served as the main body font.
What are the most popular Google Fonts on top websites?
Among the main body fonts on 511 measured homepages, the most popular Google Fonts families were Inter on 41 (8%), Open Sans and Roboto on 26 each (5%), Source Sans on 15 (3%), and Lato and Poppins on 9 each (2%). Using a Google Fonts family does not mean loading it from Google: 77% of all measured homepages downloaded font files from their own domain or CDN, and 21% from Google Fonts servers.
Do top websites use Google Fonts?
Some do, but most self-host. 108 of 511 measured homepages (21%) downloaded font files from Google Fonts servers, a count that includes Google's own sites. 396 (77%) downloaded font files from their own domain or CDN, 9 (2%) used Adobe Fonts and 68 (13%) downloaded no font files at all.
Do big websites use system fonts?
A minority does. 38 of 511 homepages (7%) set most body text in the system UI font, which is San Francisco on a Mac, Segoe UI on Windows and Roboto on Android. Another 86 (17%) relied on other installed fonts such as Arial or Helvetica. 387 (76%) used a downloaded web font.
Why is the font in the CSS not always the font you see?
A font-family value is a list of wishes, and the browser uses the first family it can. Arial appeared in the CSS of 443 of 511 homepages (87%) but drew the main body text on only 29 (6%). On our Mac, 26 homepages (5%) drew their main body text without using the first family their CSS asked for, mostly because it was a Windows font or a web font that never loaded.
Do popular websites use serif or sans-serif fonts?
Sans-serif dominates. It was the main body font on 486 of 511 homepages (95%) and the main heading font on 413 of 458 homepages with headings (90%). Serif body text appeared on 19 homepages (4%), about half of them news publishers such as the BBC, NPR and the Financial Times.
How many fonts does a popular homepage use?
Usually two families or fewer. The median homepage drew its visible text in 2 font families and downloaded 4 font files. 326 of the 458 homepages with headings (71%) used the same family for headings and body text.