Shopify OS 2.0 · Free, no signup
Free Shopify Custom Font Generator
Conversion-optimized typography without layout shifts. Paste any font name, pick formats, and copy three error-free code blocks tailored for Shopify Dawn and every other OS 2.0 theme.
@font-facesettings_schema.jsonCSS variables
Generator
Live preview
Add to cart · Free shipping · 30-day returns
Drop a WOFF2 / WOFF / TTF file here to preview your actual font. The file stays in your browser — nothing is uploaded.
Paste these three blocks in order. They're independent files in your theme — copying one without the others won't break the store.
Step 1: @font-face CSS
Paste at the bottom of assets/base.css. Uses Liquid's asset_url filter — Shopify resolves the path at render time.
@font-face {font-family: "My Brand Sans";src: url({{ 'my-brand-sans.woff2' | asset_url }}) format('woff2');font-weight: 400;font-style: normal;font-display: swap;}
Step 1: @font-face CSS
Paste at the bottom of assets/base.css. Uses Liquid's asset_url filter — Shopify resolves the path at render time.
@font-face {font-family: "My Brand Sans";src: url({{ 'my-brand-sans.woff2' | asset_url }}) format('woff2');font-weight: 400;font-style: normal;font-display: swap;}
Step 2: settings_schema.json
Adds a Theme Editor section so non-technical merchants can toggle the font on or off.
{"name": "My Brand Sans (custom font)","settings": [{"type": "header","content": "My Brand Sans typography"},{"type": "paragraph","content": "Upload your My Brand Sans files (woff2, woff, ttf, otf, or eot) to your theme's Assets folder. The @font-face block referencing my-brand-sans.* will then resolve via {{ 'my-brand-sans.woff2' | asset_url }}."},{"type": "font_picker","id": "my_brand_sans_heading_font","label": "Heading font (fallback when custom file is unavailable)","default": "assistant_n4"},{"type": "font_picker","id": "my_brand_sans_body_font","label": "Body font (fallback when custom file is unavailable)","default": "assistant_n4"},{"type": "select","id": "my_brand_sans_apply_to","label": "Apply My Brand Sans","options": [{"value": "headings","label": "Headings only"},{"value": "body","label": "Body only"},{"value": "both","label": "Headings and body"},{"value": "off","label": "Disabled"}],"default": "both"},{"type": "checkbox","id": "my_brand_sans_load_woff_fallback","label": "Also load WOFF fallback (legacy browsers)","default": false}]}
Step 3: CSS variable overrides
Retargets Dawn's --font-heading-family / --font-body-family. Survives theme updates.
:root {--font-heading-family: "My Brand Sans", sans-serif;--font-heading-style: normal;--font-heading-weight: 400;--font-body-family: "My Brand Sans", sans-serif;--font-body-style: normal;--font-body-weight: 400;}
How it works
Enter your font
Type the display name and tick the formats your foundry sent you. WOFF2 covers ~97% of modern browsers.
Copy three blocks
The site generates @font-face CSS, a settings_schema.json snippet, and CSS variable overrides — each with a copy button.
Paste into Shopify
Upload the file to your theme's Assets folder, paste the @font-face into base.css, the JSON into settings_schema.json. Save and refresh.
Generators for every free Shopify theme
One generator, thirteen tailored landing pages. Each links the theme-specific selectors, default fonts, and Liquid injection point you actually need.
- DawnMost populargeneral-purpose
- Sensehealth & wellness
- Refreshsport & energy
- Cravefood & beverage
- Originhome & garden
- Studioart & gallery
- Tastespecialty food & wine
- Spotlightfashion & entertainment
- Colorblocknovelty & gift
- Craftartisan & handmade
- Rideoutdoor & sport
- Publishermedia & publishing
- TradeB2B & hardware