---
title: "Themes"
description: "The built in layouts your blog can use, how to preview one, what an article page assembles around your text, and what switching a theme does."
updated: "2026-08-29"
verifiedAgainst:
  - packages/shared/src/themes.ts
  - apps/web/components/theme-configurator.tsx
  - apps/blog-renderer/lib/article-content.ts
  - apps/blog-renderer/app/[slug]/page.tsx
---

Your blog's layout comes from a theme. Three are built in, each maintained by
Blogged, so a theme keeps working as the product changes.

| Theme | Suits |
| --- | --- |
| **Minimal SaaS** | A blog beside a marketing site. Generous whitespace, product forward, reads like a product page in essay form. |
| **YC Editorial** | Long form writing where the argument carries the piece. |
| **Developer Docs** | Technical writing with code, structure and reference material. |

## Previewing

Every theme has a live preview showing your own content, at desktop and phone
widths. Preview before switching: a theme that suits a long essay can leave a
short changelog post looking sparse.

## Switching

Switching a theme changes the presentation of every post at once. It does not
touch the posts themselves: no content is rewritten, no URL changes, and nothing
needs republishing.

## The table of contents on an article

Article pages build their own contents list from the headings in the article.
There is no setting to turn it on, and none to turn it off.

<PropertyList>
  <Property name="What it collects">
    The second and third level headings in the body. The article title is not an
    entry in it, and neither is anything inside a call to action block, a
    related posts block or a contents list you wrote yourself.
  </Property>
  <Property name="When it appears">
    Only when the article has at least three of those headings. A short post
    with two sections does not get one, because a contents list of two entries
    is furniture rather than navigation.
  </Property>
  <Property name="On a very long article">
    Past forty entries the list is shortened to the top level headings alone
    where that still leaves a usable outline, and it is labelled "Main sections"
    rather than "On this page" so the change is visible rather than silent.
  </Property>
</PropertyList>

<Callout variant="tip" title="Writing your own contents list suppresses the automatic one">
  This is the way to take control of it. Put a heading reading "Contents",
  "Table of contents" or "On this page" in the article, and follow it
  immediately with a list holding at least two links to anchors in that same
  article. The automatic one then stands down and yours is what readers see.

  It has to be a real list of real in page links directly after the heading. A
  heading with a paragraph under it, or with links pointing somewhere else, does
  not count and the automatic list still appears.
</Callout>

## Where article context sits

Three pieces of context around an article can each be placed independently,
either in the sidebar or below the article. Moving them never hides anything.

| Context | Default placement |
| --- | --- |
| Reader feedback | Sidebar |
| Category | Below the article |
| Tags | Below the article |

The contents list is not one of these. It is derived from the article body and
is not placed by this setting.

## What a theme decides and what it does not

<PropertyList>
  <Property name="The theme decides">
    Layout, typographic scale, how lists and cards are arranged, how images sit
    in the flow, and the shape of the homepage.
  </Property>
  <Property name="You decide">
    Colours, fonts within the theme's scale, logo, navigation, homepage content
    and what appears in the footer. See [brand and typography](/blog/brand).
  </Property>
</PropertyList>
