Shopifont

Shopify Craft · Free, no signup · Last updated

Free Shopify Craft Custom Font Generator

Paste any font name above to generate the exact @font-face CSS, settings_schema.json snippet, and CSS variable overrides Shopify Craft needs to render your custom font without layout shifts.

Craft is an artisan- and maker-leaning free theme that pairs natural product photography with curated typography. Out of the box, Craft ships with the theme's default heading face for headings and the theme's default body face for body — typography that's deliberately transitional serif headings paired with low-contrast body for craft-shop authenticity. If you need a brand-specific face on a artisan & handmade Craft store, this generator builds the three code blocks Shopify expects in seconds.

Generator

Formats
WOFF2 covers ~97% of modern traffic. Add WOFF / TTF only if you need legacy fallbacks.
Apply to
Controls which Dawn typography roots the CSS variable block overrides.

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;
}

How to use this on Craft

  1. Upload your custom font files to your Craft theme's `assets/` folder.

  2. Paste the generated @font-face block into the bottom of `assets/base.css` so Shopify's Liquid `asset_url` filter resolves correctly.

  3. Add the settings_schema.json snippet to expose a Theme Editor toggle for non-technical merchants.

  4. Finally, the CSS variable overrides retarget .product__title, .testimonial__quote and every other element that reads from `--font-heading-family` or `--font-body-family` — meaning your custom face propagates site-wide without touching Craft's core templates.

Frequently asked questions

  • How do I add a custom font to the Shopify Craft theme?

    Upload your font files to Craft's `assets/` folder, paste the @font-face block this generator outputs into the bottom of `assets/base.css`, and override `--font-heading-family` and `--font-body-family` to point at your font name. Craft reads those tokens for every typography rule, so the swap propagates instantly.

  • What font formats does Craft support for custom uploads?

    Craft supports WOFF2, WOFF, TTF, OTF, and EOT — anything the browser can decode. WOFF2 is the only format you strictly need on a modern store; the others are legacy fallbacks. The generator orders them WOFF2 → WOFF → TTF so each browser stops at the smallest file it understands.

  • Will a custom font cause layout shift on Craft?

    Not if you set `font-display: swap` (the generator does this automatically) and reserve typography metrics by overriding Craft's CSS variables instead of swapping fonts via JavaScript. Craft's headings — .product__title, .testimonial__quote — read from `--font-heading-family`, so the override happens before paint and the metric box doesn't change after load.

  • Do I need to edit Liquid to use a custom font on Craft?

    Only once. The @font-face block goes into the bottom of `assets/base.css`, which is CSS, not Liquid. The optional settings_schema.json block is JSON. The only Liquid in play is Shopify's `{{ 'yourfont.woff2' | asset_url }}` filter inside the @font-face, which resolves to the public URL of the file you uploaded.

  • Can I use Google Fonts with Craft instead of self-hosting?

    Craft already supports Google Fonts via the Theme Editor's font picker, but that route is limited to fonts in Shopify's curated catalog. Self-hosting your own WOFF2 unlocks any face — including paid foundry fonts you've licensed — and avoids the third-party request that Google Fonts adds to every page load.