Most palette generators give you five swatches that look beautiful in Figma. The problem: a newsletter writer doesn't ship in Figma. They ship in an email pipeline that runs through Gmail, Apple Mail, Outlook, Yahoo, Superhuman, and a half-dozen mobile clients — each of which renders color slightly differently and at least one of which (Gmail) actively rewrites your colors when the recipient is in dark mode. A palette that aces a Figma preview can collapse into mud the moment it hits a real inbox.
This generator is built around the assumption that your palette is going to be re-rendered, dark-mode-shifted, and clipped past Outlook's ten-year-old VML quirks — and it has to look like one brand on the website, in the welcome email, on the social card, and on the paid-tier upgrade page. Every harmony rule it produces is filtered through that constraint. If your accent flattens against Gmail's dark gray, the tool flags it. If your background gets crushed by Outlook's color rounding, the tool tells you. If a pair fails WCAG AA on a light or dark email theme, the tool says so before you press Send.
The single biggest visual decision in a newsletter is the accent — the link color, the button background, the section dividers. Gmail's dark mode quietly rewrites that color for roughly half of mobile readers, and the algorithm is opinionated: it desaturates near-black, lightens deep purples, and pushes pure reds toward orange. The generator's email-safe mode tests every accent candidate against Google's published color-mapping behavior so the link blue you picked stays blue, not Gmail-corrected lavender.
If you publish on Substack, you get one accent slot. Beehiiv gives you primary, accent, and background. Ghost themes expose the full CSS variable block. Most writers eyeball a different shade for each platform and end up with three subtly mismatched brands. Generate the palette once, export the platform-specific mapping, and you'll have one consistent identity from the welcome email to the public archive. Substack and Beehiiv both accept hex directly; Ghost accepts the full CSS block.
Your highest-leverage emails are the welcome (first 60 seconds of the relationship) and the upgrade page (every paying subscriber sees it). They share design DNA but typically live on different platforms — the welcome in your ESP, the upgrade page on your domain or on the platform's checkout. The palette exports a CSS file for the upgrade page and a hex list for the ESP's template editor, so the purple on the "Upgrade" button is the exact same purple as on your homepage hero.
Newsletters with guest contributors keep accumulating one-off graphics — a contributor exports something out of Canva using a slightly different purple, then a sponsor mock-up does it again, and within six months the brand has fragmented. The generator outputs semantic names along with the colors — brand, accent, quiet, ink, warn — so a guest's designer can use them correctly from a one-line spec sheet without a long Slack thread.
The little PAID or PREMIUM pill on member-only posts is one of the most-clicked color decisions in the whole system. Generic gold (#FFD700) looks cheap in dark mode and screams "Microsoft Office 2007" in Outlook. The generator's premium-pill preset suggests muted-but-warm hex codes (e.g., #d4a056, #c084fc) that hold their tone in both themes and don't trigger the Gmail color-shift algorithm.
| Tool | Email-safe filter | Gmail dark check | Substack/Beehiiv/Ghost map | WCAG AA | Free |
|---|---|---|---|---|---|
| TinyTools palette | Yes | Yes | All three | Both modes | Yes |
| Coolors | Generic | No | No | Pro | Limited |
| Adobe Color | No | No | No | Yes | With account |
| Canva color palette | Visual only | No | No | No | Pro for kit |
| Beehiiv built-in | Inside Beehiiv | No | Beehiiv only | No | Yes |
Here is a quick check for whether your accent will survive a real subscriber's inbox. Open Gmail on Android, switch the system to dark mode, and send yourself a test of your latest issue. If your accent button still looks like the color you picked — same hue, same vibe — you're fine. If it has visibly drifted (a deep purple turned lavender, a slate blue turned cyan, a black background lightened to charcoal), the color is being rewritten. The generator runs an approximation of Gmail's transform on every preview and flags hex values that would shift, so the issue you ship is the issue your subscriber actually sees.
// Gmail dark-mode color rewrite (2026, approximate)
{
"very_light_bg": "darkened to ~#1f1f1f",
"very_dark_bg": "lightened to ~#2a2a2a (loses near-black)",
"saturated_red": "shifted toward orange",
"deep_purple": "lightened toward lavender",
"rule_of_thumb": "Mid-saturation hues at L=40-60 are the most stable."
}
// Substack accent (single hex slot)
brand: #a855f7
// Beehiiv brand colors
primary: #a855f7
accent: #ec4899
background: #0a0a0f
// Ghost theme variables
:root {
--ghost-accent: #a855f7;
--ghost-accent-2: #ec4899;
--ghost-bg: #0a0a0f;
--ghost-text: #f5f5fa;
}
// Inline-style email accent (safe across clients)
<a style="background:#a855f7;color:#fff;padding:10px 18px;
border-radius:8px;text-decoration:none;font-weight:600">
Read this week's issue
</a>
#fafafa or a stable off-white that the algorithm leaves alone.#000 gets pulled toward charcoal in dark-mode Gmail, and the resulting contrast falls under WCAG AA. Use #1a1a1f or #222; both render identically to the eye but are stable across the rewrite.#FF0000 shifts toward orange and loses the "danger/urgency" psychology entirely. Use #ef4444; visually identical, algorithmically stable.#FFD700 looks like a Microsoft Word style. Use a muted warm — #d4a056 or #e0a458 — for paid-only badges; both hold up in both themes and don't trigger the Gmail desaturation pass.Pick an accent. Get an email-safe pair, dark-mode-checked exports for Substack, Beehiiv, Ghost, and your site, plus a brand kit you can hand a guest writer in one link.
Open the Color Palette Generator →Yes. The accent is rendered identically across free and paid templates on every major platform — the difference is the badge and access logic, not the brand color. Generate once and the upgrade page, the welcome email, and the locked post all share the same hex.
Yes. The unsubscribe link should be visible (CAN-SPAM and most ESPs require it to be readable) but not clickbait-loud. The generator outputs a quiet color tuned to AA contrast against the email background without competing with the main CTA.
The export gives you the slot mapping for both at once, so a migration doesn't mean re-picking the brand. Paste the same hex into the new platform and the issue archive looks continuous to a subscriber who clicks an old link.
Two solid sources: Litmus's dark-mode guide covers the actual rendering rules across clients, and Can I email… tracks which CSS properties are supported where. Both update when the major clients ship new email-rendering changes.