Decimal vs hexadecimal color codes: RGB(255,0,0) vs #FF0000 explained

Colors in CSS and design tools use two numeric formats for the same RGB data: decimal (rgb(255, 0, 0)) and hexadecimal (#FF0000). Decimal values range 0-255 per channel. Hex uses two hex digits (00-FF) per channel, concatenated. Both represent exactly the same color. The choice is about readability and tool compatibility.

Encoding focus
Decimal vs hex color
decimal-vs-hex-color
Category
Format Comparison
Comparing encoding schemes side by side

How this is calculated

Hex is more compact (7 characters vs 15+), aligns with how colors are stored in memory (one byte per channel = two hex digits), and is the traditional format in web development and design tools like Figma. Decimal RGB is more intuitive for adjusting colors programmatically because you can do math on the values without converting from hex. Modern CSS also supports functional notations like hsl() and oklch() that are more intuitive for designers. Converting between hex and decimal is straightforward: each pair of hex digits represents a byte value from 0-255.

Verdict

Use hex (#FF0000) for static color values in CSS and design handoff. Use decimal rgb() when generating colors dynamically in JavaScript. Use hsl() or oklch() when designing color systems and need to reason about lightness and saturation. The formats are interchangeable, so pick the one that matches your workflow.

More Encoding scenarios

Frequently asked questions

How do I convert text to Base64?
Paste your string into the Text field and the Base64 output appears instantly. The tool uses standard Base64 (RFC 4648), so the output is identical to Linux's base64 command and every major language's built-in Base64 encoder.
What's the difference between Base64 and hex encoding?
Both represent binary data as text, but with different alphabets. Base64 uses 64 characters and needs roughly 4 chars per 3 bytes (33% overhead). Hex uses 16 characters and needs exactly 2 chars per byte (100% overhead). Base64 is denser, while hex is easier to read byte by byte.
Why does my UTF-8 text break when converted to binary?
UTF-8 encodes non-ASCII characters as multibyte sequences, so a single emoji or accented letter becomes 2-4 bytes. The binary output will be longer than the character count suggests, that's correct behavior, not a bug.
Is it safe to paste sensitive data into the converter?
Yes. The encoding conversion runs entirely in your browser with JavaScript, nothing is sent to our servers, logged, or stored. You can verify this with your browser's Network tab: no requests fire when you type.
What is URL-safe Base64?
A variant that replaces `+` with `-` and `/` with `_` so the result can be safely placed in URLs without percent-encoding. JWT tokens use URL-safe Base64. Standard Base64 is fine for most other uses.
Can I decode Base64 back to the original text?
Yes, the converter is bidirectional. Paste Base64 into the Base64 field and you'll get the original UTF-8 string back. If decoding fails silently, the input isn't valid Base64 (wrong characters, bad padding, or it was double-encoded).