How to use web fonts on your website

Web fonts let your website show exactly the typeface you chose instead of a system font. Every free font on Typesay includes a web pack with WOFF2 files and ready made CSS. Here is how to add it in a few minutes.

Updated 1 October 2026 · Typesay guide

1. Download the web pack

On any font page, choose Web WOFF2 + CSS. The zip contains .woff2 files for each weight and a fonts.css file. WOFF2 is the modern web font format: small, compressed and supported by every current browser.

2. Upload the files

Put the .woff2 files in a folder on your site, for example /fonts/. On WordPress, upload them with your theme files or a font plugin; on Shopify, upload them to Files.

3. Add @font-face to your CSS

Copy the rules from fonts.css into your stylesheet. Each rule tells the browser a family name, a weight and where the file lives. A typical rule looks like this: @font-face { font-family: "Inter"; src: url("/fonts/inter-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }

4. Use the font

Set it on the elements you want. For example body { font-family: "Inter", system-ui, sans-serif; } and h1, h2, h3 { font-family: "Playfair Display", Georgia, serif; }. The names after the first are fallbacks while the font loads.

Keep it fast

  • Only load the weights you use. Regular and bold are often enough.
  • Keep font-display: swap so text shows immediately in a fallback font.
  • Preload your main text font with <link rel="preload" as="font" type="font/woff2" crossorigin>.
  • A variable font can replace many separate weight files with one.

Questions, answered

Can I use free fonts on a commercial website?

Yes, if the licence allows it. Open licence fonts such as those under the SIL Open Font License can be embedded on commercial sites for free.

Do I need WOFF as well as WOFF2?

No. Every browser in current use supports WOFF2. WOFF only matters for very old browsers.

Why does my font flash or change after the page loads?

That is font-display: swap working: the fallback shows first, then the web font. Pick a fallback with similar width to reduce the jump, or preload the font.