Gõ hoặc dán giá trị RGB, hay rgb(255, 99, 71), để lấy ngay mã hex tương ứng, kèm luôn màu đó ở dạng HSL, HSV và CMYK nếu bạn cần.
File không bao giờ rời khỏi thiết bị của bạn
hex#ff6347
rgbrgb(255, 99, 71)
hslhsl(9, 100%, 64%)
hsvhsv(9, 72%, 100%)
cmykcmyk(0%, 61%, 72%, 0%)
Đổi ba số hệ 10 thành các cặp hex
Đi từ RGB sang hex là chiều ngược lại của hex sang RGB: thay vì tách một chuỗi thành từng cặp rồi
đọc theo hệ 16, bạn lấy ba số hệ 10 rồi viết mỗi số thành một số hệ 16 hai chữ số, sau đó ghép kết
quả lại. Mỗi bước làm trên từng kênh riêng — đỏ có cặp của đỏ, xanh lá có cặp của xanh lá, xanh
dương có cặp của xanh dương — rồi ba cặp được đặt cạnh nhau, thêm dấu # ở đầu.
Hai ví dụ tính tay
Lấy rgb(30, 144, 255). Đổi 30: đó là 1 × 16 + 14, mà 14 trong hex là e, nên 30 là 1e. Đổi
144: đó là 9 × 16 + 0, nên 144 là 90. Đổi 255: đó là 15 × 16 + 15, mức tối đa của một byte,
nên 255 là ff. Ghép lại được #1e90ff — một màu xanh dương đậm.
Ví dụ thứ hai, rgb(46, 204, 113): 46 là 2 × 16 + 14, tức 2e; 204 là 12 × 16 + 12, tức cc;
113 là 7 × 16 + 1, tức 71. Kết quả là #2ecc71, một màu xanh lá ngọc bích khá sạch. Cả hai ví
dụ đều là chiều ngược của phép chuyển hex sang RGB, và chạy ngược lại từ hex về RGB sẽ ra đúng con
số ban đầu, không lệch một chút nào theo cả hai chiều.
Mẹo:Nếu bạn đã biết mã hex mình muốn, đi theo chiều ngược có khi lại nhanh hơn để kiểm tra: các cặp ff/63/47 của #ff6347 là 255/99/71 — đúng bằng màu rgb(255, 99, 71) khi đổi ngược lại.
Vì sao 255 là trần, không phải một gợi ý
Một kênh màu 8-bit có đúng 256 giá trị khả dĩ, từ 0 đến 255, vì một byte chỉ giữ được 256 trạng
thái. rgb(255, 99, 300) không phải một màu đỏ cực sáng, cực đậm — đó là một con số không có cặp
hex nào để trở thành, vì hai chữ số hex dừng lại ở ff. Những công cụ tự động cắt 300 xuống 255
sẽ che mất việc con số đó thực ra đến từ nơi khác: thang 0–100% gõ nhầm thành 0–255, một giá trị bị
nhân đôi do lỗi chuyển đơn vị, hoặc một lần dán bị dư một chữ số. Báo lỗi thay vì đoán mò giúp lỗi
đó không bị giấu đi. Quy tắc tương tự áp dụng ở đầu dưới: một kênh âm, như rgb(-10, 99, 71),
cũng bị từ chối vì lý do y hệt — không có cặp hex nào nhỏ hơn 00.
Mẹo:Bị báo lỗi ngoài phạm vi với một màu bạn copy từ code? Kiểm tra xem nguồn đó có dùng thang 0–100% hay 0–1 cho kênh đó không — nhân với 255 (hoặc với 2,55 nếu là phần trăm) thường sẽ ra đúng con số công cụ này cần.
Hệ 10 sang hex, tra nhanh
Vài con số tròn đáng nhớ vì chúng xuất hiện liên tục trong công cụ thiết kế và bảng màu mặc định.
Hệ 10
Cặp hex
0
00
16
10
32
20
64
40
128
80
255
ff
Khi nào hex là định dạng nên đưa cho người khác
RGB thường là thứ một color picker hay một API canvas trả về; hex thường là thứ một stylesheet,
một tài liệu bàn giao thiết kế, hay một câu hỏi "màu này là màu gì vậy" trên Slack cần. Đổi RGB
sang hex là bước biến ba con số rời rạc trên giao diện thành một chuỗi mà designer hay một rule CSS
có thể dùng thẳng — đó là lý do cả hai chiều chuyển đổi đều được dùng nhiều gần như ngang nhau
trong thực tế, tùy vào việc bạn đang đứng ở đầu nào của luồng làm việc.
Câu hỏi thường gặp
Cách đổi ba số RGB sang mã hex bằng tay thế nào?
Đổi từng kênh sang hex riêng biệt rồi ghép ba cặp lại. 30 trong hex là 1e, 144 là 90, 255 là ff, nên rgb(30, 144, 255) thành #1e90ff. Không có làm tròn hay pha trộn giữa các kênh — mỗi số tự đổi thành đúng hai chữ số hex của riêng nó.
Vì sao công cụ từ chối rgb(255, 99, 300)?
Vì 300 không thể là giá trị của một kênh màu. Một byte — hai chữ số hex — tối đa chỉ đến 255 (ff), nên không có cặp hex nào ứng với 300 cả. Đầu vào bị từ chối thay vì tự động cắt bớt, vì việc đoán bạn định gõ 30, 200 hay 255 chỉ khiến lỗi gõ nhầm bị che đi.
Kênh RGB lớn hơn 255 có phải là một màu sáng hơn không?
Không — màn hình không thể sáng hơn quá mức 255, nên một con số lớn hơn cũng chẳng có ý nghĩa gì thêm. 255 đã là cường độ tối đa của kênh đó rồi; một giá trị vượt quá không phải màu đỏ rực hơn, mà là dữ liệu sai, thường do gõ dư một chữ số hoặc nhầm với thang 0–100%.
Kênh RGB có thể âm hay có phần thập phân không?
Không, ở định dạng này thì không. Kênh rgb() trong CSS là số nguyên từ 0 đến 255. Một số âm hay một số thập phân như 99,5 không ứng với cặp hex nào cả, nên cả hai đều bị từ chối giống như một giá trị ngoài phạm vi.
Dùng phần trăm thay vì số 0–255 có được không?
Được — rgb(100%, 39%, 28%) là cú pháp CSS hợp lệ, và được chuyển đổi theo cách quy phần trăm đó về giá trị 0–255 trước khi đổi sang hex. Tuy nhiên trộn phần trăm với số thường trong cùng một màu thì không hợp lệ, nên hãy giữ cả ba kênh theo một kiểu viết.
Mã hex xuất ra viết hoa hay viết thường?
Viết thường, kiểu phổ biến hơn trong stylesheet và khi xem diff trên git. Hex không phân biệt hoa thường với bất kỳ trình đọc nào, kể cả công cụ này, nên #1E90FF và #1e90ff vẫn là cùng một màu nếu bạn cần viết hoa cho công cụ thiết kế.
Giá trị alpha của tôi biến đâu mất khi sao chép ra hex?
Nếu RGB của bạn có kênh alpha nhỏ hơn 1, hãy tìm kết quả hex 8 ký tự thay vì 6 ký tự thông thường — cặp cuối cùng chính là độ đục. Mã hex 6 ký tự không mang được thông tin alpha, nên độ trong suốt chỉ được giữ lại đầy đủ ở dạng 8 ký tự.