Generate beautiful color palettes and pick perfect colors for your designs. Free online color tools with HEX, RGB, HSL support and accessibility contrast checking.
Every web design project starts with the same deceptively simple question: what colors should I use?
It sounds trivial. It is not. The colors you pick determine how users feel about your product before they read a single word. Blue conveys trust — there's a reason banks and enterprise software default to it. Red creates urgency. Green signals success. And the wrong color combination doesn't just look bad — it can make your interface literally unusable for the 300 million people worldwide with some form of color vision deficiency.
I've spent years refining a color workflow that actually holds up across projects, screen types, and accessibility audits. This guide covers the entire process: picking a base color, generating a full palette, understanding color formats, checking contrast ratios, and handling dark mode — all using free browser-based tools that require zero installation.
Before we dive into tools and techniques, let's talk about why color deserves more than five minutes of your attention.
A study by the Institute for Color Research found that people make a subconscious judgment about a product within 90 seconds, and up to 90% of that assessment is based on color alone. In web design, color affects:
The problem is that most designers pick colors subjectively. They drag a color picker around until something "feels right." That works for mood boards. It does not work for production interfaces that need to pass WCAG audits, render correctly on OLED and LCD screens, support dark mode, and maintain brand consistency across dozens of pages.
You need a systematic approach. That starts with a color palette generator.
Every palette starts with a single color. Usually it's the primary brand color — the one that represents the company, product, or project.
If you're working with an existing brand, that color is already defined. If you're starting from scratch, here's a framework I use:
Once you know the general hue family, you need to find the exact shade. This is where a good online color picker becomes essential.
A proper color picker tool gives you real-time visual feedback as you adjust hue, saturation, and lightness. You can enter exact values in any format — HEX, RGB, or HSL — and see the result instantly. Some pickers also show you the color name, nearby web-safe colors, and how the color will look against white and black backgrounds.
The difference between #2563EB and #3B82F6 might look negligible on your monitor. But one has a contrast ratio of 3.2:1 against white and the other has 3.0:1. That gap determines whether your text passes or fails WCAG AA requirements. Details matter.
Every color on the web can be expressed in multiple formats. They all describe the same color — they just use different coordinate systems. Knowing when to use each one will make you faster and more precise.
color: #2563EB;
color: #2563EB80; /* with 50% opacity */HEX is the lingua franca of web color. Six characters (or eight with alpha) representing red, green, and blue channels in base-16. It's compact, universally supported, and what most designers copy-paste between tools.
When to use it: Design handoffs, CSS stylesheets, Figma/Sketch values, brand guidelines. HEX is the default because everyone understands it.
Limitation: HEX isn't human-readable. Looking at #2563EB, you can't intuitively tell how bright or saturated the color is without converting it.
color: rgb(37, 99, 235);
color: rgb(37 99 235 / 0.5); /* modern syntax with opacity */RGB maps directly to how screens produce color — by mixing red, green, and blue light. Each channel ranges from 0 to 255.
When to use it: When you need opacity (rgba), when working with JavaScript canvas operations, when programmatically generating colors, or when interfacing with APIs that expect RGB values.
Limitation: Like HEX, RGB is unintuitive for adjustments. Want to make a color "slightly warmer"? Good luck figuring out which of three channels to nudge.
color: hsl(217, 91%, 53%);
color: hsl(217 91% 53% / 0.5); /* with opacity */HSL is the format that actually makes sense to humans. Hue is the color (0-360 on the wheel), saturation is the intensity (0-100%), and lightness is brightness (0-100%).
When to use it: When building color scales, creating themes, adjusting colors on the fly, or debugging "why does this color look muddy." HSL lets you say "keep the same hue and saturation but make it 20% lighter" — something that's nearly impossible to reason about in HEX or RGB.
Limitation: HSL's lightness is not perceptually uniform. An HSL lightness of 50% looks very different in brightness between yellow and blue. For perceptually uniform scales, look into OKLCH — but HSL is good enough for 90% of web design work.
A reliable color converter lets you translate between all three formats instantly, so you can work in whatever system fits your current task.
A single brand color isn't a palette. A real production palette needs:
Generating all of this manually would take hours. A color palette generator does it in seconds by applying color theory algorithms — complementary, analogous, triadic, or split-complementary harmonies — to your base color.
Once you have your palette, distribution matters as much as the colors themselves.
This ratio creates visual hierarchy without chaos. It's the same principle interior designers use, and it works beautifully in UI design.
Say your brand color is #6366F1 (indigo). Your palette generation might produce:
#F59E0B (amber) — for CTAs and highlightsThe key is consistency. Every color in your palette should feel related — like they were chosen by the same person with the same taste. A good generator ensures mathematical harmony; your eye ensures emotional cohesion.
Accessibility isn't optional. In many jurisdictions, it's legally required. And even where it isn't, inaccessible color choices silently exclude users.
WCAG 2.1 defines two contrast levels:
Here's the uncomfortable reality: a huge number of "beautiful" color palettes fail these requirements. That gorgeous light-gray-on-white aesthetic? Probably 2:1 contrast. The trendy pastel-on-pastel look? Forget it.
This is where a contrast checker becomes your best friend. Paste in your foreground and background colors, and it instantly tells you the contrast ratio and whether it passes AA, AAA, both, or neither.
Light gray text on white backgrounds: The most common failure. #9CA3AF on #FFFFFF is only 2.6:1. Darken the gray to at least #6B7280 (4.6:1) for body text.
Colored text on colored backgrounds: Blue links on a dark blue background, green success text on a light green banner. Always check these combinations explicitly — your eyes will deceive you.
Placeholder text: Placeholders are often deliberately low-contrast to distinguish them from entered text. That's a valid design pattern, but the contrast should still be at least 3:1 against the input background for AA compliance.
Focus indicators: When a user tabs to a button or link, the focus ring needs 3:1 contrast against the surrounding area. Many custom focus styles fail this.
My workflow is simple: every time I assign a color pairing in my design, I run it through the contrast checker before moving on. It takes three seconds and saves hours of remediation later.
Dark mode isn't just "invert the colors." It's a parallel design system that requires its own palette and its own contrast checks.
Don't use pure black (#000000): Pure black backgrounds with white text create excessive contrast that causes eye strain. Use a dark gray like #111827 or #18181B instead.
Don't just flip lightness values: Your blue-600 in light mode isn't automatically your blue-400 in dark mode. You need to visually test each swap because perceived brightness changes on dark backgrounds.
Reduce saturation: Highly saturated colors that look great on white can feel overwhelming on dark backgrounds. Desaturate by 10-20% for dark mode variants.
Maintain contrast ratios: Here's the catch — you need to re-check every contrast pairing in dark mode. A combination that passes on a white background might fail on a #111827 background, or vice versa.
Shadows become glows: Drop shadows that create depth on light backgrounds are invisible on dark backgrounds. Replace them with subtle light borders or elevation through lighter surface colors.
The cleanest implementation uses CSS custom properties:
:root {
--color-bg: #ffffff;
--color-text: #111827;
--color-primary: #2563eb;
--color-surface: #f9fafb;
}
[data-theme="dark"] {
--color-bg: #111827;
--color-text: #f9fafb;
--color-primary: #60a5fa;
--color-surface: #1f2937;
}Notice that the primary color shifts from #2563EB to #60A5FA — a lighter variant that maintains sufficient contrast against the dark background.
Gradients are back in a big way. But bad gradients — muddy midpoints, clashing hue transitions, banding artifacts — are worse than no gradient at all.
A good gradient follows a rule: transition through a shared hue neighbor, not through the middle of the color space. A gradient from blue to green that passes through cyan looks natural. A gradient from blue to green that passes through gray looks like a rendering error.
A gradient generator lets you visually design multi-stop gradients, preview them in real time, and export the CSS. You can control direction, type (linear, radial, conic), color stops, and opacity — without writing a single line of code until you're happy with the result.
Gradients introduce a subtle accessibility challenge: if you place text over a gradient, the contrast ratio varies across the gradient. The text might be readable over the dark end but invisible over the light end.
The fix: always check contrast at the worst point of the gradient (the lightest area behind the text), or place text on a semi-transparent overlay that guarantees minimum contrast everywhere.
Let me put everything together into an actionable workflow:
Use the color picker to select and refine your primary brand color. Consider the emotional association, industry conventions, and existing brand guidelines.
Feed your base color into the color palette generator. Generate a full scale (50-950) plus complementary and analogous accents. Export the values.
Create a gray scale with a subtle undertone matching your primary. Cool brand = cool grays. Warm brand = warm grays. This creates cohesion that pure grays can't achieve.
Run every text/background combination through the contrast checker. Fix failures before they become technical debt. Document your accessible pairings.
Adjust lightness, reduce saturation, and re-check all contrast ratios for dark backgrounds. Test on actual dark-mode screens — your light-mode monitor preview won't tell the whole story.
Use the color converter to export your palette in whatever format your codebase needs — HEX for CSS, RGB for canvas, HSL for dynamic theming.
Design hero gradients, button hover states, and decorative elements with the gradient generator. Ensure all text over gradients meets contrast requirements.
Using too many colors: A palette of 5-7 core colors (plus their scales) is plenty. Adding a new color for every UI element creates visual noise.
Ignoring color blindness: 8% of men have some form of color vision deficiency. Never use color as the sole indicator of state — always pair it with icons, text, or patterns. Red/green is the most dangerous pair: your "success/error" distinction is invisible to deuteranopic users.
Designing only on a calibrated monitor: Your colors will be viewed on cheap office monitors, phones in direct sunlight, and projectors in conference rooms. Test on multiple devices.
Skipping the print check: If your brand colors ever appear in print, you need CMYK equivalents. Screen colors (especially vivid blues and greens) are often outside the CMYK gamut and will shift dramatically when printed.
Hardcoding colors instead of using tokens: Every color in your codebase should be a design token or CSS custom property. Hardcoded hex values scattered across components make palette updates a nightmare.
Color is one piece of the design puzzle. The same systematic approach applies to typography, spacing, and layout. If you're building a complete design system, explore the broader set of free design tools available — from image editors and SVG tools to CSS generators and responsive design utilities.
The tools are free. The knowledge is out there. The only thing standing between you and a well-designed, accessible, color-coherent interface is the decision to stop guessing and start being systematic about it.
Your users — all of them, including the ones who see color differently than you — will thank you for it.