Bộ chuyển đổi RGB sang HSL

Chuyển đổi RGB sang HSL ngay khi bạn nhập — miễn phí, tức thì, đi kèm ví dụ minh họa và bảng màu phổ biến.

Ví dụ minh họa

RGB 255, 87, 51 = HSL 11, 100%, 60%

Nguyên lý chuyển đổi

  • HSL mô tả cùng một màu sắc bằng tông màu (hue, từ 0–360° trên vòng tròn màu), độ bão hòa (saturation) và độ sáng (lightness) — rất tiện lợi khi bạn muốn làm tối hoặc giảm độ bão hòa của màu bằng cách chỉ thay đổi một thành phần duy nhất.

Các màu phổ biến trong hệ RGB và HSL

Màu sắcRGBHSL
Đỏ255, 0, 00, 100%, 50%
Cam255, 165, 039, 100%, 50%
Vàng255, 255, 060, 100%, 50%
Xanh lá0, 128, 0120, 100%, 25%
Xanh lục lam0, 255, 255180, 100%, 50%
Xanh dương0, 0, 255240, 100%, 50%
Tím128, 0, 128300, 100%, 25%
Hồng255, 192, 203350, 100%, 88%
Nâu165, 42, 420, 59%, 41%
Trắng255, 255, 2550, 0%, 100%
Xám128, 128, 1280, 0%, 50%
Đen0, 0, 00, 0%, 0%

Mọi quá trình chuyển đổi đều chạy trong trình duyệt của bạn. Không có thông tin nào bạn nhập được tải lên BroBroGo.

Câu hỏi thường gặp

Làm cách nào để chuyển đổi RGB sang HSL?

Nhập hoặc dán giá trị RGB của bạn ở trên — giá trị HSL sẽ cập nhật ngay lập tức. Bạn cũng có thể chọn màu trực quan bằng bảng chọn màu.

Việc chuyển đổi có chính xác tuyệt đối không?

Các giá trị được làm tròn thành số nguyên, định dạng mà các công cụ thiết kế và CSS yêu cầu. Sự khác biệt này là cực kỳ nhỏ, mắt thường hoàn toàn không thể nhận ra.

Từ RGB – ngôn ngữ máy tính – sang HSL – ngôn ngữ con người

RGB là mô hình màu gốc của màn hình. Mỗi pixel hiển thị bằng ba số 0–255 tương ứng với cường độ đỏ, lục và lam. Nhưng con người không nghĩ về màu theo ba kênh riêng lẻ. Khi bạn thấy một màu tím nhạt, bạn không tự hỏi “tỉ lệ đỏ: lục: lam là bao nhiêu?” – bạn nghĩ đến sắc thái, độ đậm nhạt và độ sáng. HSL được xây dựng để phản ánh cách suy nghĩ đó: Hue (sắc) là vị trí trên vòng tròn màu 0–360°, Saturation (độ bão hòa) là tỉ lệ phần trăm, Lightness (độ sáng) cũng là phần trăm. Công cụ RGB-to-HSL trên trang này cung cấp phép chuyển đổi tức thời giữa hai thế giới: từ ba số nhàm chán của sRGB đến bộ ba trực quan mà bạn có thể chỉnh sửa mà không phá vỡ cảm giác về màu sắc.

Khác với các trang chuyển đổi màu thông thường, trang này tập trung vào lợi ích thiết kế: khi bạn có một màu RGB cụ thể (ví dụ 79, 70, 229), công cụ hiển thị ngay giá trị HSL tương ứng (243°, 75%, 59%) cùng các định dạng khác như HEX, HSV, CMYK và LAB. Bạn có thể chỉnh sửa bất kỳ trường nào và tất cả đều cập nhật đồng thời. Tất cả phép tính đều chạy hoàn toàn trong trình duyệt – không có dữ liệu nào được tải lên.

Cách nhập liệu và đọc kết quả

Giao diện công cụ yêu cầu một đầu vào RGB: ba số nguyên từ 0 đến 255, cách nhau bằng dấu phẩy hoặc khoảng trắng. Ví dụ: 79, 70, 229 hoặc 79 70 229. Ngay sau khi nhập, công cụ hiển thị:

  • HSL: Hue (0–360), Saturation (%), Lightness (%)
  • HEX: mã 6 ký tự (ví dụ #4F46E5)
  • HSV: Hue, Saturation, Value (dạng số)
  • CMYK: bốn giá trị phần trăm (ước lượng trên màn hình, không dùng cho in chuyên nghiệp)
  • LAB: ba giá trị L*, a*, b* (CIE 1976)

Nếu bạn nhập trực tiếp giá trị HSL (ví dụ 243°, 75%, 59%), công cụ sẽ chuyển đổi ngược lại sang RGB và hiển thị tất cả các định dạng còn lại. Định dạng hợp lệ cho HSL là: một số từ 0 đến 360 cho hue, theo sau là hai phần trăm có thể có dấu % hoặc không? Thực tế trang chấp nhận dạng 243, 75%, 59% – phần trăm bắt buộc cho saturation và lightness. Nếu nhập 243, 75, 59, hệ thống có thể báo lỗi vì thiếu ký tự %.

HEX nhập dạng #RRGGBB (6 hoặc 3 ký tự viết tắt). CMYK nhập bốn số thập phân từ 0 đến 100 (không cần %). LAB nhập L* (0–100), a* và b* (khoảng -128 đến 127). Mỗi lần nhập sẽ khởi động lại toàn bộ bảng chuyển đổi.

Quy tắc xử lý lỗi và ngoại lệ

Công cụ tuân thủ các quy tắc nghiêm ngặt để đảm bảo người dùng không nhập dữ liệu sai. Nếu bạn nhập RGB không đúng định dạng – chẳng hạn như 79, 70 (thiếu một số) hoặc 79, 70, 300 (giá trị vượt 255) – công cụ hiển thị thông báo lỗi:

“Enter RGB as three numbers 0–255, like 79, 70, 229.”

Tương tự, nếu bạn nhập HSL sai – ví dụ 243, 75%, 59 (thiếu % ở lightness) – trang hiển thị:

“Enter HSL as hue 0–360 with two percentages, like 243, 75%, 59%.”

Một ngoại lệ tinh tế hơn liên quan đến không gian màu là khi bạn nhập giá trị LAB hoặc CMYK nằm ngoài gamut RGB. Mô hình màu sRGB (mà hầu hết màn hình sử dụng) chỉ bao phủ một phần của không gian màu LAB. Nếu bạn nhập một màu LAB siêu bão hòa (ví dụ L* 50, a* 100, b* 100), công cụ sẽ cắt giá trị đó về màu RGB gần nhất có thể hiển thị. Kết quả là khi bạn chuyển đổi màu đã điều chỉnh đó trở lại LAB, bạn sẽ thấy một độ lệch nhỏ – đó là hậu quả của việc lấy mẫu ngoài gamut. CMYK cũng tương tự: các giá trị được ước lượng dựa trên một mô hình chuyển đổi tuyến tính đơn giản, không phù hợp cho in offset chính thức. Trang có ghi rõ: “CMYK output is an on‑screen estimate and should not be used for professional print without verification.”

Ứng dụng thực tế: Bảng màu, chủ đề và tiếp cận

HSL trở thành công cụ đắc lực cho UI/UX designer và front-end developer vì một lý đơn giản: thay đổi Lightness không ảnh hưởng đến Hue. Khi bạn thiết kế một button chính, bạn muốn một loạt màu nền từ nhạt đến đậm cùng một sắc thái xanh dương. Với RGB, việc giảm cường độ cả ba kênh đồng thời thường làm thay đổi sắc thái cảm nhận (ví dụ xanh dương có thể ngả sang xám tím). Với HSL, bạn chỉ cần giảm Lightness và tăng Saturation đến mức mong muốn – Hue giữ nguyên.

Trong CSS, hàm hsl()hsla() đã được hỗ trợ rộng rãi. Thay vì viết rgba(79, 70, 229, 0.8) và phải tính toán thủ công, bạn có thể viết hsla(243, 75%, 59%, 0.8). Điều này đặc biệt hữu ích khi xây dựng theme sáng/tối. Ví dụ:

:root {
  --brand-hue: 243;
  --brand-sat: 75%;
}
.button {
  background-color: hsl(var(--brand-hue), var(--brand-sat), 59%);
}
.button:hover {
  background-color: hsl(var(--brand-hue), var(--brand-sat), 45%);
}

Khả năng tiếp cận (accessibility) cũng hưởng lợi lớn từ HSL. WCAG yêu cầu tỉ lệ tương phản tối thiểu 4.5:1 cho văn bản thông thường. Bạn có thể điều chỉnh Lightness của màu nền hoặc màu chữ mà không làm mất đi bản sắc thương hiệu. Một màu đỏ tươi ở hsl(0, 100%, 50%) có thể quá chói trên nền trắng; giảm lightness xuống 35% và tăng saturation lên 80% tạo ra một màu đỏ sẫm dễ đọc hơn mà vẫn giữ nguyên sắc đỏ.

Toán học chuyển đổi RGB ↔ HSL

Hiểu cơ chế bên dưới giúp bạn tránh những hiểu lầm phổ biến. Quy trình chuyển đổi từ RGB (sRGB) sang HSL gồm ba bước:

  1. Chuẩn hóa các giá trị R, G, B từ thang 0–255 về khoảng bằng cách chia cho 255.
  2. Tìm giá trị lớn nhất (max) và nhỏ nhất (min) trong ba giá trị đã chuẩn hóa. Tính delta = max – min.
  3. Tính Lightness (L) = (max + min) / 2.
  4. Nếu delta = 0 (màu xám), Saturation (S) = 0 và Hue (H) không xác định (thường gán bằng 0).
  5. Nếu delta > 0:
    • S = delta / (1 – |2L – 1|) (công thức chính xác của mô hình HSL chứ không phải HSV).
    • H được tính dựa trên kênh nào là max:
      • Nếu max = R: H = 60° × ((G – B) / delta mod 6)
      • Nếu max = G: H = 60° × ((B – R) / delta + 2)
      • Nếu max = B: H = 60° × ((R – G) / delta + 4)
  6. Chuyển H về thang 0–360° (nếu âm, cộng 360°). Giá trị H cuối cùng là số thực, thường được làm tròn đến số nguyên gần nhất.

Ví dụ với màu tím rgb(79, 70, 229):

  • Chuẩn hóa: R = 79/255 ≈ 0.3098, G = 70/255 ≈ 0.2745, B = 229/255 ≈ 0.8980.
  • max = 0.8980 (B), min = 0.2745 (G). delta = 0.6235.
  • L = (0.8980 + 0.2745)/2 ≈ 0.5863 → 58.63% (làm tròn 59%).
  • S = 0.6235 / (1 – |2×0.5863 – 1|) = 0.6235 / (1 – 0.1726) = 0.6235 / 0.8274 ≈ 0.7535 → 75.35% (làm tròn 75%).
  • H = 60° × ((R – G)/delta + 4) = 60° × ((0.3098 – 0.2745)/0.6235 + 4) = 60° × (0.0353/0.6235 + 4) = 60° × (0.0566 + 4) = 60° × 4.0566 ≈ 243.4° → 243°.

Kết quả khớp với đầu ra công cụ.

Chuyển đổi ngược từ HSL sang RGB phức tạp hơn một chút, liên quan đến việc tính C (chroma), X (thành phần phụ) và m (tương ứng lightness). Các phép tính này hoàn toàn có thể thực hiện bằng tay, nhưng công cụ giúp bạn tránh sai sót.

Hạn chế của HSL và khi nào cần mô hình khác

HSL không phải là mô hình hoàn hảo. Một nhược điểm lớn là nó không đồng nhất tri giác (perceptually uniform). Ví dụ: một màu vàng và một màu xanh dương có cùng Lightness 50% trong HSL sẽ không có cảm giác sáng bằng nhau – vàng trông sáng hơn nhiều. Điều này xuất phát từ độ nhạy khác nhau của mắt người với các bước sóng. Mô hình CIELAB (LAB) được thiết kế để khắc phục điều đó: cùng một giá trị L* đại diện cho độ sáng cảm nhận tương đương trên các sắc thái khác nhau. Vì vậy, nếu bạn cần một thang màu tuần tự chính xác cho biểu đồ dữ liệu, LAB (hoặc các biến thể như OKLab) là lựa chọn tốt hơn HSL.

Ngoài ra, cả RGB và HSL đều là mô hình phụ thuộc thiết bị (device‑dependent) – chúng tham chiếu đến không gian màu sRGB tiêu chuẩn. Khi chuyển đổi từ LAB (thiết lập dựa trên cảm nhận con người) sang HSL, có thể xảy ra hiện tượng ngoài gamut như đã đề cập. Công cụ xử lý bằng cách cắt (clipping) giá trị về ranh giới của sRGB, nhưng đó là một phép tính xấp xỉ. Nếu bạn làm việc với in ấn hoặc màn hình DCI-P3 rộng hơn, bạn cần sử dụng không gian màu phù hợp hơn.

Một hạn chế khác: thao tác chỉnh Saturation trong HSL có thể tạo ra màu sắc không thực tế khi độ bão hòa ở mức cao. Bản thân thuật toán chuyển đổi HSL chuẩn không duy trì được dạng sóng màu thuần khiết như trong mô hình HSV, nhưng bù lại nó trực quan hơn khi tạo bảng màu (palette). Thiết kế viên cần hiểu rõ: HSL là công cụ khái niệm chứ không phải tuyệt đối về mặt đo lường.

Câu hỏi thường gặp

1. Tại sao HSL output của tôi lại có Lightness 50% dù màu RGB rất sáng?
Lightness trong HSL là giá trị trung bình của max và min sau chuẩn hóa, không phải độ sáng cảm nhận. Một màu vàng tươi rgb(255,255,0) có max=1, min=0 nên Lightness = 0.5 (50%). Trực quan nó sáng hơn 50% vì mắt nhạy với vàng, nhưng về mặt toán học HSL nó đúng.

2. Có thể nhập các giá trị HSL có số thập phân không?
Công cụ chấp nhận số thập phân cho hue (ví dụ 243.4) và các phần trăm có thể có dấu thập phân (ví dụ 75.35%). Tuy nhiên, output RGB sau chuyển đổi sẽ được làm tròn về số nguyên 0–255.

3. Tôi nhập một màu CMYK, nhưng kết quả RGB trông khác so với trong phần mềm đồ họa. Tại sao?
Vì công cụ này dùng một mô hình chuyển đổi CMYK → RGB đơn giản hóa dành cho hiển thị ước lượng (on‑screen soft‑proofing). Không có mối quan hệ một‑một giữa CMYK và sRGB; các phần mềm chuyên nghiệp như Photoshop dùng cấu hình ICC riêng. Bạn không nên dùng kết quả này cho in ấn thực tế.

4. Làm sao để biết một màu HSL có nằm trong gamut sRGB không?
Mọi màu HSL với hue 0–360, saturation 0–100% và lightness 0–100% đều ánh xạ được vào sRGB. Vấn đề chỉ xảy ra khi bạn nhập LAB hoặc CMYK. Nếu bạn nhập một giá trị LAB nằm ngoài gamut, công cụ sẽ tự động cắt và hiển thị màu gần nhất, kèm thông báo nhẹ ở giao diện (không hiển thị rõ ràng theo tài liệu, nhưng người dùng có thể nhận thấy sự dịch chuyển khi chuyển đổi qua lại).

5. Tôi muốn tạo một bảng màu từ một màu HSL, chỉ thay đổi Lightness. Có thể dùng công cụ này để thực hiện việc đó không?
Có, bằng cách nhập cùng một hue và saturation, chỉ thay đổi lightness trong trường HSL rồi đọc giá trị RGB/HEX tương ứng. Bạn cũng có thể copy mã HSL đó vào CSS hsl() để sử dụng trực tiếp. Tuy nhiên công cụ này không có chức năng tạo bảng màu tự động; bạn phải thao tác thủ công từng giá trị.

6. Công cụ có hỗ trợ độ trong suốt (alpha) không?
Không. Trang này chỉ xử lý màu đặc (fully opaque). Để thêm alpha, bạn cần dùng riêng hsla() hoặc rgba() trong CSS, hoặc các công cụ chuyên biệt khác.