颜色格式转换器

全球通用工具

一个颜色,三种写法:hex 代码、rgb() 值和 hsl() 值描述的是同一个像素。粘贴其中任意一种,页面会返回全部三种写法,使用 CSS 默认假设的 sRGB 颜色空间;输入带 alpha 通道时,透明度会在每种格式中原样保留。

自动模式会识别开头的 #、rgb( 或 hsl(,并说明识别到了哪一种。

hex 代码(带不带 # 都可以)、rgb()/rgba() 或 hsl()/hsla() 值。输入中的 alpha 会带到每一种输出。

留空则命名为 color-conversion.txt。

边输入边更新。所有计算都在你的浏览器里完成,数据不会离开本机。

同一个颜色,三种写法

#3498db

#3498db 就是 rgb(52, 152, 219) 和 hsl(204.1 69.9% 53.1%)。占主导的通道是蓝色,这个值被读作 hex。

识别为
hex
RGB
rgb(52, 152, 219)
HSL
hsl(204.1 69.9% 53.1%)

红、绿、蓝三个通道

  • 红52
  • 绿152
  • 蓝219

显示器把三个通道按这些强度混合,画出这个颜色。上面的数字就是 CSS 所假设的 sRGB 空间里的三个通道值。

所有格式

格式值
Hex#3498db
RGBrgb(52, 152, 219)
HSLhsl(204.1 69.9% 53.1%)

这是精确的 sRGB 转换,不是近似值:任何 sRGB 显示器都会把 #3498db 和 rgb(52, 152, 219) 渲染成同一个像素。换到更广的色域或面向印刷需要设备配置文件,这一页刻意不伪造那种转换。

数据不会离开浏览器。颜色的解析与转换都在标签页里完成,也就是说,一个重要的设计色值不会被上传到任何地方——这是本站所有纯计算工具共有的边界。

关于这个工具

颜色名、hex 三元组、`rgb()` 和 `hsl()` 是描述同一个 sRGB 像素的四种写法,这一页在它们之间转换,而不改变颜色本身。粘贴任意一种,其余写法都会返回,alpha 一并带出,设计令牌可以直接落到下一个工具需要的格式里。

算术遵循 CSS Color 规范,也就是浏览器实现的同一套规则:hex 与 `rgb()` 是一组三字节,`hsl()` 则把它重新描述为色相角、饱和度和亮度。转换在客户端完成,处于保密期的调色板不会被发到任何地方;sRGB 这个前提是明说的,不是藏起来的。

页面只在 sRGB 内部转换,并且会说明这一点。它不会凭空造出更广的色域、CMYK 印刷值或某个 Pantone 色号,因为那需要设备配置文件,而标签页里没有。把这些数字当作网页上的精确值,涉及油墨的地方则当作近似值。

它是怎么工作的

Hex、RGB 与 HSL 是同一个 sRGB 三元组的三种写法

屏幕上的颜色是三个通道——红、绿、蓝——每个通道是一个 0 到 255 的字节。hex 把每个字节写成两位十六进制数字;`rgb()` 用十进制写出来;`hsl()` 则把同一组三元组重新描述为色相、饱和度和亮度,其中色相是色轮上的一个角度。三位的 `#rgb` 简写只是把每一位重复一次,`rgba()` 的百分比写法也只是同一组字节的另一种表达。

在 sRGB 范围内,这三者之间的转换是精确的,页面“同一个像素”的说法正建立在此。更广的色域或印刷需要设备配置文件,那是另一个颜色空间,页面刻意不去伪造这类转换。

Alpha 会一路带着走,而不是被丢掉

八位 hex,或者 `rgba()`/`hsla()` 值,前三个通道完全不透明,第四个通道表示透明度。页面在每种输出里都保留这个 alpha:`#ff000080` 变成 `rgba(255, 0, 0, 0.5)`,透明度经过 HSL 往返之后依然存在。alpha 不参与预乘,它只是与三通道并列的第四个分量;写回 hex 时,0 到 1 的透明度映射到 00 到 ff 的一个字节,因此打印时的取舍只影响显示精度,不影响颜色本身。四位的 `#rgba` 简写也适用:一位 alpha 会被重复成两位,再按同样规则处理。

HSL 往返之后仍然是同一个字节

转换到 HSL 时,内部保留完整精度,所以一个颜色转到 HSL 再转回来,会落在原来的字节上;页面只在打印小数时四舍五入。正是这个性质,让页面能用来挑选和比较颜色,而不只是把值读出来。

需要留意的是,HSL 并不是感知均匀的颜色空间:它的亮度不是人眼感知的明度,饱和度在不同色相下也不等价。sRGB 的三通道本身带有 gamma 编码,HSL 是在这组编码值上做线性换算,所以 `hsl(60 100% 50%)` 和 `hsl(240 100% 50%)` 看起来并不会同样亮。调色时把它当作操作坐标,而不是感知度量。

名字和对不上的颜色空间会被拒绝,而不是猜一个

像“red”这样的颜色名会被拒绝,因为名字经过本地化,在不同系统里有歧义,而三种数值格式没有这个问题;把名字猜成一个字节,也等于悄悄选定某一份调色板。CMYK、Lab 以及超过八位的 hex 出于同样的理由被拒绝:页面只在 sRGB 内转换并明说这一点,而不是假装印刷值或广色域值有一个 sRGB 答案。CSS 里的具名颜色有一百多个,不同工具对它们的取舍也不完全一致,拒绝比猜错更诚实。

打印出来的 HSL 丢掉了什么,以及 alpha 为什么是粗粒度的

HSL 那行只印一位小数,因为那是人能读的分辨率;而 0.1 个百分点的亮度大约相当于 8 位色阶的四分之一。把打印出来的 hsl() 字符串再粘回页面,可能落回相差一个字节的位置。页面内部的换算用的是精确值,所以 Hex 与 RGB 永远严格一致;只有在经过「打印字符串」这一趟往返时才可能漂一个色阶。

alpha 同样是 8 位通道。#80 是 128/255 = 50.2%,页面印成 0.5;#01 是 0.4%,#fe 是 99.6%。设计师想要「50%」,在字节里拿到的是 50.2%;把 alpha 存成小数的设计系统,也不该指望经过 hex 一次往返还能保住超过一个字节的精度。

这两点都不是靠多印几位小数就能修掉的缺陷:屏幕的像素本来就是 8 位,八位小数的 HSL 只是噪声。这是 hex 能携带的边界,页面写明它,而不是用一个更漂亮的数字把它藏起来。

示例

示例使用页面自带的默认输入,只改设置;下面的结果与你在页面上看到的完全一致。

hex 代码转成所有格式

你粘贴的是什么: 从文本自动判断 · 颜色: #3498db · 下载文件名: —

同一个颜色,三种写法

#3498db

#3498db 就是 rgb(52, 152, 219) 和 hsl(204.1 69.9% 53.1%)。占主导的通道是蓝色,这个值被读作 hex。

识别为: hex · RGB: rgb(52, 152, 219) · HSL: hsl(204.1 69.9% 53.1%)

#3498db 就是 rgb(52, 152, 219) 和 hsl(204.3 69.8% 53.1%)——同一个像素,三种写法,通道条显示蓝色在混合中占主导。

带透明度的 rgb() 值

你粘贴的是什么: 从文本自动判断 · 颜色: rgba(255, 0, 0, 0.5) · 下载文件名: —

同一个颜色,三种写法

#ff000080

#ff000080 就是 rgba(255, 0, 0, 0.5) 和 hsl(0 100% 50%)。占主导的通道是红色,这个值被读作 rgb()。

识别为: rgb() · RGB: rgba(255, 0, 0, 0.5) · HSL: hsl(0 100% 50%)

rgba(255, 0, 0, 0.5) 变成 #ff000080,以及 50% 不透明度的 hsla() 写法——alpha 随着颜色走遍每一种输出。

把 hsl() 值读成 hex

你粘贴的是什么: 从文本自动判断 · 颜色: hsl(120, 100%, 50%) · 下载文件名: —

同一个颜色,三种写法

#00ff00

#00ff00 就是 rgb(0, 255, 0) 和 hsl(120 100% 50%)。占主导的通道是绿色,这个值被读作 hsl()。

识别为: hsl() · RGB: rgb(0, 255, 0) · HSL: hsl(120 100% 50%)

纯绿 hsl(120 100% 50%) 返回 #00ff00 / rgb(0, 255, 0),结果是精确的,因为内部转换保留了完整精度。

三位简写会展开

你粘贴的是什么: 从文本自动判断 · 颜色: #f00 · 下载文件名: —

同一个颜色,三种写法

#ff0000

#ff0000 就是 rgb(255, 0, 0) 和 hsl(0 100% 50%)。占主导的通道是红色,这个值被读作 自动判断。

识别为: auto · RGB: rgb(255, 0, 0) · HSL: hsl(0 100% 50%)

三位简写 #f00 展开为 #ff0000 / rgb(255, 0, 0):每一位都重复一次,和 CSS 的做法一致,所以简写与长写法描述的是同一个字节。

常见问题

hex、rgb 和 hsl 有什么区别?

三者描述的是同一个 sRGB 像素。hex 和 rgb 用不同的进制写出红、绿、蓝三个字节;hsl 把颜色重新描述为色相、饱和度和亮度,很多人觉得这样更容易调整。在 sRGB 范围内,这些值可以互换。

转换是无损的吗?

在 hex、rgb 和完整精度的 HSL 值之间是无损的——颜色转过去再转回来,会落在原来的字节上。唯一的舍入出现在 HSL 显示的小数位上;内部值保留了足够的精度,往返是安全的。

为什么转换后的颜色打印出来不一样?

因为印刷是另一个颜色空间。sRGB 假设的是特定的显示器色域;油墨有自己的一套,而且小得多,两者之间转换需要设备配置文件。这一页只在 sRGB 内转换,并且如实说明,而不是编造一个印刷转换。

能粘贴“red”这样的颜色名吗?

不能。颜色名经过本地化,在不同系统里有歧义,所以页面不会从名字猜出一个字节——请改用 rgb(255, 0, 0)、#ff0000 或对应的 hsl() 写法。拒绝一个页面无法确定的值,才是诚实的回答。

三位和四位 hex 也支持 alpha 吗?

支持。三位的 #rgb 会展开成六位,完全不透明;四位的 #rgba 形式带一位 alpha。输入带 alpha 通道时页面输出八位 hex,否则输出普通的六位 hex。

资料来源与统计口径

  • 颜色换算是 sRGB 标准(IEC 61966-2-1)下的算术,也就是屏幕与 CSS 通用的色彩空间。
  • 十六进制、rgb() 与 hsl() 的换算,以及带透明度的 `#rrggbbaa`,遵循 CSS Color Module Level 4。
  • 换算在浏览器里完成,不上传任何内容。

最近复核于 2026-09-26.

本页在您的浏览器本地运行,请保留原文件备份;不涉及财务建议。 阅读完整免责声明。

CSS 压缩与美化开发者工具在浏览器内压缩或美化 CSS 与 HTML:删除注释与不参与渲染的空白,另提供两种安全缩短,并如实列出不会触碰的内容。无需上传。压缩或美化代码 →大小写转换与文本清理文本与写作将文本转换为十二种大小写写法,包括标题式大小写、全大写、camelCase、snake_case 等,同时清理粘贴带入的异常空格、弯引号与不可见字符。所有处理都在浏览器本地完成。转换文本大小写 →JSON 格式化与校验开发者工具粘贴 JSON 即可格式化、压缩或按键排序;语法有误时会给出精确的行列位置,并点出最常见的四类错误。解析全程在浏览器内完成,文本不会上传。格式化并校验 JSON →文本差异对比文本与写作逐行或逐词比较两段文本,生成可复制的统一差异、标出增删词的变更清单,并提供大小写、空格和空行开关。两段文本都留在浏览器中。对比两段文本 →Base64 编码与解码开发者工具在浏览器里把文本编码为 Base64,或把 Base64 解码回文本,支持标准与 URL 安全字母表,并正确处理 UTF-8、百分号编码与 data URL,内容不会上传。编码或解码 Base64 →Cron 表达式生成器开发者工具把 cron 表达式翻译成大白话,并列出接下来的运行时间:五字段或六字段、Vixie 或 Quartz、任意时区,并把陷阱逐一点名。不上传任何内容。生成 cron 表达式 →