Skip to content

Todoist Design System

Illustrated and warm: #25221e ink for text and hairlines, one Todoist Red CTA per fold, Graphik and Inter. Todoist's tokens for React and AI coding tools.

Primary color
#e34432
Typeface
Inter
Shape
Mixed
Base radius
8px
Colors
22
Type tokens
11
Components
19
Spacing values
9

About Todoist DESIGN.md

Curated by Dov Azencot, updated May 13, 2026. Source todoist.com (opens in a new tab).

Todoist's marketing system reads like a warm paper notebook, not a SaaS landing page. The hero opens with "Clarity, finally." set in Graphik 600 at 55px with -0.55px tracking, sitting on an off-white canvas decorated with a wavy line doodle and pastel sparkles. The only chromatic voltage on the page is the Todoist Red ("#e34432") burning inside one pill button — "Start for free" — and a thin progress dot on the announcement bar above. Everything else (every headline, every body sentence, every 1px hairline, every checkbox outline) is rendered in the same warm-black ink "#25221e", a near-black that leans olive-brown rather than blue-gray.

This DESIGN.md packages the whole spec into one machine-readable file. Inside: 22 colors tokens covering the warm-black ink scale, the Todoist Red press states, the four pastel tile tints (peach, mint, butter, sky), and the supporting semantic colors for the in-product priority dots; 9 typography tokens split across Graphik (display 38–55px) and Inter (body 12–18px at the unusual weight 475), with a Caecilia serif for testimonial quotes and a hand-drawn Shantell Sans for margin doodles; 6 corner radii anchored on the dominant 8px; 9 spacing steps from 4px to 64px; and 19 components covering the red primary CTA, the secondary outline button, the announcement bar, the testimonial slab, the pastel feature tile grid, the FAB, and the task-row checkbox. Format follows the Google Labs DESIGN.md spec.

A working React developer feeds this file to Claude, Cursor, or Copilot and gets components that match Todoist's discipline — warm-black hairlines instead of a Tailwind gray scale, one red CTA per fold, body text at weight 475 rather than 400, illustration-led pastel tiles instead of gradient cards — instead of a generic shadcn theme. Reference the tokens directly inside Tailwind config, CSS variables, or your own component library. The system is worth studying for one reason: it proves that a productivity brand can hold restraint and warmth at the same time — Linear holds restraint on a black canvas, Notion holds warmth with purple pills; Todoist holds both at once with a notebook-paper canvas and a single red button.

What makes it distinct

5 highlights

  1. Warm-black ink ("#25221e") carries text AND every hairline421 text uses, 417 border uses, no separate gray scale
  2. Single-CTA disciplineTodoist Red ("#e34432") is the only brand voltage, paired with a darker red ("#cf3520") for hover and press
  3. Two-typeface splitGraphik 600 for display at -0.55px tracking, Inter at weight 475 for body (heavier than the 400 default)
  4. 8px radius dominant (33 uses)Buttons, pills, and tiles all share the same corner; pills are reserved for chips and the FAB
  5. Hand-drawn Shantell Sans script in the marginsTodoist signs its illustrations like a notebook, not a marketing site

Live at todoist.com

Todoist in production, as captured. Scroll the window to see the whole page.

Todoist's website at todoist.com

22 colors

Todoist's system runs on #e34432 as its primary voltage, used in 3 of 19 components. Type is set in Inter across 11 tokens from 12px to 55px, weights 400–600. Shape language is mixed across 19 components, blending pills, soft rounds, and squarer corners.

Brand & Accent

Sparing, CTA-only voltage · 3

Surface

Page and card backgrounds · 6

Text

Headlines, body, captions · 6

Borders & Hairlines

Dividers, outlines, rules · 2

Semantic

Status, errors, success, links · 5

11 type tokens

Set in Inter across 11 tokens, from 12px to 55px, weights 400–600. Shown in its own stack: where the font isn't installed, the fallback the file names stands in.

  • display-hero55px · weight 600 · lh 1.15 · tracking -0.55pxThe quick brown fox jumps over the lazy dog
  • display-lg44px · weight 600 · lh 1.15 · tracking -0.44pxThe quick brown fox jumps over the lazy dog
  • display-md38px · weight 600 · lh 1.28 · tracking -0.19pxThe quick brown fox jumps over the lazy dog
  • heading-md22px · weight 600 · lh 1.28The quick brown fox jumps over the lazy dog
  • body-lg18px · weight 475 · lh 1.75 · tracking 0.09pxThe quick brown fox jumps over the lazy dog
  • body-md16px · weight 400 · lh 1.6 · tracking 0.16pxThe quick brown fox jumps over the lazy dog
  • body-sm14.5px · weight 475 · lh 1.5 · tracking 0.18pxThe quick brown fox jumps over the lazy dog
  • button-md15.5px · weight 600 · lh 1.35 · tracking 0.155pxThe quick brown fox jumps over the lazy dog
  • caption12px · weight 500 · lh 1.5 · tracking 0.3pxThe quick brown fox jumps over the lazy dog
  • testimonial-serif20px · weight 400 · lh 1.8The quick brown fox jumps over the lazy dog
  • doodle-script19px · weight 400 · lh 1.6 · tracking 0.19pxThe quick brown fox jumps over the lazy dog

Radii and spacing

6 corner radii and 9 spacing values. Shape language: mixed, on a 8px base radius.

Radii6

  • none0px
  • sm4px
  • md8px
  • lg10px
  • xl15px
  • full9999px

Spacing9

  • xxs4px
  • xs8px
  • sm12px
  • md16px
  • lg20px
  • xl24px
  • xxl32px
  • section-sm48px
  • section64px

19 components

Each rendered from its tokens (color, type, radius, padding) on Todoist's own canvas.

  • Button Primary
    Button Primarybutton-primary
  • Button Primary Hover
    Button Primary Hoverbutton-primary-hover
  • Button Primary Pressed
    Button Primary Pressedbutton-primary-pressed
  • Button Secondary
    Button Secondarybutton-secondary
  • Button Ghost
    Button Ghostbutton-ghost
  • Top Nav
    Top Navtop-nav
  • Announcement Bar
    Announcement Barannouncement-bar
  • Card Feature Peach
    Card Feature Peachcard-feature-peach
  • Card Feature Mint
    Card Feature Mintcard-feature-mint
  • Card Feature Butter
    Card Feature Buttercard-feature-butter
  • Card Feature Sky
    Card Feature Skycard-feature-sky
  • Card Base
    Card Basecard-base
  • Testimonial Quote
    Testimonial Quotetestimonial-quote
  • Type here…
    Text Inputtext-input
  • Type here…
    Text Input Focusedtext-input-focused
  • Checkbox Circle
    Checkbox Circlecheckbox-circle
  • Fab Add Task
    Fab Add Taskfab-add-task
  • Priority Dot Red
    Priority Dot Redpriority-dot-red
  • Badge Meta
    Badge Metabadge-meta

The system, in use

Todoist's tokens on the kind of product it builds.

Marketing heroThe homepage: its nav, a headline and the main call to action.
Todoist
Get started

Plan, build and ship in one place

Bring your team's work together, from the first idea to the final release.

Get startedBook a demo
TodoistA
Active users12,489
Projects342
Tasks done8,921
Avg. response1.8h
ActivityLast 30 days

Todoist design system FAQ

Todoist's tokens, its components and how to use this DESIGN.md in your project.

Use Todoist in your project

One machine-readable file. Drop it into Claude Code, Cursor, VS Code or any AI tool that reads DESIGN.md.

Download DESIGN.md
  1. Download the DESIGN.md

    One machine-readable file: every color, type, radius, spacing, and component token of Todoist.

  2. Feed it to your AI tool

    Drop it into Claude, Cursor, or GitHub Copilot. The agent writes React components and Tailwind classes that match Todoist's visual language.

  3. Reference the tokens directly

    Or paste the values into your Tailwind config, CSS variables, or component library: every color, size and radius is a quoted, ready-to-copy value.

Read the full DESIGN.md overview, rationale, do’s and don’ts

Overview

Todoist's marketing chrome is a notebook-paper system, not a SaaS landing page — the canvas is an off-white "#ffffff" decorated with hand-drawn wavy-line doodles and pastel sparkle marks in the margins, and the only chromatic action on the page is a single red pill ("#e34432") burning at the top-right and again at the end of the hero. Set in Graphik 600 at 55px with -0.55px tracking, the headline "Clarity, finally." sits over the doodle without competing with it.

The single chromatic accent is Todoist Red {colors.primary} ("#e34432") — declared under the --color-td-primary CSS variable and used on exactly two surfaces above the fold: the "Start for free" CTA pill and a small dot inside the announcement bar. Hover transitions to {colors.primary-hover} ("#ee5244") and pressed state lands on {colors.primary-pressed} ("#cf3520"). Todoist holds the red back from body text, hairlines, and large surfaces — the rest of the system runs on a single warm-black ink (#25221e) that does double duty as text AND as every 1px border.

Warm-black duality: The extracted CSS maps "#25221e" to 38 distinct variable names — --display-onlight-primary, --ui-border, --field-outline-border-idle, --card-border-onhover, and so on — and the same hex appears 853 times across the page (421 as text, 417 as border). Where most SaaS systems separate the text token from the hairline token with a 10-step gray scale, Todoist collapses both onto one warm-black ink and reaches the perceived hierarchy through transparency layers (--greytransparent-50 through --greytransparent-900). The result reads like ink fading on paper rather than gray-on-white chrome.

Display type runs Graphik 600 with negative letter-spacing (-0.55px at 55px, -0.19px at 38px) on every h1 and h2. Body type runs Inter at weight 475 — between regular and medium — at 15.5–18px with positive letter-spacing (~0.09–0.18px), which gives Todoist's prose a slightly heavier, slightly looser texture than the weight-400 default most SaaS sites ship with. A Caecilia serif is reserved for blockquote testimonials at 20px regular with a 1.8 line-height, and a Shantell Sans script handles one hand-drawn margin label ("Take a peek!").

Single-radius geometry: 8px is the dominant corner (33 uses) — the primary CTA pill, the announcement bar inner shape, secondary outline buttons, and small chips all share it. 10–15px is reserved for larger cards and pastel feature tiles below the fold. Full-pill 9999px is reserved for in-product affordances only: the circular task checkbox, the bottom-right floating add-task button, and the small priority dots. Where Linear leans on 12px cards with a dark canvas and Notion leans on 8px rectangles with bold pastels, Todoist sits between them — sharing Notion's rectangle-leaning geometry while reserving true pills for the in-product layer.

Key Characteristics:

  • Warm-black ink ({colors.ink} "#25221e") carries text AND every hairline — 38 CSS variables, 853 total uses, no separate gray scale.
  • Single chromatic CTA — Todoist Red ("#e34432") used on exactly one button per fold, with {colors.primary-hover} and {colors.primary-pressed} for the only state variants.
  • Two-family display/body split — Graphik 600 for display at -0.55px tracking, Inter at weight 475 for body (heavier than the 400 default).
  • 8px radius dominant (33 uses); 10–15px for feature tiles; 9999px reserved for in-product checkbox / FAB / priority dots.
  • Pastel feature-tile palette (peach "#ffb399", mint "#ebf5f0", butter "#fff5db", sky "#dceaff") under the fold — echoes the in-product priority and label colors.
  • Caecilia serif for testimonials, Shantell Sans script for one hand-drawn margin label — typographic warmth without abandoning the system.
  • Off-white canvas decorated with wavy-line doodles and sparkle marks — Todoist signs the marketing page like a notebook page, not a marketing site.
  • Light-only marketing surface; the in-product dark theme is documented separately and not captured here.

Known Gaps

  • The in-product dark theme is not captured here — only the marketing surface, which is light-only.
  • Animation and transition timings were not extracted; 150–200ms ease is a safe default.
  • Form-field error and validation states are not fully surfaced beyond the focused-input border (2px solid {colors.primary}).
  • Graphik and Inter (and Caecilia, and Shantell Sans) are commercial families — Inter alone, or DM Sans paired with Inter, are acceptable open-source substitutes.
  • The four pastel tile tints (peach, mint, butter, sky) are observed from the captured feature row; Todoist's full in-product label palette carries additional tints (red-200, fuschia-200, purple-200, sea-salt-200) that aren't surfaced in this extract.
  • The hand-drawn doodle vocabulary (wavy lines, sparkles, the "Take a peek!" arrow) is rasterized inside SVG illustrations; it isn't a separately tokenizable asset.

More systems like this

Airtable, Amie, Anytype and 50 more in Productivity & SaaS: each brand's colors, type and components in one file your AI agent builds from.

Build it with Pro

The DESIGN.md files are free. Pro adds 6,000+ blocks, premium templates and the MCP server, so your AI editor builds in your system for you.

4.9/5 out of 5 · 150+ reviewsfrom 150+ founders and developers.

Billed once a year in USD. Cancel anytime.

Individual

For personal projects & open source

$32instead of $49/mo

$389 billed yearly

  • How many people can use the license.Seats: 1 seat
  • Client work, SaaS products and anything you charge for.Commercial use: Personal & open source only
  • Page sections in 56 categories, from heroes and pricing tables to dashboards and settings, on every framework and UI library, in your theme.Blocks: All 6,181 blocks
  • Complete Next.js sites for startups, SaaS, agencies and portfolios, every page designed, ready to ship.Templates: All 14 templates
  • Your AI agent searches, previews and installs any component, block, icon or DESIGN.md from a prompt: 22 tools in Claude Code, Cursor, VS Code and 35 more clients.MCP server: 38 AI clients
  • Buttons with motion and states of their own, from an arrow that slides in to a burst of confetti.Animated buttons: All 35 buttons
  • Typewriters, scrambles, counters and more, for headlines, labels and numbers.Text effects: All 97 effects
  • Animated backgrounds for heroes, sections and cards, from a soft aurora to a flock that flees the cursor. Most are pure CSS.Backgrounds: All 100 backgrounds
  • WebGPU shaders, from a slow aurora to a black hole, each drawing only while it's on screen.Shaders: All 100 shaders
  • One design and one theme on all four: the components, blocks and effects are built for each framework.Frameworks: React, Vue, Svelte, Solid
  • React on Base UI, Radix UI, React Aria or Ark UI: install the version for the library your project already uses. Vue, Svelte and Solid run on Ark UI.UI libraries: Base UI, Radix, Aria, Ark
  • From a button to a date picker, a color picker or a guided tour: accessible, typed in TypeScript, each with live demos.Components: All 174 components
  • Real-world patterns built from the components, in 53 galleries: forms, tables, menus, dialogs and more.Examples: All 1,103 examples
  • Area, bar, line, pie, radar and radial charts on TanStack Charts, on every framework. React also gets the Recharts originals.Charts: All 70 charts
  • Debounce, local storage, media queries and more: each hook is one typed file you own.React hooks: All 35 hooks
  • From 222 libraries, Lucide, Heroicons, Tabler and Material Symbols among them, as SVG or a React component in one command.Icons: 294k+ icons
  • Stripe, Linear, Apple and 497 more: a brand's colors, typography and components in one file your AI agent builds from.DESIGN.md files: All 500 brands
  • Restyle every component and block at once: 8 styles, 8 grays, 18 colors and 5 radii, shared as a shadcn preset code.Theme builder: 8 styles × 18 colors
  • Priority requests are answered first.Support: Standard

Team

Most popular

For freelancers, agencies & startups

$66instead of $99/mo

$789 billed yearly · ≈ $13/dev/mo

Everything in Individual, plus

  • How many people can use the license.Seats: Up to 5 seats
  • Client work, SaaS products and anything you charge for.Commercial use: Included
  • Priority requests are answered first.Support: Priority

Organization

For companies with larger teams

$132instead of $199/mo

$1,589 billed yearly

Everything in Team, plus

  • How many people can use the license.Seats: Unlimited seats
  • Secure checkout via Stripe
  • Code lives in your repo
  • Keep what you've shipped if you cancel
  • License terms

4.9 out of 5 from 150+ developers

Your system, built for you

Every block, template and icon, installed by your AI agent in your design system. The DESIGN.md files stay free.

Get Pro
  • Cancel anytime
  • Keep what you've shipped