# DevZap — Full Content Corpus > The browser toolkit for developers. Inspect, edit, and export from any page — without leaving your tab. > Site: https://devzap.io > This file aggregates every documented page as plain markdown. --- # Tools ## Color Converter — HEX, RGB, HSL, OKLCH URL: https://devzap.io/tools/color-converter Category: color Status: live Free color converter for developers. Switch between HEX, RGB, HSL, and OKLCH in real time, copy any format with one click, and see WCAG contrast against white as you go. ### How to use 1. **Pick or paste a color** — Use the native color picker, paste a HEX/RGB/HSL/OKLCH string into any field, or type values directly into the channel inputs. 2. **Edit any format** — Edits in any format (HEX, RGB, HSL) update all the others in real time. OKLCH is read-only since it's the wider-gamut output. 3. **Copy what you need** — Each format has a Copy button. The clipboard copy fires a small toast confirmation. ### FAQ **What is OKLCH and why should I care?** OKLCH is a perceptually uniform color space — equal numeric changes look like equal visual changes. Unlike HSL, lightness in OKLCH actually corresponds to perceived brightness across hues. Modern CSS supports it natively, and it's quickly becoming the preferred space for design systems. **Why does my HSL conversion look slightly off?** HSL is a quick approximation derived from RGB and isn't perceptually uniform — equal lightness values across different hues will look unequal in brightness. For accurate perceptual conversions, use OKLCH instead. **What does the WCAG contrast number mean?** It's the ratio of relative luminance between your color and pure white (1.0). WCAG 2.2 requires at least 4.5 for normal body text (AA) or 3.0 for large text. AAA is 7.0+. The chip on the picker shows you the closest passing level. **Does this tool send my colors anywhere?** No. All conversion runs locally in your browser. Nothing is uploaded, logged, or tracked. ## What is a color converter A color converter translates a single color between the formats CSS understands: HEX (`#dc2626`), RGB (`rgb(220, 38, 38)`), HSL (`hsl(0, 72%, 51%)`), and OKLCH (`oklch(57.7% 0.245 27.3)`). Each format expresses the same color but optimizes for a different use case — HEX for compactness, RGB for hardware roots, HSL for human-friendly tweaking, OKLCH for perceptual accuracy. ## Why OKLCH matters in 2026 OKLCH is the format design systems are converging on. Lightness in OKLCH corresponds to *perceived* brightness, not just the math of RGB channels — which means a button at 60% lightness in red looks the same brightness as a button at 60% lightness in blue. With HSL, those would feel jarringly different. If you're building a design system today, generate your palette in OKLCH and let the rest of the pipeline derive HEX/RGB fallbacks. ## Use cases - **Design system migration**: convert an existing palette from HEX to OKLCH to unlock perceptual scaling. - **Tailwind v4 themes**: drop OKLCH values straight into `@theme { --color-accent: oklch(...) }`. - **Accessibility audits**: pick a candidate color and see its contrast against white instantly. - **Cross-tool handoff**: paste a color from a Figma file in any format, get the rest in seconds. ## CSS Box Shadow Generator URL: https://devzap.io/tools/box-shadow-generator Category: css Status: live Free CSS box-shadow generator. Stack up to 5 shadow layers with x, y, blur, spread, color, opacity, and inset controls. Live preview, copy ready-to-ship CSS. ### How to use 1. **Add up to 5 layers** — Each layer accepts x/y offset, blur radius, spread, color, opacity, and inset toggle. 2. **Tweak in the live preview** — Adjustments to any layer reflect immediately in the preview rectangle. Toggle inset to switch between cast shadows and inner shadows. 3. **Copy the box-shadow declaration** — One click copies the full declaration ready to paste into your CSS or a Tailwind utility. ### FAQ **Why use multi-layer shadows instead of just one?** Real-world shadows aren't a single blur — light bounces and creates a sharp close-shadow plus a softer ambient one. Stacking two or three layers (one tight, one soft, one optional inset rim) produces the realistic 'elevated' effect popular in modern UIs. **What's the difference between blur and spread?** Blur softens the edges of the shadow. Spread enlarges or shrinks the shadow's footprint without softening it. Use spread to make a sharp shadow extend further; use blur to make a soft glow. **When should I use inset shadows?** Inset shadows live inside the box, useful for pressed-button effects, inner glow rings, or carved-in card states. Stack a regular shadow with an inset rim for a bevel effect. **Can I save shadow presets?** Not yet. We're keeping the tool stateless and shareable via copy/paste. If you want to bookmark a shadow, copy the declaration into your design tokens file. ## Multi-layer shadows are how modern UIs feel real If your shadow looks fake, the issue isn't the radius — it's that you only have one. A realistic elevation in 2026 design uses two or three layered shadows: a tight, low-opacity shadow that hugs the element to imply contact with the surface, and a wider, more diffuse shadow that suggests ambient occlusion further away. Material Design and HIG both build their elevation tokens this way. So does every popular design system shipping in 2026. ## A practical recipe Start with two layers: - **Layer 1**: 0px x, 1px y, 2px blur, 0 spread, color matching the surface, ~10% opacity. - **Layer 2**: 0px x, 8px y, 24px blur, -4px spread, same color, ~12% opacity. That gives you a believable elevation that scales — push y and blur higher for "lifted higher" states. ## Use cases - **Card states**: stack three layers for resting / hover / focus. - **Buttons**: a sharp inset shadow turns into a "pressed" state on click. - **Modal overlays**: a heavy soft shadow grounds the modal above the page. - **Skeleton placeholders**: a soft inset shadow signals empty space. ## CSS Gradient Generator URL: https://devzap.io/tools/css-gradient-generator Category: css Status: live Free CSS gradient generator. Compose linear, radial, and conic gradients with multiple color stops, tweak angle live, and copy a production-ready background-image declaration. ### How to use 1. **Choose a gradient type** — Pick linear, radial, or conic. Linear is most common for backgrounds; radial works for spotlights; conic is great for unique decorative elements. 2. **Set the angle and stops** — Drag the angle slider for linear and conic gradients. Edit each stop's color and position to shape the transition. 3. **Copy the output** — Use 'Copy value' for just the gradient function, or 'Copy declaration' for a ready-to-paste background-image rule. ### FAQ **What's the difference between linear, radial, and conic?** Linear gradients fade along a straight line at a chosen angle. Radial gradients fade outward from a center point in concentric rings. Conic gradients sweep around a center point like a clock hand — useful for pie-chart effects, color wheels, and rainbow rings. **Why do my gradients look banded?** Banding happens when there's not enough color resolution between stops, especially in 8-bit color spaces. Fix it by adding intermediate stops or by using a wider gamut (OKLCH-based gradients via `color-mix`) on browsers that support it. **How do I match the gradient on a Figma design?** Figma exports gradients as CSS-compatible strings. Paste those values into the stop colors here and adjust the angle. The preview should match closely; small differences may be due to color-space conversion (Figma uses Display P3 by default). **Can I add more than 6 stops?** The tool caps at 6 stops to keep the UI usable. If you need more, copy the declaration and add stops manually — CSS supports as many as you want. ## Why a gradient generator Hand-writing gradients in CSS is tedious because the result lives entirely in your imagination until you reload the browser. A live preview cuts the iteration time from "type, save, reload, eh, undo" to "drag the slider until it looks right." This tool stays opinionated and small: linear, radial, conic. No skewed text overlays, no weird mesh effects. Just the three primitives every UI uses, tuned so you can ship the result. ## Linear, radial, conic — when to use each - **Linear** is the workhorse. Headers, cards, hero backgrounds, button states. Most UIs use linear gradients exclusively. - **Radial** creates depth and focus. Use it for spotlights, vignette effects, attention-grabbing CTAs. - **Conic** is unique — it sweeps around a center point. Use it for color wheels, ring charts, decorative accents. ## Use cases - **Hero backgrounds**: pair the brand accent with a darker variant for depth. - **Card states**: subtle gradients differentiate active/hovered cards from idle ones. - **Empty states**: a soft radial gradient draws the eye toward an action. - **Loading shimmer**: a moving linear gradient produces the classic skeleton-loading effect. ## CSS Named Colors Reference URL: https://devzap.io/tools/css-colors Category: color Status: live Free CSS named colors reference. Browse the 148 standard CSS color names from the CSS Color Module Level 4 spec. Filter by hue group, search by name or hex, copy with one click. ### How to use 1. **Filter by hue group** — Use the chips at the top to focus on red, blue, green, etc. Helpful when you know the rough hue but not the exact name. 2. **Search by name or hex** — Type a partial name or hex value to filter. The list updates live. 3. **Copy in your preferred format** — Click the name to copy the color keyword. Click the hex to copy the hex value. Click rgb to copy the rgb() string. ### FAQ **Should I use named colors in production CSS?** For prototypes and quick demos, sure. For production design systems, prefer your own tokens over named colors — named colors are arbitrary historical choices and don't compose into a coherent palette. Use named colors as inspiration, then quantize to your design system scale. **Why do `aqua` and `cyan` look identical?** They are the same color (#00ffff). The CSS spec keeps both for historical compatibility — `cyan` came from X11 aliases and `aqua` from HTML 4. Same with `fuchsia` and `magenta`. **Where does this list come from?** The CSS Color Module Level 4 spec, which standardized the 148 names that every modern browser supports. Some browsers support additional aliases for legacy compatibility, but those are not in the official spec. **What's the deal with `rebeccapurple`?** Added to the spec in 2014 as a tribute to Rebecca Meyer, daughter of Eric Meyer (CSS pioneer). It's #663399, a vivid purple. The story is moving — look it up. ## Why a CSS named colors reference CSS gives you 148 color keywords — `tomato`, `peachpuff`, `dodgerblue`, `rebeccapurple` — that work in any browser without further setup. They're useful for quick prototyping, error messages, and anywhere you'd rather write a memorable name than a hex code. This is the searchable list, grouped by hue, with copy-to-clipboard for the name, the hex, and the rgb() form. ## Named colors vs design tokens Named colors aren't a design system. They're a curated set of recognizable swatches with no consistent scale across them — `lightblue` and `lightgreen` aren't the same lightness, and `darkred` and `darkblue` aren't the same darkness. For production work, define your own tokens in OKLCH and reference them via CSS custom properties. Use named colors as starting points or shortcuts in scratch code. ## Use cases - **Quick prototypes**: `background: papayawhip` reads better than `background: #ffefd5`. - **Mocking states**: red/green/orange named colors at a glance for success/error/warning placeholders. - **CSS art**: when you're making a small illustration in pure CSS, named colors keep the code readable. - **Tutorials**: more memorable for readers than a string of hex digits. ## CSS Unit Converter — px, rem, em, clamp() URL: https://devzap.io/tools/css-unit-converter Category: convert Status: live Free CSS unit converter. Translate between pixels, rem, and em with custom root and parent font sizes. Generate fluid clamp() declarations for responsive typography and spacing. ### How to use 1. **Configure your root and parent** — Set root font size (typically 16px) and parent font size if you're inside a context with a non-default font size. The conversion fields use these as bases. 2. **Edit any unit** — Type in pixels, rem, or em — the others update instantly. Click Copy on any field to grab that value. 3. **Build a fluid clamp()** — Set min and max sizes plus the viewport range you want to scale across. The generator produces a clamp() value you can drop into any property that accepts a length. ### FAQ **When should I use rem instead of px?** Use rem for typography, spacing, and component sizing in design systems — when a user changes their browser font-size preference, rem-based UIs scale accessibly. Use px for hairlines, borders, and pixel-level art that should stay fixed. **What's the difference between rem and em?** rem is relative to the root (html) font size. em is relative to the parent element's font size. rem is predictable across the page; em compounds inside nested elements, useful for component-local scaling. **What does clamp() do?** clamp(min, preferred, max) clamps a CSS value between bounds. With a viewport-width-based preferred value, it produces fluid values that scale linearly between two viewport widths — replacing media-query-based responsive typography. **Should I always use clamp() for font-size?** For headings and hero text, almost always — fluid scaling looks better than discrete jumps. For body text, hold a constant value and let users override via browser preferences. Don't fluid-scale below 14–16px or readability suffers. ## Why this tool exists Two questions you ask weekly: - "What's 18px in rem at a 16px root?" — `1.125rem` - "What clamp() produces 14px at 320px viewport and 24px at 1280px?" — you'd reach for a calculator. This tool answers both in seconds. Configurable root and parent so you can match the actual context of your design system, not just default browser values. ## A note on em vs rem `em` compounds: a `1.2em` font-size inside an element that's already `1.2em` lands at `1.44em` of the root. That's useful when you want components to scale relative to their container — labels next to a larger heading, for instance. But it's a footgun in deeply nested layouts. `rem` always references the root. Predictable, but doesn't react to local context. The pragmatic rule: `rem` for design system tokens (font sizes, spacing scale, container widths). `em` for component-local relationships (icon next to text in a button — `0.875em` keeps it proportionate). ## Why clamp() replaced the media-query waltz Before `clamp()`, fluid typography meant declaring three sizes at three breakpoints. `clamp()` collapses that into a single line that interpolates linearly. Every modern browser supports it. Every modern design system uses it. ## Use cases - **Migrating a fixed-px design system to rem-based**: drop in pixel values, get the rem equivalents to paste into your tokens. - **Generating fluid heading sizes**: H1 from 32px (mobile) to 64px (desktop) becomes a single `clamp()`. - **Tuning section padding**: section padding that scales with the viewport feels more polished than fixed values that look cramped on small screens. - **Component spacing tokens**: when porting from Figma's pixel grid to a rem-based code system, this is the conversion you do all day. ## Google Fonts Pairing Tool URL: https://devzap.io/tools/font-pairing Category: typography Status: live Free Google Fonts pairing tool. Combine a heading and body font from 18 curated Google Fonts, preview live with realistic sample text, copy the @import + font-family CSS snippet. ### How to use 1. **Pick heading and body fonts** — Use the dropdowns to choose. Live preview updates as you switch. 2. **Try a preset** — Five curated presets covering common use cases — editorial serif, modern sans, display + neutral, geometric pair, etc. 3. **Copy the CSS** — When you find a pair you like, click Copy CSS. The snippet includes the Google Fonts @import URL and ready-to-paste font-family rules. ### FAQ **Why pair two fonts at all? Why not just one?** A single font for everything is fine and shippable — many great sites do it. Pairing creates hierarchy: a display-y heading font signals 'this is the title' faster than weight or size alone. Pair only when you have a reason; don't pair for variety. **What makes a good pairing?** Contrast in style, similarity in mood. A geometric sans paired with a transitional serif gives strong contrast (modern + classical) but both feel professional. Avoid pairing two display fonts — they fight for attention. **Will using two fonts hurt my page speed?** Two Google Fonts adds ~30–60 kB total over what one font costs. Use `font-display: swap` (the snippet here does), preload the heading font, and self-host if performance is critical. For most sites the cost is negligible. **Can I add more fonts to this tool?** Right now the tool ships with 18 curated picks — the goal is to surface fonts that actually work, not overwhelm with the 1500+ Google Fonts catalog. To use a font that's not listed, copy the snippet and edit the family names manually. ## Why a font-pairing tool Google Fonts has thousands of fonts. Their official browser is great for finding *one* font. It's bad for testing how *two* fonts look together — which is the actual decision you're making for any real project. This tool is the side-by-side: pick a heading font, pick a body font, see them render together with realistic sample text. When you find the right pair, copy a complete CSS snippet you can drop into any project. ## Three rules of thumb 1. **Contrast in feeling, not noise.** A serif heading + sans body works because the contrast is in style, not in personality. Two display fonts compete; that's noise. 2. **One personality, one neutral.** Pick one font that has character (a Fraunces, a Playfair) and pair it with a neutral (Inter, DM Sans). Two characters fight; one neutral lets the personality breathe. 3. **Same font, different weights** is a valid pairing. Don't underrate single-font setups — Inter at 700 for headings and 400 for body is a clean modern default. ## Use cases - **Marketing site redesign**: try a new heading font without changing your codebase. - **Brand exploration**: present 3-5 pairings to a client side by side. - **Component library**: validate your token choice (heading font + body font) before locking it in. - **Blog setup**: pick a pairing that suits longform reading without sacrificing landing-page punch. ## HTML Entities Reference URL: https://devzap.io/tools/html-entities Category: html Status: live Free HTML entities reference. Search 40+ common entities by name, character, description, or tag. Copy named, numeric, or hex form instantly. ### How to use 1. **Search any entity** — Type a name, character, description, or tag. Results filter live. 2. **Copy in any format** — Click any cell — named, numeric, or hex — to copy. A toast confirms. ### FAQ **When should I use HTML entities vs Unicode characters?** Modern UTF-8 encoded HTML can include most characters directly. Use entities for the five reserved characters (&, <, >, ", ') in attributes and text where they could be misinterpreted, and for non-breaking spaces or invisible characters where readability matters. **What's the difference between named, numeric, and hex forms?** All three encode the same character. Named (&) is human-readable but limited to entities the spec defines. Numeric (&) and hex (&) work for any Unicode codepoint and are more verbose. **Why does   matter?**   (non-breaking space) prevents line breaks between words you want to keep together — like 'page 1' or '5 km'. Designers also use it for visual spacing tweaks; that's a code smell, but it works. **Do entities work everywhere?** Inside HTML content and attributes, yes. They do NOT work inside