01
Obtain
Download the fonts via google-webfonts-helper — more convenient than fonts.google.com directly, because the tool generates ready-to-use @font-face snippets.
- Pick the font (e.g. Inter, Roboto)
- Select charset:
latin is usually enough; add latin-ext for DE/EU content
- Only the weights you actually use — every file costs load time
- Choose Modern Browsers (
woff2) as the format
- Download the ZIP
02
Place
Create a folder in your project — path example:
/assets/fonts/inter/
inter-v13-latin-regular.woff2
inter-v13-latin-500.woff2
inter-v13-latin-700.woff2
03
Wire up
Paste the snippet generated by gwfh into your CSS and adjust the paths:
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('/assets/fonts/inter/inter-v13-latin-regular.woff2') format('woff2');
}
font-display: swap ensures text is visible immediately while the font is loading.
04
Clean up
Commonly overlooked spots to check:
<link href="https://fonts.googleapis.com/…"> in HTML
@import url('https://fonts.googleapis.com/…') in CSS
- Tailwind configs, Bootstrap themes, WordPress themes
- Third-party widgets, embedded iframes, tracking pixels
- DevTools → Network → filter
font + google: zero hits on googleapis.com or gstatic.com
05
Lock it
Enforce via Content Security Policy — audit artefact and protection against re-introduced Google requests:
Content-Security-Policy: font-src 'self'; style-src 'self'
The browser then blocks any external font load attempt — even if a plugin or theme silently re-references Google.