# 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. - Page: https://characterquilt.com/branding/substack - Machine-readable JSON: https://characterquilt.com/branding/substack.json - Per-page llms.txt: https://characterquilt.com/branding/substack/llms.txt ## Quick Facts | Field | Value | |---|---| | Primary | #FF6719 | | Accent | #0083D5 | | Body Font | Roboto | | Heading Font | Roboto | ## Color Palette - primary: #FF6719 - accent: #0083D5 - background: #FFFFFF - textPrimary: #363737 - link: #0083D5 ## Typography - primary: Roboto — https://fonts.google.com/specimen/Roboto - heading: Roboto — https://fonts.google.com/specimen/Roboto ## Visual Assets - Favicon: https://substackcdn.com/icons/substack/favicon.ico - Social card (og:image): 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 ## UI Components - 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, marketing materials. - **No One is Talking About AI's Impact on Reading** - Image: https://substackcdn.com/image/fetch/$s_!fLoS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0eb309b1-4731-4a34-9134-18bb7883f07b_6912x3456.png - Source: https://marcwatkins.substack.com/p/no-one-is-talking-about-ais-impact - **A guide to switch your blog to Substack and grow a business** - Image: https://substackcdn.com/image/fetch/$s_!AtiM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc39be85c-80f2-4c8b-8a38-6a11eeab330b_4000x2418.png - Source: https://on.substack.com/p/switch-blog - **ChinAI Newsletter | Jeffrey Ding | Substack** - Image: https://images.unsplash.com/photo-1651289082485-6c06ea213736?fm=jpg&q=60&w=3000&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D - Source: https://chinai.substack.com/ - **Q&A: Should We Drop the Word 'Blog' in Order to Gain Credibility?** - Image: https://images.unsplash.com/photo-1638342863994-ae4eee256688?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wzMDAzMzh8MHwxfHNlYXJjaHwzMHx8YmxvZ2dpbmd8ZW58MHx8fHwxNzY5NjExMDc3fDA&ixlib=rb-4.1.0&q=80&w=1080 - Source: https://writereverlasting.substack.com/p/q-and-a-should-we-drop-the-word-blog - **Getting started with Live Video on Substack – Substack, Inc** - Image: https://support.substack.com/hc/article_attachments/33692743532308 - Source: https://support.substack.com/hc/en-us/articles/30316077882516-Getting-started-with-Live-Video-on-Substack - **What's the carbon footprint of using ChatGPT?** - Image: https://substack-post-media.s3.amazonaws.com/public/images/c4c3684d-9b75-439f-87c0-37a6cbabba58_2893x4000.jpeg - Source: https://hannahritchie.substack.com/p/carbon-footprint-chatgpt ## Working with these fonts 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. ## Machine-Readable Profile ```json { "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 } } } ```