RGB-zu-HEX-Konverter
Geben Sie die drei Werte von 0 bis 255 ein oder fügen Sie ein rgb() aus Ihrem CSS ein und sehen Sie den HEX-Code, während Sie tippen. Mit Transparenz entsteht HEX mit 8 Stellen.
Sie möchten wissen, ob Ihr RGB-Wert einen CSS-Namen hat? Prüfen Sie die HTML-Farbtabelle mit den 148 Namen und ihren Werten.
So rechnen Sie RGB in HEX um
RGB in HEX umzurechnen heißt, jeden Kanal vom Dezimal- ins Hexadezimalsystem zu übertragen und die drei Paare hinter ein # zu setzen. Von Hand teilen Sie den Kanal durch 16: Der Quotient ist die erste Ziffer, der Rest die zweite.
82 = 5 × 16 + 2 → 5, 2 → 52
113 = 7 × 16 + 1 → 7, 1 → 71
255 = 15 × 16 + 15 → F, F → FF
rgb(82 113 255) → #5271FFEin Quotient oder Rest von 10 bis 15 wird zu einem Buchstaben: 10 ist A, 11 ist B, 12 ist C, 13 ist D, 14 ist E und 15 ist F. Ein zweites Beispiel, mit einem Nullkanal:
255 = 15 × 16 + 15 → FF
128 = 8 × 16 + 0 → 80
0 = 0 × 16 + 0 → 00
rgb(255 128 0) → #FF8000Ein Nullkanal belegt trotzdem zwei Stellen (00). HEX mit Transparenz, also mit 8 Stellen, hat weiter unten einen eigenen Abschnitt. Und wenn beide Ziffern jedes Paars gleich sind, lässt sich der Code kürzen: rgb(255 0 0) wird zu #F00. Das Tool zeigt das Kurz-HEX immer an, wenn es existiert.
Die führende Null
Der klassische Fehler beim Zusammenbauen von HEX von Hand ist toString(16). Es füllt nicht mit einer Null auf: Der Kanal 15 wird zu f, nicht zu 0f. Bei so einem Kanal verliert der Code eine Stelle und wird zu einer anderen Farbe, ganz ohne Fehlermeldung:
(15).toString(16); // "f"
(15).toString(16).padStart(2, "0"); // "0f"
"#" + [15, 0, 0].map((c) => c.toString(16)).join("");
// "#f00" (and not "#0f0000")Beachten Sie, dass #f00 ein gültiges Kurz-HEX ist, gleich #ff0000. Der Browser akzeptiert es, aber die Farbe ist falsch. Die Lösung ist padStart(2, '0'), das mit führenden Nullen auf zwei Stellen auffüllt.
Transparenz in HEX
Für die Transparenz multiplizieren Sie das Alpha (von 0 bis 1) mit 255, runden und wandeln das Ergebnis ins Hexadezimalsystem um. Das Paar kommt ans Ende des Codes und bildet das HEX mit 8 Stellen. Im Feld kann das Alpha 0.5, .5 oder 50% lauten: Alle drei ergeben dasselbe.
alpha = 0.5
0.5 × 255 = 127.5 → 128
128 = 8 × 16 + 0 → 80
rgb(82 113 255 / 50%) → #5271FF80Warum ergeben 50 % 80 und nicht 7F? Weil 0,5 × 255 gleich 127,5 ist und die Rundung auf 128 (80) aufrundet. Wer abschneidet statt zu runden, landet bei 127 (7F). Der Unterschied beträgt 1 von 255, auf dem Bildschirm unsichtbar, aber er zeigt sich, wenn Sie zwei Tools Byte für Byte vergleichen.
Umgekehrt wird HEX mit 8 Stellen wieder zu Alpha, indem Sie das letzte Paar durch 255 teilen (80 ergibt 0,5). Der HEX-zu-RGB-Konverter rechnet das und zeigt das fertige rgba().
Deckkraft-Tabelle in HEX
Die Paare für das Ende des Codes, von 100 % bis 0 % in 5er-Schritten. Die dritte Spalte zeigt das Ergebnis auf #5271FF.
| Deckkraft | HEX-Paar | Beispiel |
|---|---|---|
| 100% | FF | #5271FFFF |
| 95% | F2 | #5271FFF2 |
| 90% | E6 | #5271FFE6 |
| 85% | D9 | #5271FFD9 |
| 80% | CC | #5271FFCC |
| 75% | BF | #5271FFBF |
| 70% | B3 | #5271FFB3 |
| 65% | A6 | #5271FFA6 |
| 60% | 99 | #5271FF99 |
| 55% | 8C | #5271FF8C |
| 50% | 80 | #5271FF80 |
| 45% | 73 | #5271FF73 |
| 40% | 66 | #5271FF66 |
| 35% | 59 | #5271FF59 |
| 30% | 4D | #5271FF4D |
| 25% | 40 | #5271FF40 |
| 20% | 33 | #5271FF33 |
| 15% | 26 | #5271FF26 |
| 10% | 1A | #5271FF1A |
| 5% | 0D | #5271FF0D |
| 0% | 00 | #5271FF00 |
Zur Verwendung hängen Sie das Paar an das HEX mit sechs Stellen an: 40 % Deckkraft auf #5271FF ergibt #5271FF66. Das funktioniert in background, color, border-color, box-shadow und sogar in den Stopps eines linear-gradient.
RGB in HEX im Code umrechnen
In JavaScript kombinieren Sie toString(16) mit padStart(2, '0'), damit die führende Null nicht verloren geht:
const toHex = (value) =>
Math.round(value).toString(16).padStart(2, "0");
function rgbToHex(r, g, b, a) {
const alpha = a === undefined ? "" : toHex(a * 255);
return `#${toHex(r)}${toHex(g)}${toHex(b)}${alpha}`.toUpperCase();
}
rgbToHex(82, 113, 255); // "#5271FF"
rgbToHex(82, 113, 255, 0.5); // "#5271FF80"
rgbToHex(15, 0, 0); // "#0F0000"In Python füllt der f-String mit :02X bereits mit Nullen auf und schreibt groß. hex(255) liefert '0xff', mit Präfix und ohne führende Null, deshalb ist der f-String meist praktischer:
def rgb_to_hex(r: int, g: int, b: int) -> str:
if not all(0 <= channel <= 255 for channel in (r, g, b)):
raise ValueError("channel out of range 0-255")
return f"#{r:02X}{g:02X}{b:02X}"
rgb_to_hex(82, 113, 255) # '#5271FF'
rgb_to_hex(15, 0, 0) # '#0F0000'Die Falle ist, den Bereich von 0 bis 255 nicht zu prüfen. Ohne diese Prüfung wird der Kanal 300 zu 12c, drei Stellen, und der gesamte Code verrutscht:
(300).toString(16); // "12c"
(-1).toString(16); // "-1"Kommt der Wert aus einem Textfeld, wandeln Sie ihn mit Number() um und prüfen ihn mit Number.isInteger. Der String "82" funktioniert, "8 2" wird dagegen zu NaN.
Was CSS in rgb() akzeptiert
Das Tool liest dieselben Formate wie das rgb() in CSS, Sie können also direkt aus Ihrem Stylesheet einfügen:
- Prozentwerte:
rgb(100% 0% 0%)entsprichtrgb(255 0 0). - Dezimalzahlen:
rgb(82.4 113 255)ist gültiges CSS. Hier wird der Kanal auf die nächste ganze Zahl gerundet. - Werte außerhalb von 0-255: CSS meldet keinen Fehler und begrenzt auf Maximum oder Minimum,
rgb(300 0 0)wird also zurgb(255 0 0). Das Tool warnt dagegen, weil es fast immer ein Tippfehler ist. - Trennzeichen:
82,113,255und82 113 255funktionieren, und eine vierte lose Zahl wird als Transparenz von 0 bis 1 gelesen.
Die Syntax mit Leerzeichen und Schrägstrich für die Transparenz und der Unterschied zu rgba() mit Kommas sind im HEX-zu-RGB-Konverter erklärt.
Weitere Farb-Tools
Für die Gegenrichtung nutzen Sie den HEX-zu-RGB-Konverter. Brauchen Sie ein Testbild mit Hintergrund- und Textfarbe in HEX, akzeptiert der Platzhalterbild-Generator die Codes, die Sie gerade umgerechnet haben.