Themes & branding
Colors, fonts, logo, custom CSS, and optional header/footer HTML.
Public blogs have their own look — separate from the Blogizi dashboard theme. Configure everything under Settings → Theme and Settings → Branding.
Theme colors & font
Available on all paid plans. Leave surface fields blank to keep the light/dark DaisyUI defaults.
- Light or dark mode
- Primary accent (hex) — buttons, links, tags, and OG accents
- Optional primary text color (or auto contrast)
- Surface tokens: background, raised surface, borders, body text, neutral / neutral content
- Optional curated font
Branding
- Project logo (shown in header and OG images)
- Favicon
- Blog description (homepage subtitle)
- Nav links (e.g. Pricing, Docs — up to 5)
- Header CTA button label + URL (shown in the default blog navigation)
- Post CTA card at the bottom of every blog post — title, optional subtitle, and button label + URL (hidden until title and button fields are filled)
- Social links in the footer — Twitter, GitHub, LinkedIn, YouTube, Instagram, Website, and RSS. Choosing RSS prefills your
/rss.xmlURL and shows the feed icon in the footer
Upload logos and favicons via the image uploader — files are stored on Cloudflare R2 and served from your public media URL.
Custom CSS (Pro+)
Paste CSS under Settings → Theme → Custom CSS. Blogizi sanitizes it and scopes every rule under .blog-theme, so it cannot leak into the dashboard.
- Stable hooks:
[data-blog-header],[data-blog-footer],[data-blog-cta],[data-blog-sidebar-cta] @import,expression(), andjavascript:URLs are stripped- Size limit ~50KB
Example — restyle the default header
[data-blog-header] {
border-bottom: 1px solid #262B23;
background: rgba(10, 12, 9, 0.85);
backdrop-filter: blur(20px);
}
[data-blog-header] nav a {
font-size: 15px;
font-weight: 500;
color: rgba(244, 247, 239, 0.8);
}
[data-blog-header] nav a:hover {
color: #9BE84A;
}
[data-blog-header] .btn-primary {
border: 0;
border-radius: 9999px;
background: #ffffff;
color: #0A0C09;
text-transform: none;
font-weight: 600;
}Example — restyle the default footer
[data-blog-footer] {
border-top: 1px solid #262B23;
background: #0A0C09;
}
[data-blog-footer] a {
color: rgba(244, 247, 239, 0.8);
transition: color 150ms ease;
}
[data-blog-footer] a:hover {
color: #9BE84A;
}Example — CTA cards
[data-blog-cta] {
border-radius: 1.25rem;
}
[data-blog-sidebar-cta] {
border-radius: 1.5rem;
}Custom header & footer HTML (Pro+)
When Custom header HTML or Custom footer HTML is non-empty, that markup fully replaces the default React chrome for that slot. Empty fields keep today's header/footer.
- Markup is sanitized on save and again before render (no scripts, iframes, or event handlers)
- Use
{{home}}for the blog home path (works with path mode) - Custom header does not inject blog search or the mobile sidebar CTA bar — you own the chrome
- Size limit ~20KB per field
Example — custom header
The outer <header data-blog-header> wrapper is added for you — paste the inner content only.
<nav class="lp-nav" aria-label="Global">
<a href="{{home}}" class="lp-brand">
<img src="/brand/blogizi-mark.svg" alt="" width="32" height="32" />
<span>Blogizi</span>
</a>
<div class="lp-nav__links">
<a href="https://blogizi.com/docs/get-started">Docs</a>
<a href="{{home}}">Blog</a>
<a href="https://blogizi.com/pricing">Pricing</a>
</div>
<a class="lp-cta" href="https://blogizi.com/sign-in">Start for $0 »</a>
</nav>Example — custom footer
<div class="lp-footer">
<a href="{{home}}" class="lp-brand">
<img src="/brand/blogizi-mark.svg" alt="" width="28" height="28" />
<strong>Blogizi</strong>
</a>
<p>Your agents write. Blogizi publishes.</p>
<nav>
<a href="https://blogizi.com/docs/get-started">Docs</a>
<a href="https://blogizi.com/pricing">Pricing</a>
<a href="https://blogizi.com/tos">Terms</a>
</nav>
</div>Example — CSS for the custom chrome above
[data-blog-header] {
position: sticky;
top: 0;
z-index: 40;
border-bottom: 1px solid #262B23;
background: rgba(10, 12, 9, 0.85);
backdrop-filter: blur(24px);
}
.lp-nav {
margin: 0 auto;
display: flex;
max-width: 80rem;
height: 4rem;
align-items: center;
justify-content: space-between;
gap: 1.5rem;
padding: 0 2rem;
}
.lp-brand {
display: inline-flex;
align-items: center;
gap: 0.625rem;
color: #F4F7EF;
text-decoration: none;
font-weight: 800;
letter-spacing: -0.03em;
}
.lp-nav__links {
display: flex;
gap: 2rem;
}
.lp-nav__links a {
color: rgba(244, 247, 239, 0.8);
text-decoration: none;
font-size: 15px;
font-weight: 500;
}
.lp-nav__links a:hover {
color: #9BE84A;
}
.lp-cta {
display: inline-flex;
align-items: center;
height: 2.5rem;
padding: 0 1.25rem;
border-radius: 9999px;
background: #fff;
color: #0A0C09 !important;
font-weight: 600;
text-decoration: none;
}
[data-blog-footer] {
border-top: 1px solid #262B23;
background: #0A0C09;
}
.lp-footer {
margin: 0 auto;
max-width: 80rem;
padding: 4rem 2rem;
}
.lp-footer a {
color: rgba(244, 247, 239, 0.8);
text-decoration: none;
}
.lp-footer a:hover {
color: #9BE84A;
}Plan limits
Color tokens and branding work on every paid plan. Custom CSS and custom header/footer HTML require Pro or Agency (same gate as Search Console). Solo plans see an upgrade prompt in Settings.