Home · Branding · Substack

Substack Brand Identity

A complete profile of Substack's visual system — colors, typography, components, and personality — extracted from https://substack.com. Built for designers, agents, and AI tools.

Download JSON
Primary
#FF6719
Accent
#0083D5
Body Font
Roboto
Heading
Roboto

Color Palette

Brand palette extracted from https://substack.com.

primary
#FF6719
rgb(255, 103, 25)
accent
#0083D5
rgb(0, 131, 213)
background
#FFFFFF
rgb(255, 255, 255)
textPrimary
#363737
rgb(54, 55, 55)
link
#0083D5
rgb(0, 131, 213)

Typography

Each font links to its Google Fonts page where available.

primary
Roboto
heading
Roboto
Spectral, serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol
Not found on Google Fonts? Agent Instructions that you can follow if you have permission to use the fonts:

CharacterQuilt.com suggests this flow that can help:

1. Open the company's homepage in a browser with DevTools open.
2. In the Network tab, filter by "Font" (or by extension: woff2, woff, ttf, otf).
3. Hard-reload the page and click around (pricing, blog, careers) — some weights only load on specific routes.
4. For each captured font URL: right-click → Save As to download the file locally.
5. View the page's CSS (DevTools → Sources, or curl the stylesheet URLs) and copy out the matching @font-face declarations. Rewrite each `src: url(...)` to point to your local file path.

Programmatic alternative: load the URL with Playwright or Puppeteer, listen for `response` events whose `Content-Type` starts with `font/`, and write the body to disk. The CSS extraction step is the same.

Only do this if you have permission to use the brand assets — most proprietary fonts are licensed and may not be redistributable.

Visual Assets

Substack favicon
Favicon
Substack social image
Social Card

UI Components

Live previews rendered using Substack's actual button styles.

input
background #FFFFFF textColor #363737 borderColor #E6E6E6 borderRadius 12px shadow none
buttonPrimary
background #FFFFFF textColor #363737 borderRadius 8px shadow rgba(0, 0, 0, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.06) 0px 2px 4px -1px

Brand Personality

Tone: modern Energy: medium Audience: content creators and readers

Substack Brand in the Wild

Real-world brand assets — ads, campaigns, and marketing materials.

Frequently Asked Questions

What is Substack's primary brand color?

Substack's primary brand color is #FF6719. It anchors the visual identity across their website, product UI, and marketing materials.

What accent color does Substack use?

Substack uses #0083D5 as an accent color, typically applied to interactive elements like links, buttons, and call-to-action emphasis.

What font does Substack use?

Substack uses Roboto as the primary typeface across body and headings.

Does Substack use a light or dark theme?

Substack's primary site uses a light color scheme, with a background of #FFFFFF.

How was this brand profile generated?

This profile was extracted from https://substack.com using the Firecrawl branding extraction API, which inspects the live page's CSS, fonts, color tokens, and component styles. It is not affiliated with or endorsed by Substack.

Methodology

Brand data on this page was extracted from https://substack.com on using the Firecrawl branding extraction API, which inspects each site's live CSS, font network requests, color tokens, and component styles. Brand-in-the-wild images were sourced via Google Image Search restricted to ad/webinar/report queries and link out to their original third-party publishers; we link to the source rather than re-hosting third-party content. This page is published by CharacterQuilt and is not affiliated with or endorsed by Substack.

Machine-Readable Profile

Direct endpoints for agents, designers, and tooling. No login or auth required.

{
  "colorScheme": "light",
  "fonts": [
    {
      "family": "Roboto",
      "role": "body"
    },
    {
      "family": "Helvetica",
      "role": "body"
    },
    {
      "family": "Arial",
      "role": "body"
    }
  ],
  "colors": {
    "primary": "#FF6719",
    "accent": "#0083D5",
    "background": "#FFFFFF",
    "textPrimary": "#363737",
    "link": "#0083D5"
  },
  "typography": {
    "fontFamilies": {
      "primary": "Roboto",
      "heading": "Roboto"
    },
    "fontStacks": {
      "heading": [
        "Spectral",
        "serif",
        "system-ui",
        "-apple-system",
        "BlinkMacSystemFont",
        "Segoe UI",
        "Roboto",
        "Helvetica",
        "Arial",
        "sans-serif",
        "Apple Color Emoji",
        "Segoe UI Emoji",
        "Segoe UI Symbol"
      ],
      "body": [
        "Spectral",
        "serif",
        "system-ui",
        "-apple-system",
        "BlinkMacSystemFont",
        "Segoe UI",
        "Roboto",
        "Helvetica",
        "Arial",
        "sans-serif",
        "Apple Color Emoji",
        "Segoe UI Emoji",
        "Segoe UI Symbol"
      ],
      "paragraph": [
        "system-ui",
        "-apple-system",
        "BlinkMacSystemFont",
        "Segoe UI",
        "Roboto",
        "Helvetica",
        "Arial",
        "sans-serif",
        "Apple Color Emoji",
        "Segoe UI Emoji",
        "Segoe UI Symbol"
      ]
    },
    "fontSizes": {
      "h1": "19px",
      "h2": "19px",
      "body": "15px"
    }
  },
  "spacing": {
    "baseUnit": 8,
    "borderRadius": "8px"
  },
  "components": {
    "input": {
      "background": "#FFFFFF",
      "textColor": "#363737",
      "borderColor": "#E6E6E6",
      "borderRadius": "12px",
      "borderRadiusCorners": {
        "topLeft": "12px",
        "topRight": "12px",
        "bottomRight": "12px",
        "bottomLeft": "12px"
      },
      "shadow": "none"
    },
    "buttonPrimary": {
      "background": "#FFFFFF",
      "textColor": "#363737",
      "borderRadius": "8px",
      "borderRadiusCorners": {
        "topLeft": "8px",
        "topRight": "8px",
        "bottomRight": "8px",
        "bottomLeft": "8px"
      },
      "shadow": "rgba(0, 0, 0, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.06) 0px 2px 4px -1px"
    }
  },
  "images": {
    "favicon": "https://substackcdn.com/icons/substack/favicon.ico",
    "ogImage": "https://substackcdn.com/image/fetch/$s_!Xim-!,w_400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Ficons%2Fsubstack%2Ficon.svg"
  },
  "__llm_logo_reasoning": {
    "selectedIndex": -1,
    "reasoning": "No suitable brand logo was found among the candidates. Candidate #0 is a tiny icon not clearly representing the brand, and Candidate #1 is an avatar, not a brand logo.",
    "confidence": 0.3,
    "rejected": true,
    "source": "llm"
  },
  "__llm_button_reasoning": {
    "primary": {
      "index": 0,
      "text": "Get app",
      "reasoning": "The button labeled 'Get app' is the only button available and serves as the primary call-to-action. It is styled with a border radius and specific classes indicating a CTA, despite its white background."
    },
    "secondary": {
      "index": -1,
      "text": "N/A",
      "reasoning": "There is only one button available, so no secondary button can be selected."
    },
    "confidence": 0.8
  },
  "personality": {
    "tone": "modern",
    "energy": "medium",
    "targetAudience": "content creators and readers"
  },
  "designSystem": {
    "framework": "custom",
    "componentLibrary": ""
  },
  "confidence": {
    "buttons": 0.8,
    "colors": 0.9,
    "overall": 0.8500000000000001
  },
  "__llm_metadata": {
    "logoSelection": {
      "llmCalled": true,
      "llmSucceeded": true,
      "finalSource": "llm",
      "rawLogoSelection": {
        "selectedLogoIndex": -1,
        "selectedLogoReasoning": "No suitable brand logo was found among the candidates. Candidate #0 is a tiny icon not clearly representing the brand, and Candidate #1 is an avatar, not a brand logo.",
        "confidence": 0.3
      }
    },
    "buttonClassification": {
      "llmCalled": true,
      "llmSucceeded": true
    }
  }
}

Related Brand Profiles