Access the Retool Theme Editor at Settings → Themes. Create a new theme and configure: Core Colors (primary, success, warning, danger), Typography (font family from Google Fonts or custom), Metrics (border radius, spacing), and Shadows. Apply the theme to individual apps from app settings or set as the org default. Themes also support light/dark mode switching.
| Fact | Value |
|---|---|
| Tool | Retool |
| Difficulty | Intermediate |
| Time required | 20-25 min |
| Compatibility | Retool Cloud and Self-hosted |
| Last updated | March 2026 |
Brand Your Retool Apps with the Theme Editor
Retool's Theme Editor allows you to create a branded visual identity for your internal tools. Instead of every app looking like the default Retool UI, you can match your company's design system — using your brand colors, fonts, and design tokens.
Themes affect all components in the app: buttons use your primary color, success indicators use your success color, and typography uses your configured font. You create a theme once and apply it across all apps, ensuring visual consistency.
The Theme Editor is found in Settings → Themes and gives you control over four main areas: Core Colors, Typography, Metrics (border radius and spacing), and Shadows.
Prerequisites
- Admin or Editor access to Retool
- Your company's brand color hex codes (primary, secondary, success, warning, danger)
- Font name if using a non-default font (must be available on Google Fonts or self-hosted)
Step-by-step guide
Access the Theme Editor and create a new theme
Navigate to Settings (gear icon, bottom-left) → Themes. You'll see the default Retool theme plus any custom themes your org has created. Click '+ New theme' or 'Create theme'. Give your theme a name like 'Acme Corp Brand' or 'Dark Dashboard'. The theme editor opens with four sections: Core Colors, Typography, Metrics, and Shadows. Changes preview in real time in the canvas sample on the right.
Expected result: New theme created and theme editor open with preview canvas.
Configure Core Colors
The Core Colors section lets you set the primary color palette. Key colors to configure: (1) Primary — used for primary buttons, active states, selected rows. Set to your brand's primary color. (2) Success — green indicators, save buttons, positive notifications. (3) Warning — yellow/orange indicators, warning badges. (4) Danger/Error — red indicators, delete buttons, error states. (5) Neutral — gray scale used for borders, backgrounds, and disabled states. Each color has a swatch you can click to enter a hex code.
1// Example brand color configuration:2// Primary: #6366f1 (indigo)3// Success: #10b981 (green)4// Warning: #f59e0b (amber)5// Danger: #ef4444 (red)6// Neutral base: #6b7280 (gray)78// Retool generates a full color scale from each base color9// (50, 100, 200...900 shades) automatically.Expected result: Core colors configured with brand hex values. Preview canvas shows buttons and badges in brand colors.
Configure Typography
In the Typography section, set your app's fonts. The Font family field accepts any Google Fonts name — type 'Inter', 'Roboto', 'DM Sans', or your preferred font name. Retool loads it from Google Fonts automatically. Set the Base font size (default 14px) and the font scale for heading sizes. You can also configure separate fonts for headings vs body text. For custom self-hosted fonts, use Preloaded CSS with @font-face instead of the Theme Editor font field.
1// Typography configuration examples:2// Font family: 'Inter' (modern, clean)3// Font family: 'DM Sans' (geometric, professional)4// Font family: 'Lato' (clean, widely used)5// Font family: 'Source Code Pro' (for developer tools)67// Base font size: 14px (default) or 13px (compact) or 15px (spacious)8// H1 scale: 2x base = 28px9// H2 scale: 1.5x base = 21pxExpected result: App uses the configured font family. Text components and headings render in the new font.
Adjust Metrics for border radius and spacing
The Metrics section controls the geometric feel of your apps: Border radius — how rounded component corners are (0 = sharp/square, 4px = slight rounding, 8px = noticeable rounding, 12px+ = very rounded). Spacing — the base spacing unit that controls padding and margins throughout components. A larger spacing value creates a more 'airy' feel; smaller creates a denser, compact layout. Set border radius to match your design system — flat/sharp (0-2px) for enterprise tools, rounded (6-8px) for modern consumer-facing apps.
Expected result: Components display the configured border radius and spacing. App has the appropriate visual density.
Configure Shadows
The Shadows section controls the drop shadow intensity on cards, modals, and elevated components. Options typically range from 'none' (flat design) to 'large' (deep elevation). For neumorphic or flat design systems, set shadows to none. For traditional enterprise UI with visible card depth, use medium shadows. For high-contrast, dramatic layouts, use large shadows.
Expected result: Components display the configured shadow intensity, matching the desired visual elevation level.
Apply the theme to apps
After configuring your theme, apply it to apps. Method 1: In an individual app's settings (gear icon in the editor → App settings), find the 'Theme' dropdown and select your custom theme. Method 2: In Settings → Themes, click your theme and click 'Set as default' to apply it to all apps in your org that haven't individually overridden their theme. Individual app theme selections override the org default.
Expected result: Target apps use the custom theme. Buttons, headers, and form components display in brand colors and font.
Enable light/dark mode support
The Theme Editor supports creating both a light and dark variant. In the theme editor, look for a 'Mode' toggle that lets you configure light-mode colors separately from dark-mode colors. If you want users to be able to toggle between light and dark mode within the app, use a Temporary State variable and a toggle button that updates the app's CSS class. See the 'How to enable dark mode in Retool' tutorial for the implementation.
Expected result: Theme has both light and dark mode configurations. Apps can switch between modes.
Complete working example
1/* Preloaded CSS: brand-theme-overrides.css2 For fine-grained styling beyond what the Theme Editor exposes3 Note: CSS !important is required to override Retool's default styles */45/* Override primary button color specifically */6.ant-btn-primary {7 background-color: #6366f1 !important;8 border-color: #6366f1 !important;9}1011.ant-btn-primary:hover {12 background-color: #4f46e5 !important;13 border-color: #4f46e5 !important;14}1516/* Override table header background */17.retool-table .ant-table-thead th {18 background-color: #f8fafc !important;19 color: #374151 !important;20 font-weight: 600 !important;21}2223/* Custom font loading (for non-Google Fonts) */24@font-face {25 font-family: 'BrandFont';26 src: url('https://cdn.yourcompany.com/fonts/BrandFont-Regular.woff2') format('woff2');27 font-weight: 400;28 font-display: swap;29}3031/* Apply custom font to all text */32body, .retool-app {33 font-family: 'BrandFont', -apple-system, BlinkMacSystemFont, sans-serif !important;34}Common mistakes when customizing Themes in Retool
Why it's a problem: Writing custom CSS without !important and wondering why styles don't apply
How to avoid: Retool's component styles use high-specificity selectors. All custom CSS in Retool (Preloaded CSS or per-app CSS) must use !important to override the framework's default styles.
Why it's a problem: Setting a theme on individual apps instead of setting an org-wide default, leading to inconsistent branding
How to avoid: In Settings → Themes, set your brand theme as the 'Default' — it applies to all apps that haven't individually overridden their theme. Only override individual apps when a specific app needs different branding.
Why it's a problem: Choosing a light primary color (like light yellow) that fails WCAG contrast requirements for button text
How to avoid: After setting your primary color, check that white text on your primary color meets 4.5:1 contrast ratio. Tools like webaim.org/resources/contrastchecker/ help verify. For light primary colors, switch to dark text in the button using CSS overrides.
Best practices
- Create one org-wide theme that all apps inherit — maintain visual consistency across your tool portfolio
- Test theme colors for accessibility: ensure sufficient contrast ratios between text and backgrounds (WCAG AA = 4.5:1 for small text)
- Keep custom CSS in Preloaded CSS to a minimum — prefer Theme Editor settings where possible for easier maintenance
- CSS in Retool requires !important to override framework styles — document this requirement for your team
- Test your theme in both light and dark mode to ensure colors are readable in both
- Store your brand hex codes in a shared doc — Theme Editor changes require manual entry and you'll need them for future updates
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I'm creating a custom Retool theme for our company that uses: primary color #6366f1 (indigo), font Inter (Google Fonts), 8px border radius, and medium shadow depth. Walk me through: (1) where to access the Theme Editor, (2) setting each Core Color, (3) configuring the font family in Typography, (4) setting border radius in Metrics, (5) applying the theme as the org-wide default, (6) any CSS I should add to Preloaded CSS for fine-grained overrides that the Theme Editor doesn't cover.
Configure Retool Theme Editor: Settings → Themes → New theme 'Company Brand'. Core Colors: Primary #6366f1, Success #10b981, Warning #f59e0b, Danger #ef4444. Typography: Font family 'Inter', base size 14px. Metrics: border radius 8px, standard spacing. Apply as org default. Add Preloaded CSS for .ant-btn-primary with !important overrides. Show where to find the app-level theme dropdown in app settings.
Frequently asked questions
Can I create different themes for different apps in the same Retool org?
Yes — create multiple themes in Settings → Themes. Each app can select its own theme in the app's settings panel (gear icon → Theme dropdown). Apps that don't have an individual theme selected automatically use the org-wide default theme.
Does the Retool theme apply to embedded apps (iframe embeds)?
Yes — when a Retool app is embedded in an iframe using Retool's embed feature, it retains its configured theme. The embedded app looks the same as it does in the Retool domain.
Can end users change the theme in a Retool app?
Not natively — users cannot switch themes themselves unless you build a custom theme switcher. For dark/light mode user switching, see the 'How to enable dark mode in Retool' tutorial which implements a user-togglable mode using CSS variables and a Temporary State variable.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation