Skip to main content

Website Font Finder

Discover typography stacks, font families, weights, and web font providers used on any live webpage in real time.

Target Site: https://hrekov.com
3 Fonts Detected

Type Tester & Live Font Preview

Size: 20px

Inter

Google Font
The quick brown fox jumps over the lazy dog
Detected Weights: 400, 500, 600, 700
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');
Open Specimen ↗

Roboto Mono

Google Font
The quick brown fox jumps over the lazy dog
Detected Weights: 400, 500
@import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;500&display=swap');
Open Specimen ↗

Technical Architecture: Reverse-Engineering Web Typography Inspection​

Modern web typography relies on a combination of self-hosted @font-face definitions, hosted cloud font delivery networks (Google Fonts, Adobe Typekit), and local system font fallbacks.

The Website Font Finder bypasses browser CORS barriers using a serverless proxy endpoint (/api/fetchFonts) to parse linked stylesheets and extract font rules.


1. Stylesheet Scanning & @font-face AST Parsing​

The serverless function scans <link rel="stylesheet"> tags and inline <style> blocks, parsing CSS declarations to extract font family metadata:

// api/fetchFonts.js (font-face extraction)
function parseFontFaceRules(cssText) {
const fontFaces = [];
const fontFaceRegex = /@font-face\s*\{([^}]+)\}/gi;
let match;

while ((match = fontFaceRegex.exec(cssText)) !== null) {
const block = match[1];
const familyMatch = block.match(/font-family\s*:\s*['"]?([^'";]+)['"]?/i);
const weightMatch = block.match(/font-weight\s*:\s*([^;]+)/i);
const styleMatch = block.match(/font-style\s*:\s*([^;]+)/i);
const srcMatch = block.match(/src\s*:\s*([^;]+)/i);

if (familyMatch) {
fontFaces.push({
family: familyMatch[1].trim(),
weight: weightMatch ? weightMatch[1].trim() : '400',
style: styleMatch ? styleMatch[1].trim() : 'normal',
src: srcMatch ? srcMatch[1].trim() : null
});
}
}

return fontFaces;
}

2. Provider Resolution: Google Fonts & Adobe Typekit​

In addition to static CSS, the parser inspects external stylesheet links to identify managed font delivery services:

function extractFontProviders(html, $) {
const providers = [];

// Google Fonts API v2: fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap
$('link[href*="fonts.googleapis.com"]').each((_, el) => {
const href = $(el).attr('href') || '';
const url = new URL(href, 'https://fonts.googleapis.com');
const families = url.searchParams.getAll('family');
providers.push({ provider: 'Google Fonts', families });
});

// Adobe Fonts / Typekit: use.typekit.net/xxxx.css
$('link[href*="use.typekit.net"]').each((_, el) => {
const href = $(el).attr('href') || '';
providers.push({ provider: 'Adobe Typekit', stylesheet: href });
});

return providers;
}

3. Web Font Formats & Performance Reference​

Font FormatMIME TypeCompression / EfficiencyBrowser Support
WOFF2font/woff2Custom Brotli compression (~30% smaller than WOFF)97%+ modern browsers (Standard)
WOFFfont/woffStandard zlib/gzip compressionLegacy fallback
TTF / OTFfont/ttfUncompressed or raw TrueType/OpenType tableDesktop operating systems

Optimal font-display Strategies​

  • font-display: swap: Renders fallback system text immediately until the web font finishes loading, eliminating FOIT (Flash of Invisible Text).
  • font-display: optional: Grants the browser a strict 100ms budget to load the webfont; if delayed, the fallback font is used permanently for that pageview to protect Core Web Vitals (CLS/LCP).

4. Client-Side Security & Proxy Data Guarantee​

  • No Session Storage: Stylesheets and target pages are evaluated in memory and discarded upon response transmission.
  • Respects CORS Standards: Font files themselves are inspected for descriptive headers and not persisted on local disks.
  • SSRF Shield: Blocks requests targeting internal private addresses and loopback interfaces.

Get notified about updates to this tool

No spam. Just high-quality updates about new features and guides.