Skip to content

Konverter Warna — HEX, RGB, HSL & OKLCH

Konversi HEX ke RGB, HSL, OKLCH, OKLAB, dan CMYK di peramban Anda — salin format apa pun dengan satu klik. Gratis, tanpa daftar, warna Anda tidak pernah meninggalkan halaman.

Tanpa Pelacakan Berjalan di Browser Gratis
Semua konversi warna terjadi secara lokal di peramban Anda. Tidak ada data yang dikirim ke server mana pun.
Gamut: sRGB Display P3 Rec2020
Kontras vs:
AA AA-Lg AAA AAA-Lg · APCA Lc
Simulasi buta warna (8 tipe)
Protanopia (buta-merah)
Deuteranopia (buta-hijau)
Tritanopia (buta-biru)
Achromatopsia (total)
Protanomaly (lemah-merah)
Deuteranomaly (lemah-hijau)
Tritanomaly (lemah-biru)
Achromatomaly (parsial)
Tints / Shades / Tones / Harmonies

Tints

Shades

Tones

Harmonies

Salin sebagai kode
Referensi warna umum
Ditinjau untuk kesesuaian CSS Color 4, kebenaran matriks OKLAB, akurasi WCAG 2.x + APCA Lc, dan paritas simulasi CVD 8-tipe dengan nilai yang dipublikasikan Brettel + Machado. — Go Tools Engineering Team · May 27, 2026

Apa Itu Konverter Warna?

Konverter warna adalah utilitas kecil yang menerjemahkan satu nilai warna antara format yang benar-benar dipahami oleh toolchain, sistem desain, dan peramban Anda — HEX, RGB, HSL, HSV, HWB, CMYK, OKLCH, OKLAB, dan 148 nama warna CSS. Konverter online telah menjadi andalan tooling web sejak awal 2000-an, ketika jawabannya hampir selalu adalah textbox HEX-ke-RGB sederhana yang dibuat untuk stylesheet era Geocities. Yang membedakan konverter modern dari alat warisan itu adalah tiga hal: UX bidang-bersatu di mana setiap format dapat diedit secara bersamaan alih-alih dropdown satu-arah, source-of-truth OKLCH yang menahan nilai kanonik secara internal sehingga round-trip tetap bit-stabil, dan matematika perseptual yang didasarkan pada W3C CSS Color 4 alih-alih aritmatika HSL terbelit-gamma yang dikirim generasi 2003.

Ruang warna yang berbeda ada karena masalah yang berbeda membutuhkan representasi yang berbeda, dan tidak ada satu ruang yang baik untuk semuanya. RGB bersifat native-perangkat-keras — ia memetakan langsung ke subpiksel merah, hijau, dan biru LCD atau ke fosfor CRT, dengan setiap kanal dikodekan sebagai bilangan bulat 8-bit dari 0 hingga 255. HEX hanyalah RGB dalam basis-16, dikemas ke dalam string enam karakter untuk CSS singkat dan copy-paste Figma. HSL, HSV, dan HWB adalah ruang kognitif-desainer — reshape silindris dari RGB yang memungkinkan Anda memutar rona, mencerahkan, atau menggelapkan dengan slider yang intuitif. HSL diterbitkan pada 1978 bersamaan dengan HSV oleh Alvy Ray Smith; HWB ditambahkan pada 1996 sebagai model mental yang lebih bersih (Hue + jumlah Putih + jumlah Hitam). CMYK adalah abstraksi proses-cetak — tumpukan tinta substraktif (Cyan, Magenta, Yellow, Key=hitam) yang memodelkan bagaimana tinta menyerap cahaya di atas kertas alih-alih bagaimana layar memancarkannya. OKLCH dan OKLAB adalah ruang perseptual — mereka dirancang sehingga jarak numerik yang sama sesuai dengan jarak perseptual yang sama, yang menjadikannya sangat diperlukan untuk ramp sistem desain dan matematika aksesibilitas. Nama warna adalah warisan CSS: 148 nama SVG/CSS3 seperti `tomato`, `rebeccapurple`, dan `slategray` yang dikirim bersama setiap peramban.

Selama lebih dari dua puluh tahun sRGB "cukup baik" — standar IEC 1996 yang dibangun di sekitar primer fosfor monitor CRT pada masa itu. Ia diam-diam mendefinisikan batas atas dari apa arti warna web. Lalu layar gamut luas memecah asumsi itu. Display P3 Apple mencakup kira-kira 50% lebih banyak dari spektrum yang terlihat daripada sRGB dan sekarang dikirim di setiap iPhone, iPad, dan MacBook dari 2017 dan seterusnya. Rec2020 mencakup lebih banyak lagi dan merupakan standar siaran untuk TV HDR. HSL menanamkan kekhasan gamma sRGB dalam definisinya, itulah sebabnya ramp HSL tampak tidak rata secara visual pada layar gamut luas — hijau pada L=50% tampak lebih terang daripada biru pada L=50%, karena L HSL bersifat geometris, bukan perseptual. Pada 2020 Björn Ottosson menerbitkan OKLAB, ruang warna seragam-perseptual yang diturunkan dari CIE-LAB dengan respons lightness yang dikoreksi dan perilaku yang lebih bersih pada saturasi tinggi. OKLCH adalah bentuk polarnya (Lightness / Chroma / Hue), bentuk yang sama dengan HSL tetapi dengan matematika perseptual diperbaiki. CSS Color 4 menambahkan sintaks `oklch()` dan `oklab()` pada 2022; Chrome 111 mengirim dukungan pada Maret 2023, Safari 15.4 sudah memilikinya pada Maret 2022, dan Firefox 113 mendarat pada Mei 2023. Tailwind v4, dirilis pada 2025, menjadikan OKLCH sebagai format token warna defaultnya; shadcn/ui mengikuti tak lama setelahnya. Alat ini mencerminkan pergeseran itu dengan menjadikan OKLCH sebagai source-of-truth internal — setiap konversi mengalir melalui OKLCH, sehingga round-trip HEX → RGB → OKLAB → HEX tidak pernah mengakumulasi pergeseran float, dan mengedit kanal L OKLCH secara langsung memperbarui setiap bidang lainnya secara persis.

Ruang mana yang Anda jangkau sepenuhnya tergantung pada apa yang Anda lakukan. **HEX** adalah pilihan tepat untuk penyematan web, copy-paste antara alat desain dan kode, dan di mana pun pengidentifikasi yang singkat penting — `#3b82f6` muat dengan nyaman di variabel CSS dan sebagian besar developer front-end dapat membacanya dalam sekali pandang. konverter hex ke RGB khusus menangani arah paling umum dalam satu langkah; konverter RGB ke hex kebalikan mencakup kasus di mana Anda memiliki integer kanal terpisah dari desainer atau pipeline matematika-piksel-gambar. **RGB** adalah untuk pengalamatan perangkat keras langsung — di mana pun Anda membutuhkan integer 0-255 (canvas API, manipulasi gambar, strip LED perangkat keras, atribut warna OpenGL). **HSL** adalah ruang kognitif-desainer warisan — putar rona, cerahkan, gelapkan — dan masih berguna ketika Anda membutuhkan tweak warna CSS cepat di proyek yang belum bermigrasi ke OKLCH. konverter hex ke HSL arah-tunggal adalah jalan pintas yang tepat ketika itu yang Anda butuhkan. **HSV dan HWB** adalah ruang pemilih warna desainer. HSV (Hue, Saturation, Value) cocok dengan kotak saturasi-value yang digambar sebagian besar UI pemilih, sehingga itulah yang dilaporkan Photoshop, Figma, dan Sketch ketika Anda mengklik eyedropper. HWB adalah model mental yang lebih bersih — pilih rona murni, lalu tambahkan putih untuk mencerahkan atau hitam untuk menggelapkan — dan CSS Color 4 menambahkan dukungan `hwb()` native di semua peramban evergreen. **CMYK** adalah untuk persiapan cetak. Penafian tumpul: output CMYK kami adalah aproksimasi naif berbasis-sRGB menggunakan rumus standar `K = 1 - max(R,G,B); C = (1-R-K)/(1-K)`. Akurasi cetak sungguhan memerlukan konversi profil ICC terhadap press, tinta, dan kertas tertentu — biasanya US Web Coated SWOP v2 atau Fogra39 — yang dapat menggeser kanal sebesar 5-15%. Perlakukan CMYK kami sebagai estimasi awal, bukan deliverable. konverter hex ke CMYK arah-tunggal menerapkan rumus yang sama dengan peringatan yang sama. **OKLCH** adalah pilihan default untuk kode baru pada 2025 dan ke depan — sistem desain modern, generasi palet sadar-aksesibilitas, di mana pun keseragaman perseptual penting. konverter hex ke OKLCH arah-tunggal ada untuk migrasi palet-warisan cepat. **OKLAB** adalah sepupu persegi panjang yang digunakan untuk matematika palet: titik-tengah antara dua warna, kalkulasi jarak, matriks simulasi buta warna, dan operasi lain yang membutuhkan aritmatika sumbu-linear. **Nama warna** adalah untuk dokumentasi, komentar kode, mockup, dan prosa — 148 nama warna CSS adalah kamus tetap, dan alat menemukan nama warna terdekat untuk masukan apa pun melalui jarak ΔE di OKLAB.

Graf konversi di jantung dari semua ini terdefinisi dengan baik dan mengejutkan bersih. sRGB dan linear-sRGB terkait oleh kurva gamma piecewise yang ditentukan dalam W3C CSS Color 4 §11.2 (kira-kira eksponen 2,4 dengan segmen linear kecil di dekat nol). Linear-sRGB dan CIE XYZ D65 terkait oleh matriks 3×3 tetap dari CSS Color 4 §15.1. XYZ D65 dan OKLAB terkait oleh dua matriks dan langkah akar-kubik (tahap respons-kerucut LMS, per Ottosson 2020). OKLAB dan OKLCH terkait oleh transformasi Cartesian-ke-polar — `C = sqrt(a² + b²); H = atan2(b, a)`. HEX hanyalah sRGB yang diserialisasi sebagai `#RRGGBB` basis-16. RGB ↔ HSL, RGB ↔ HSV, RGB ↔ HWB adalah transformasi geometris langsung dalam sRGB, didefinisikan di CSS Color 4 §5-7. CMYK adalah rumus naif berbasis-sRGB di atas. Seluruh pipeline adalah graf berarah yang berakar di OKLCH secara internal; setiap format lainnya dihitung darinya pada setiap penekanan tombol.

Di luar konversi inti, alat ini mengirim fitur yang tidak dimiliki generasi warisan. **Deteksi gamut Display P3 dan Rec2020** — tiga lencana menandai apakah warna saat ini berada di dalam rentang yang dapat direproduksi setiap ruang, dengan tombol **Snap ke sRGB** satu-klik yang menggunakan reduksi chroma biner (per algoritma informatif CSS Color 4) untuk mengecilkan warna hingga pas. **Lencana kontras ganda WCAG 2 + APCA Lc** — kedua metrik ditampilkan dalam satu baris sehingga Anda dapat lulus standar regulasi hari ini dan memeriksa-kewarasan dengan metrik perseptual berpandangan-ke-depan. **8 simulasi buta warna** — protanopia, deuteranopia, dan tritanopia melalui matriks dikromasi Brettel-Viénot-Mollon 1997; protanomaly, deuteranomaly, dan tritanomaly melalui matriks trikromasi-anomalus Machado-Oliveira-Fernandes 2009 pada keparahan 0,66; achromatopsia dan achromatomaly parsial melalui bobot luminansi rec601. **Generasi palet seragam-OKLCH** — tint, shade, tone, dan harmonies dibangun dengan menstep kanal L dalam kenaikan yang sama sambil menahan C dan H tetap (konstruksi yang sama dengan generator palet default Tailwind v4). **Snippet kode CSS / Tailwind v4 / SwiftUI / Compose / Flutter** — output siap-tempel untuk lima platform yang ditargetkan tim lintas-tim. **Integrasi EyeDropper API** pada peramban Chromium (Chrome, Edge, Brave, Opera) untuk memilih warna di mana saja di layar termasuk di luar peramban. **State hash URL** — warna saat ini dikodekan ke URL sebagai `#hex=...` atau `#oklch=...` sehingga Anda dapat membagikan tautan langsung ke warna yang persis dengan satu salin.

Semua di alat ini berjalan secara lokal di peramban Anda. Nilai warna Anda tidak pernah diunggah, tidak pernah dicatat, tidak pernah dianalisis, tidak pernah disimpan di server kami atau di server pihak ketiga mana pun. Nol permintaan jaringan saat Anda mengetik — buka tab Network DevTools peramban dan saksikan dengan mata Anda sendiri: mengetik di bidang mana pun memicu nol lalu lintas sama sekali, baik ke domain kami maupun ke endpoint analitik mana pun. Ini membuat alat aman untuk palet brand yang belum diumumkan, sistem token desain internal yang masih dalam pengembangan, mockup draf yang belum siap dibagikan kepada klien, dan pekerjaan warna rahasia lainnya yang menuntut kerahasiaan. Tidak ada cookie yang merekam apa yang Anda tempel; tidak ada analitik yang menyala pada perubahan warna; tidak ada layanan pihak ketiga yang menerima petunjuk apa pun tentang warna yang sedang Anda kerjakan. Postur yang sama meluas ke hash URL: fragmen `#hex=...` hanya hidup di address bar Anda dan tidak pernah dikirim ke server (peramban tidak menyertakan fragmen dalam permintaan HTTP), sehingga bahkan tautan yang dibagikan tidak membocorkan warna ke pihak ketiga selain penerima yang Anda kirim langsung. Untuk tim yang menangani pekerjaan brand pra-peluncuran, kampanye di bawah embargo, palet klien di bawah NDA, atau identitas visual yang sensitif terhadap kebocoran, jaminan privasi ini lebih penting daripada yang disarankan oleh headline kenyamanan. Untuk pembahasan lebih dalam tentang mengapa OKLCH menjadi standar sistem desain pada 2024–2026, baca panduan pendamping kami: Ruang warna OKLCH dijelaskan — mengapa Tailwind v4 mengadopsinya.

// sRGB → linear → XYZ D65 → OKLAB → OKLCH
// References: W3C CSS Color 4 §11-15, Ottosson 2020 (https://bottosson.github.io/posts/oklab/)
// Worked example: #3b82f6 (Tailwind blue-500)

const srgb = [0x3b, 0x82, 0xf6].map(v => v / 255); // [0.231, 0.510, 0.965]

const toLinear = (v) => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
const lin = srgb.map(toLinear); // gamma-decoded linear-sRGB

// linear-sRGB → XYZ D65 (CSS Color 4 §15.1 matrix)
const [lr, lg, lb] = lin;
const x = 0.4124564 * lr + 0.3575761 * lg + 0.1804375 * lb;
const y = 0.2126729 * lr + 0.7151522 * lg + 0.0721750 * lb;
const z = 0.0193339 * lr + 0.1191920 * lg + 0.9503041 * lb;

// XYZ D65 → LMS (Ottosson 2020 matrix), cube-root, → OKLAB
const l_ = Math.cbrt(0.8189330101 * x + 0.3618667424 * y - 0.1288597137 * z);
const m_ = Math.cbrt(0.0329845436 * x + 0.9293118715 * y + 0.0361456387 * z);
const s_ = Math.cbrt(0.0482003018 * x + 0.2643662691 * y + 0.6338517070 * z);
const L = 0.2104542553 * l_ + 0.7936177850 * m_ - 0.0040720468 * s_;
const a = 1.9779984951 * l_ - 2.4285922050 * m_ + 0.4505937099 * s_;
const b = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.8086757660 * s_;

// OKLAB → OKLCH (Cartesian to polar)
const C = Math.sqrt(a * a + b * b);
const H = (Math.atan2(b, a) * 180 / Math.PI + 360) % 360;
console.log(`oklch(${L.toFixed(3)} ${C.toFixed(3)} ${H.toFixed(1)})`);
// → oklch(0.629 0.193 263.4)

Fitur Utama

9 Ruang Warna yang Dapat Diedit Secara Bersamaan

Setiap format — HEX, RGB, HSL, HSV, HWB, CMYK, OKLCH, OKLAB, dan nama warna CSS — adalah bidang yang dapat diedit langsung, bukan dropdown satu-arah. Ketik nilai `oklch()` dan HEX, RGB, HSL semua diperbarui; tempel hex dari Figma dan OKLCH diperbarui dengan koordinat perseptual yang cocok. Kursor di bidang yang Anda edit tetap di tempatnya — hanya delapan bidang lainnya yang di-render ulang pada setiap penekanan tombol, sehingga pengeditan mengalir secara alami.

Source-of-Truth OKLCH — Round-Trip Bit-Sempurna

Representasi kanonik internal adalah OKLCH, bentuk polar OKLAB yang seragam-perseptual (Ottosson 2020). Setiap format lainnya diturunkan darinya pada setiap penekanan tombol. Ini berarti round-trip HEX → RGB → HSL → OKLAB → HEX tanpa pergeseran float — hex asli kembali tidak berubah. Konverter warisan yang mengalirkan konversi melalui HSL atau sRGB mengakumulasi error pembulatan per langkah; alat ini tidak.

Peringatan Gamut Display P3 + Rec2020

Tiga lencana langsung (sRGB, Display P3, Rec2020) menunjukkan apakah warna saat ini berada di dalam rentang yang dapat direproduksi setiap ruang. Berguna ketika Anda bekerja di OKLCH dan ingin tahu layar mana yang akan merender nilai secara akurat — banyak warna OKLCH Tailwind v4 melampaui sRGB tetapi muat di P3, yang dapat di-render sebagian besar perangkat Apple sejak 2017. Tombol Snap ke sRGB menggunakan algoritma reduksi-chroma biner CSS Color 4 untuk mengecilkan warna hingga pas.

Kontras WCAG 2 + APCA dalam Satu Baris

Kontras terhadap putih dan hitam ditampilkan menggunakan dua metrik berdampingan: rasio WCAG 2.1 (4,5:1 = teks badan AA, 7:1 = AAA) untuk kepatuhan regulasi hari ini, dan skor APCA Lc (algoritma kontras perseptual WCAG 3 berpandangan-ke-depan). APCA peka-polaritas (terang-di-gelap menimbang berbeda dari gelap-di-terang), yang rumus simetris WCAG 2 salah. Gunakan keduanya: WCAG untuk audit, APCA untuk keterbacaan nyata.

Simulasi Buta Warna Lintas 8 Tipe Defisiensi

Pratinjau langsung untuk tiga dikromasi (protanopia, deuteranopia, tritanopia) melalui matriks Brettel-Viénot-Mollon 1997, tiga trikromasi anomalus (protanomaly, deuteranomaly, tritanomaly) melalui matriks Machado-Oliveira-Fernandes 2009 pada keparahan 0,66, ditambah achromatopsia dan achromatomaly melalui bobot luminansi rec601. Mencakup kira-kira 8% pria dan 0,5% wanita — populasi yang desain Anda harus tetap dapat diakses untuknya.

Tint, Shade, Tone, dan Harmonies Seragam-OKLCH

Ramp palet dihasilkan dengan menstep kanal L dalam kenaikan OKLCH yang sama sambil menahan Chroma dan Hue tetap — konstruksi yang sama yang digunakan Tailwind v4. Hasilnya merata secara perseptual: selisih visual antara stop 400 dan 500 tampak identik dengan selisih antara 500 dan 600, yang tidak dapat dijamin ramp HSL. Harmonies (komplemen, triad, tetrad, split-complement) memutar Hue dengan sudut yang persis dan mempertahankan L+C.

Salin sebagai CSS / Tailwind v4 / SwiftUI / Compose / Flutter

Generasi kode satu-klik untuk lima platform yang dikirim sebagian besar tim lintas-tim: properti kustom CSS (`--color-brand: oklch(0.629 0.193 263.4)`), token `@theme` Tailwind v4, literal SwiftUI `Color(red:green:blue:)`, konstanta Jetpack Compose `Color(0xFF3B82F6)`, Flutter `Color(0xFF3B82F6)`. Sintaks yang persis diharapkan setiap platform, siap ditempel ke stylesheet brand, katalog aset iOS, atau tema Android.

Pemilih OKLCH Implementasi-Tangan (Tanpa Dependensi)

Kotak SL + slider rona + slider alpha ditulis dalam canvas + JavaScript polos tanpa pustaka pemilih eksternal. Gradien OKLCH pada slider rona dihitung dari matematika OKLCH nyata, bukan diaproksimasi dengan HSL, sehingga menyeret slider menghasilkan rotasi rona yang seragam secara perseptual. Bobot bundle tetap di bawah 10 KB untuk seluruh lapisan interaktif; paint pertama cepat bahkan pada beban dingin.

100% Di-Peramban — Tanpa Unggah, Tanpa Pelacakan

Semua matematika konversi, generasi palet, skor kontras, dan deteksi gamut berjalan secara lokal di peramban Anda. Nilai warna Anda tidak pernah ditransmisikan, tidak pernah disimpan di server, tidak pernah dicatat, tidak pernah dianalisis. Nol permintaan jaringan saat Anda mengetik — verifikasi di DevTools. Aman untuk palet brand yang belum diumumkan, token desain internal, mockup draf, dan pekerjaan warna rahasia lainnya.

Perbandingan Alternatif Konverter Warna

ColorHexa

alat peramban

Kompetitor lama dengan halaman informasi per-warna yang dalam — menghasilkan halaman SEO penuh per hex dengan konversi, palet, harmonies, dan gradien. UI tertanggal (estetika awal-2010-an), tanpa dukungan OKLCH, tanpa kontras APCA, tanpa penanganan gamut-luas. Kuat untuk penemuan SEO warna tertentu ("#FF5733" sebagai query pencarian); lebih lemah untuk pekerjaan desain aktif di mana UX bidang-bersatu penting.

RapidTables

alat peramban

Pilihan luas konverter satu-arah (HEX ke RGB, RGB ke HEX, HEX ke HSL, dll.) ditambah alat unit lainnya. Setiap konversi adalah halaman terpisah dengan formulir satu-arah — tanpa pengalaman bidang-bersatu langsung. Tanpa dukungan OKLCH, tanpa peringatan gamut, tanpa pemeriksaan kontras. Berguna untuk konversi cepat satu kali ketika Anda tiba dari pencarian Google; alat ini lebih cepat untuk alur kerja apa pun dengan lebih dari satu konversi.

HTMLColorCodes

alat peramban

Pemilih warna dan generator palet yang kuat dengan UI bersih. UX pemilih bagus untuk eksplorasi visual. Sisi konverter dasar — HEX, RGB, HSL, HSV, CMYK saja; tanpa OKLCH, tanpa OKLAB, tanpa deteksi gamut. Terbaik ketika Anda perlu mengeksplorasi variasi warna secara visual; alat ini menang ketika Anda membutuhkan ruang warna modern atau matematika konversi yang presisi.

OKLCH.com

alat peramban

Alat fokus-OKLCH yang dibangun indah oleh Andrey Sitnik (penulis polyfill postcss-oklab-function). Terbaik-di-kelasnya untuk eksplorasi khusus-OKLCH dengan pemilih sadar-gamut-luas dan generasi palet. Tidak mencakup konversi HEX/RGB/HSL/CMYK sebagai output utama — fokus pada OKLCH saja. Jangkau OKLCH.com ketika Anda melakukan pekerjaan desain OKLCH murni; jangkau alat ini ketika Anda membutuhkan konversi lintas-ruang.

ConvertingColors

alat peramban

Mencakup banyak ruang warna (HEX, RGB, HSL, HSV, CMYK, XYZ, CIELAB, dan beberapa lagi) dengan model halaman-konten-SEO per warna yang serupa dengan ColorHexa. Tidak memiliki dukungan OKLCH modern, tanpa kontras APCA, tanpa penanganan gamut-luas, dan halaman konten yang dihasilkan otomatis terasa seperti pertanian konten. Bagus untuk menggali metadata warna individu; alat ini lebih cepat untuk pekerjaan desain dan aksesibilitas aktif.

IT-Tools

alat peramban open-source

Koleksi alat dev Vue 3 yang dapat di-self-host bersih, dengan konverter warna di antara banyak utilitas lainnya. UX konsisten di seluruh suite. Konverter warna mencakup HEX, RGB, HSL, HSV, CMYK; tanpa OKLCH, tanpa peringatan gamut, tanpa pemeriksaan kontras, tanpa simulasi buta warna. Layak dijalankan secara lokal jika Anda menginginkan koleksi multi-alat yang di-self-host; alat ini adalah opsi khusus-warna yang lebih dalam.

W3Schools Color Converter

alat peramban

Toggle HEX/RGB/HSL dasar pada halaman ramah-pemula, di mana-mana dalam hasil pencarian untuk query konverter-warna. Tanpa OKLCH, tanpa fitur lanjutan. Berguna sebagai referensi pengajaran di samping konten penjelas W3Schools. Alat ini menang di setiap sumbu lainnya: lebih banyak ruang, matematika perseptual, fitur gamut + kontras + CVD, ekspor kode Tailwind v4 / SwiftUI / Compose / Flutter modern.

Contoh Konversi Warna

Warna brand Tailwind v4 → OKLCH

#3b82f6

Output OKLCH: `oklch(0.629 0.193 263.4)`. Tempelkan langsung ke blok `@theme` Tailwind v4 sebagai `--color-brand-500: oklch(0.629 0.193 263.4);` dan ramp Anda berikutnya berjajar secara perseptual. Tailwind v4 menstandardisasi OKLCH untuk palet defaultnya pada 2024 karena kanal L menjaga kecerahan perseptual konsisten lintas rona — green-500 dan blue-500 tampak sama terang, hal yang tidak dapat dijamin oleh ramp HSL/RGB. Hex dipertahankan apa adanya jika Anda juga membutuhkan fallback untuk peramban lama.

hex web → literal SwiftUI Color

#FF5733

Output SwiftUI (di bawah Salin sebagai kode → SwiftUI): `Color(red: 255/255, green: 87/255, blue: 51/255)`. Alur kerja iOS / macOS klasik: seorang desainer menjatuhkan hex ke panel brand Figma, Anda menempelnya di sini, dan menyalin literal SwiftUI ke sebuah `View`. Bentuk ekspresi (dengan pembagian `/255` eksplisit) disengaja — bentuk ini lebih tahan terhadap code review daripada `Color(red: 1.0, green: 0.341, blue: 0.2)` yang opaque karena hex brand asli masih terlihat di sumber.

Sampel warna palet desainer → aproksimasi CMYK untuk cetak

#FF6347

Output CMYK: kira-kira `cmyk(0%, 61%, 72%, 0%)`. Ini adalah konversi sRGB → CMYK yang naif menggunakan rumus standar `K = 1 − max(R,G,B); C = (1−R−K)/(1−K)` — berguna sebagai estimasi awal cepat untuk penawaran cetak, tetapi bukan pengganti konversi sungguhan. Percetakan akan menjalankan file melalui profil ICC (biasanya US Web Coated SWOP v2 atau Fogra39) yang disetel untuk press, tinta, dan kertas tertentu, yang dapat menggeser kanal sebesar 5-15%. Perlakukan angka ini sebagai pemeriksaan kewarasan, bukan deliverable.

Warna gamut luas OKLCH → fallback sRGB

oklch(0.7 0.25 30)

Baris gamut langsung menandai warna ini sebagai **di luar sRGB** (Display P3 mencakupnya, Rec2020 mencakupnya). Pada monitor standar warna ini di-render sebagai aproksimasi yang lebih pudar; pada layar yang mendukung P3 (sebagian besar laptop yang dikirim setelah 2017) warna ini di-render dengan saturasi penuh. Klik **Snap ke sRGB** untuk mengurangi chroma hingga warna pas di kubus sRGB, lalu salin hex yang dihasilkan (sekitar `#ef6b50`) sebagai fallback. Source-of-truth OKLCH memungkinkan Anda mempertahankan nilai gamut luas di token desain dan mengirimkan hex yang di-snap sebagai fallback `@supports not (color: oklch(...))`.

Verifikasi kontras WCAG untuk teks badan

#767676

Terhadap putih (`#ffffff`) rasio kontras WCAG 2.1 kembali sekitar **4,54:1** — tepat di atas ambang AA 4,5:1 untuk teks badan normal. Turunkan satu digit menjadi `#777777` dan rasio jatuh ke 4,48:1, yang gagal AA. Nilai APCA Lc dimunculkan berdampingan sebagai metrik berpandangan-ke-depan (draft WCAG 3) — APCA memberi skor pasangan ini sekitar `Lc 60`, sedikit di bawah `Lc 75` yang direkomendasikan APCA untuk teks badan. Gunakan keduanya: WCAG untuk lulus audit hari ini, APCA untuk memastikan hasilnya benar-benar terbaca.

Temukan nama warna CSS terdekat dengan hex brand

#FF6347

Bidang **Named** mengembalikan `tomato (exact)` karena spesifikasi CSS mendefinisikan `tomato` secara harfiah sebagai `#FF6347` — salah satu dari 148 nama warna yang dikirim bersama setiap peramban. Coba meleset-tipis seperti `#FF6348` dan bidang mengembalikan `tomato (nearest, ΔE 0.02)`, memberi tahu Anda nama warna terdekat dan seberapa jauh menggunakan CIE ΔE (Delta-E di ruang OKLAB). Berguna ketika Anda menulis salinan atau komentar dan menginginkan nama warna yang dapat dibaca manusia alih-alih kode hex.

Konversi nilai HSL lama ke OKLCH modern

hsl(220 70% 50%)

Output OKLCH: kira-kira `oklch(0.5 0.187 263)`. L=50% HSL **bukan** 50% secara perseptual — biru pada L=50% tampak jauh lebih gelap daripada kuning pada L=50% karena HSL adalah reshape silindris dari sRGB, bukan ruang warna yang seragam. L=0,5 OKLCH benar-benar sesuai dengan luminansi abu-abu tengah yang dipersepsikan mata Anda. Ketika Anda memigrasikan sistem desain HSL ke OKLCH, harapkan nilai L bergeser (biru naik, kuning turun) — itu adalah sistem yang mengoreksi dirinya sendiri, bukan bug.

Temukan palet 5 tint dan 5 shade dari warna brand

#3b82f6

Bagian **Tints / Shades / Tones / Harmonies** menghasilkan 5 varian lebih terang dan 5 lebih gelap dengan menstep kanal L OKLCH dalam kenaikan yang sama sambil menahan C dan H tetap. Hasilnya adalah ramp yang merata secara perseptual — selisih antara `500` dan `600` tampak sama dengan selisih antara `600` dan `700`, yang dibutuhkan oleh sistem desain. Klik sampel warna mana pun untuk memuatnya sebagai warna aktif, lalu salin hex/OKLCH-nya. Konstruksi yang sama dengan generator palet default Tailwind v4.

Cara Menggunakan Konverter Warna

  1. 1

    Tempel atau ketik warna apa pun dalam format apa pun

    Setiap satu dari 9 bidang format (HEX, RGB, HSL, HSV, HWB, CMYK, OKLCH, OKLAB, Named) dapat diedit langsung — tidak ada tombol "Konversi" untuk diklik. Tempel hex dari Figma, ketik nilai `oklch()` dari config Tailwind, jatuhkan `hsl()` dari stylesheet lama, atau bahkan ketik nama warna CSS seperti `tomato`. Alat ini mengurai secara inkremental saat Anda mengetik, sehingga nilai yang setengah-diketik tidak akan menghancurkan yang lain hingga Anda mengomit format yang valid. Input yang tidak valid mendapat error inline yang tenang; input yang valid memperbarui seluruh grid.

  2. 2

    Semua 9 format diperbarui secara instan

    Source-of-truth internal adalah OKLCH (seragam perseptual, tidak terbatas-gamut), dan setiap format lainnya diturunkan darinya pada setiap penekanan tombol. Bidang yang sedang Anda ketik mempertahankan posisi kursornya tidak tersentuh — hanya *delapan* bidang lainnya yang di-render ulang. Ini berarti Anda dapat mengedit kanal L OKLCH secara langsung dan menyaksikan hex, RGB, HSL, dan CMYK semua bergeser secara waktu nyata tanpa kehilangan kursor Anda. Matematika konversi berjalan sepenuhnya di JavaScript menggunakan primitif OKLAB yang sama yang dikirim di peramban modern.

  3. 3

    Gunakan pemilih untuk eksplorasi visual

    Di bawah grid format adalah kotak saturasi-lightness (seret di mana saja untuk mengatur S+L untuk rona saat ini), slider rona (seret untuk berputar di sekitar roda warna), dan slider alpha (seret untuk mengatur transparansi). Pada peramban berbasis Chromium (Chrome, Edge, Brave) tombol **Eyedropper** mengaktifkan `EyeDropper` API native — klik di mana saja di layar, termasuk di luar jendela peramban, untuk mengambil sampel warna piksel itu. Safari dan Firefox belum mengirim API, sehingga tombolnya disembunyikan di peramban itu dan kotak SL + slider rona tetap menjadi pemilih utama.

  4. 4

    Periksa gamut dan kontras dalam sekilas

    Tiga lencana gamut (**sRGB**, **Display P3**, **Rec2020**) menunjukkan apakah warna saat ini berada di dalam rentang yang dapat direproduksi setiap ruang — berguna ketika Anda bekerja di OKLCH dan ingin tahu layar mana yang akan merender nilai secara akurat. Baris kontras menunjukkan rasio WCAG 2.1 terhadap putih dan hitam, ditambah skor APCA Lc (metrik WCAG 3 berpandangan-ke-depan). Lencana lulus / gagal (AA, AAA) muncul inline. Jika warna di luar gamut sRGB, tombol **Snap ke sRGB** mengecilkan chroma hingga pas.

  5. 5

    Salin dalam sintaks native platform Anda

    Setiap dari 9 bidang format memiliki tombol **Salin** sendiri — satu klik, nilai mendarat di clipboard Anda, label sebentar beralih ke "Disalin!" sehingga Anda tahu. Di bawah pemilih, bagian **Salin sebagai kode** menghasilkan snippet siap-tempel untuk lima platform: properti kustom CSS, token `@theme` Tailwind v4, literal SwiftUI `Color(red:green:blue:)`, konstanta Jetpack Compose `Color(0xFF...)`, dan Flutter `Color(0xFF...)`. Hash URL (`#hex=...` atau `#oklch=...`) juga diperbarui sehingga Anda dapat membagikan tautan langsung ke warna yang persis.

Kesalahan Konversi Warna yang Umum

Bingung HSL dengan OKLCH

Kedua ruang berbagi bentuk silindris Hue / Lightness / (Saturation atau Chroma) yang sama, yang membuat mereka tampak dapat dipertukarkan di atas kertas. Tidak. L HSL bersifat geometris — diturunkan dari RGB dengan merata-ratakan nilai kanal maks dan min — dan menanamkan kurva gamma sRGB. L OKLCH bersifat perseptual, berlabuh pada model OKLAB. Ramp HSL pada L seragam tampak tidak rata secara terlihat di seluruh rona; ramp OKLCH pada L seragam tetap merata. Jangan menggantikan satu untuk yang lain dalam migrasi sistem desain tanpa penyetelan ulang.

✗ Salah
Asumsikan palet HSL seragam secara perseptual:
hsl(220 50% 30%) → hsl(220 50% 60%) → hsl(220 50% 90%)
Di layar ini tampak berjarak tidak rata.
✓ Benar
Gunakan OKLCH untuk ramp seragam-perseptual:
oklch(0.30 0.10 220) → oklch(0.60 0.10 220) → oklch(0.90 0.10 220)
Di layar ini tampak berjarak rata.

Mempercayai CMYK Naif untuk Cetak

Output CMYK di sini berasal dari rumus buku teks standar `K = 1 - max(R,G,B)` yang diterapkan pada sRGB. Itu adalah perkiraan yang berguna tetapi bukan pengganti konversi yang sungguhan. Percetakan menjalankan file melalui profil ICC (US Web Coated SWOP v2, Fogra39, Japan Color 2011, dll.) yang disetel untuk press, tinta, dan kertas tertentu. CMYK ber-ICC dapat berbeda dari rumus naif sebesar 5-15% per kanal. Kirim hex sRGB asli ke percetakan dan biarkan mereka melakukan konversi yang tepat.

✗ Salah
Kirim output CMYK kami langsung ke press:
hex #FF6347 → cmyk(0%, 61%, 72%, 0%)
Hasil cetak mungkin terlihat keruh atau terlalu jenuh.
✓ Benar
Kirim hex asli ke penyedia cetak:
hex #FF6347 → biarkan percetakan ICC-konversi terhadap press mereka
Hasil cetak cocok dengan warna layar jauh lebih dekat.

Membaca APCA Lc sebagai Angka Kompatibel-WCAG-2

APCA Lc dan rasio WCAG 2 adalah skala berbeda yang mengukur hal berbeda. WCAG 2 memberikan rasio dari 1:1 (tanpa kontras) hingga 21:1 (kontras maks), dengan 4,5:1 lantai AA legal untuk teks badan. APCA memberikan Lc dari 0 hingga ±108 dengan tanda yang menunjukkan polaritas (positif untuk teks gelap di latar belakang terang, negatif untuk teks terang di latar belakang gelap). Lc 60 tidak memetakan ke WCAG 4,5:1; hubungannya non-linear dan bergantung-arah. Gunakan kedua metrik, berdampingan, bukan satu sebagai terjemahan dari yang lain.

✗ Salah
Pura-pura Lc 60 = WCAG 4.5:1:
APCA Lc 60 → "ini lulus AA"
Rasio WCAG 2 untuk pasangan yang sama mungkin 3.8:1 (gagal AA).
✓ Benar
Periksa kedua metrik secara independen:
Rasio WCAG 2 ≥ 4.5:1 untuk kepatuhan teks badan AA, DAN
APCA |Lc| ≥ 75 untuk keterbacaan dunia-nyata.
Keduanya harus lulus, bukan satu menggantikan yang lain.

Menggunakan HSL untuk Shade Sistem-Desain

Menghasilkan ramp 50/100/200/.../900 dengan menstep kanal L HSL menghasilkan ramp yang tidak rata secara visual karena L HSL tidak perseptual. Stop gelap tampak terlalu gelap, stop terang tampak terlalu terang, dan stop tengah mengompresi. Desainer memperbaikinya dengan menyetel-tangan setiap stop, latihan multi-jam per warna brand. OKLCH memecahkan masalah dengan konstruksi — langkah L yang sama tampak sama — sehingga ramp merata pada percobaan pertama.

✗ Salah
Step L HSL untuk shade:
hsl(220 50% 30%) / hsl(220 50% 60%) / hsl(220 50% 90%)
90% tampak pudar; 30% tampak jauh lebih gelap daripada selisih ke 60%.
✓ Benar
Step L OKLCH untuk shade:
oklch(0.30 0.10 220) / oklch(0.60 0.10 220) / oklch(0.90 0.10 220)
Setiap langkah tampak seperti selisih visual yang sama.

Lupa Alpha Saat Menyalin HEX

Hex 8 digit (`#RRGGBBAA`) dan singkatan 4 digit (`#RGBA`) mengkodekan transparansi alpha di pasangan terakhir. CSS mendukung keduanya; parser yang lebih lama (termasuk beberapa preprosesor CSS warisan dan alat desain pra-2018) hanya memahami hex 6 digit dan secara diam-diam memotong alpha. Hasilnya: warna yang Anda harapkan 50% transparan di-render sebagai sepenuhnya opak. Selalu verifikasi sintaks target menerima hex 8 digit sebelum menyalin nilai yang membawa-alpha; untuk target warisan, kembali ke `rgba()`.

✗ Salah
Salin hex 8 digit ke parser warisan:
#FF573380 → parser memotong → #FF5733 (tanpa alpha)
Transparansi 50% diam-diam hilang.
✓ Benar
Verifikasi target mendukung hex 8 digit, atau gunakan rgba():
untuk CSS modern: #FF573380 (hex 8 digit)
untuk dukungan warisan: rgba(255, 87, 51, 0.5) (selalu didukung)
Sintaks alpha eksplisit menghindari pemotongan diam-diam.

Snap ke sRGB Tanpa Mempertimbangkan Display P3

Snap ke sRGB adalah jaring pengaman yang berguna untuk konteks warisan, tetapi menerapkannya tanpa pandang bulu mengalahkan layar gamut-luas yang mungkin Anda desain. Sebagian besar perangkat Apple dari 2017 dan seterusnya merender Display P3 secara native; banyak perangkat Android modern dan layar laptop juga. Warna OKLCH gamut-luas yang melampaui sRGB tetapi muat di P3 tampak terasa lebih jenuh pada perangkat keras P3 daripada aproksimasi sRGB yang di-snap. Periksa lencana gamut P3 terlebih dahulu; hanya snap saat menargetkan konteks warisan sRGB-saja.

✗ Salah
Snap setiap warna OKLCH ke sRGB secara default:
oklch(0.7 0.25 30) → snap → oklch(0.7 0.18 30)
Layar P3 kehilangan saturasi 30%+ tanpa alasan.
✓ Benar
Periksa lencana Display P3 terlebih dahulu:
jika muat-P3: pertahankan nilai gamut-luas, tambahkan fallback sRGB melalui @supports
jika melampaui P3: lalu snap ke sRGB
Biarkan perangkat keras gamut-luas melakukan pekerjaannya.

Siapa yang Menggunakan Alat Ini

Developer Frontend Bermigrasi ke Token OKLCH Tailwind v4
Tailwind v4 menstandardisasi OKLCH untuk palet defaultnya pada 2024. Memigrasikan sistem desain lama berbasis-HSL atau berbasis-hex berarti mengonversi ratusan warna brand ke OKLCH. Tempel setiap hex, salin output OKLCH, jatuhkan ke blok `@theme`. Lencana gamut langsung menandai warna apa pun yang melampaui sRGB sehingga Anda dapat memutuskan apakah akan mempertahankan nilai gamut-lebih-lebar untuk layar Display P3.
Desainer Menerjemahkan Warna Figma ke iOS / Android
Figma mengekspor hex secara default, tetapi iOS menginginkan literal SwiftUI `Color(red:green:blue:)` dan Android menginginkan konstanta Jetpack Compose `Color(0xFF...)`. Tempel hex Figma sekali, salin snippet SwiftUI untuk insinyur iOS dan snippet Compose untuk insinyur Android — keduanya sudah dalam sintaks yang persis diharapkan setiap platform, dengan hex asli dipertahankan dalam komentar untuk keterlacakan.
Desainer Menyiapkan Proof Cetak (Aproksimasi CMYK)
Ketika warna brand harus muncul di kartu nama yang dicetak, aproksimasi CMYK memberikan estimasi cepat untuk dibagikan dengan percetakan sebelum konversi ICC yang tepat. Tempel hex brand, salin persentase CMYK, kirim ke percetakan untuk penawaran harga cepat — lalu serahkan kepada konversi sadar-profil-ICC milik percetakan untuk pencocokan warna akhir terhadap press tertentu.
Insinyur Aksesibilitas Memverifikasi WCAG dan APCA
WCAG 2.1 adalah standar regulasi (ADA, EAA, Section 508) hari ini; APCA Lc adalah penerus WCAG 3 yang diusulkan. Kedua metrik ditampilkan berdampingan berarti seorang desainer dapat memverifikasi warna teks-badan mencapai 4,5:1 WCAG terhadap putih, lalu memeriksa-kewarasan bahwa ia juga melewati APCA Lc 75, dalam satu layar — tanpa berpindah antara dua kalkulator terpisah.
Pendidik Mengajarkan Konsep Ruang-Warna
Tampilan sembilan-bidang yang bersamaan membuat hubungan ruang-warna terlihat. Ketik nilai OKLCH, saksikan HSL melayang karena L berarti hal yang berbeda di setiap ruang. Seret slider rona dan saksikan hex, RGB, dan CMYK semua diperbarui. Tunjukkan lencana gamut berubah merah saat Anda mendorong chroma melewati sRGB. Alat ini adalah demo kelas-nya sendiri untuk kursus grafis tingkat-kuliah atau HCI.
Manajer Brand Menemukan Nama Warna CSS Terdekat
Ketika salinan pemasaran mengatakan "aksen berwarna tomato" tetapi hex brand sebenarnya adalah `#FF6347`, bidang Named mengembalikan `tomato (exact)` karena itu adalah hal yang persis diselesaikan `tomato` di spesifikasi CSS. Untuk hex yang nyaris-meleset, bidang mengembalikan nama warna terdekat dengan jarak ΔE di OKLAB — berguna untuk dokumentasi, prosa, dan penamaan warna kasual.
Web Dev Mengonversi Palet HEX Warisan ke OKLCH
Situs yang lebih tua mungkin memiliki palet brand 50-warna yang didefinisikan dalam properti kustom CSS sebagai kode hex. Memodernisasi ke OKLCH memungkinkan tim brand mengekspresikan ramp yang sama dalam ruang yang seragam-perseptual. Tempel setiap hex, salin output OKLCH, tukar ke definisi variabel. Panel Tints/Shades di bawah memverifikasi ramp yang dihasilkan merata secara visual sebelum mengirim.
Pemelihara Open-Source Mendokumentasikan Token Desain
Dokumentasi token desain biasanya perlu menunjukkan warna yang sama dalam beberapa sintaks — hex untuk blok kode CSS, OKLCH untuk tabel spesifikasi, nama warna untuk menyebutkan dalam prosa. Tampilan bidang-bersamaan memungkinkan seorang pemelihara menyalin masing-masing dalam satu kali jalan alih-alih menjalankan tiga konversi terpisah. Hash URL yang dapat dibagikan juga memungkinkan kontributor menautkan ke warna yang persis sedang dibahas dalam isu GitHub.

Matematika & Algoritma Konversi Warna

OKLCH sebagai Source-of-Truth Internal
Alat menahan nilai warna kanonik sebagai triple OKLCH secara internal. Setiap bidang yang dapat diedit menurunkan nilai tampilannya dari triple itu pada setiap penekanan tombol; setiap edit pengguna memperbarui triple terlebih dahulu, lalu memicu render ulang dari delapan bidang lainnya. Ini menghilangkan pergeseran float per-langkah yang menyusahkan konverter yang menggunakan HSL atau sRGB sebagai pivot. Pilihan OKLCH di atas OKLAB disengaja — bentuk polar mempertahankan Hue sebagai sumbu yang stabil, sehingga menyeret slider rona tidak secara tidak sengaja melintasi-fade melalui abu-abu. Per makalah 2020 Björn Ottosson, keseragaman perseptual OKLAB adalah argumen terkuat untuk memperlakukannya sebagai lingua franca matematika warna modern.
Sumber Matriks (W3C CSS Color 4 + Ottosson 2020)
Setiap matriks konversi dalam basis kode dikutip ke sumber primernya. Fungsi gamma piecewise sRGB ↔ linear-sRGB adalah W3C CSS Color 4 §11.2 (`v <= 0.04045 ? v/12.92 : ((v+0.055)/1.055)^2.4`). Matriks 3×3 linear-sRGB ↔ CIE XYZ D65 adalah CSS Color 4 §15.1. Matriks XYZ D65 ↔ LMS dan langkah akar-kubik OKLAB berasal dari implementasi referensi `https://bottosson.github.io/posts/oklab/` Ottosson, persis seperti yang dipublikasikan. Tidak ada matriks yang dihitung ulang atau diturunkan ulang — menyalinnya apa adanya menjaga output identik dengan vektor referensi spesifikasi.
Rumus CMYK Naif dan Peringatan ICC
Output CMYK kami menggunakan rumus buku teks standar: `K = 1 - max(R, G, B); C = (1-R-K)/(1-K); M = (1-G-K)/(1-K); Y = (1-B-K)/(1-K)` yang beroperasi pada nilai sRGB yang dinormalkan. Ini adalah aproksimasi yang disengaja. Akurasi cetak sungguhan memerlukan konversi profil ICC terhadap press tertentu, tinta (mis. US Web Coated SWOP v2, Fogra39, Japan Color 2011), dan kertas, yang dapat menggeser kanal sebesar 5-15%. Kami memunculkan bidang CMYK dengan penafian yang terlihat sehingga pengguna tidak mengirim nilai kami langsung ke press. Perlakukan output sebagai pemeriksaan kewarasan untuk penawaran, bukan deliverable.
Deteksi Gamut melalui Pemeriksaan Rentang-Kanal
Sebuah warna dianggap di-gamut untuk ruang target (sRGB, Display P3, Rec2020) jika setiap kanal berada di dalam `[-ε, 1 + ε]` setelah konversi ke primer ruang itu, di mana `ε = 1e-7` untuk menyerap noise presisi float di sekitar batas. Lencana gamut untuk setiap ruang berubah merah ketika kanal mana pun melampaui rentang. Ini menangkap kasus umum — warna OKLCH gamut-luas seperti `oklch(0.7 0.4 30)` melaporkan di-luar-sRGB tetapi di-P3, memberi tahu Anda layar mana yang akan merendernya secara akurat. Pemeriksaan berjalan pada setiap penekanan tombol.
Algoritma Snap Reduksi-Chroma
Snap ke sRGB menggunakan pencarian biner pada sumbu Chroma: tahan L dan H tetap pada nilai saat ini, cari C ∈ [0, currentC] untuk C terbesar yang konversi sRGB-nya tetap di-gamut. Pencarian berjalan paling banyak 30 iterasi (presisi ~10⁻⁹), yang lebih dari cukup untuk akurasi visual. Ini cocok dengan algoritma pemetaan-gamut informatif yang dijelaskan di CSS Color 4 §13 — mempertahankan lightness dan rona sementara mengurangi hanya chroma menjaga warna yang di-snap dikenali sebagai keluarga rona yang sama. Kami tidak meng-clip kanal RGB langsung karena itu mendistorsi rona secara mencolok (terutama di biru).
Matriks CVD Brettel + Machado
Simulasi buta warna menggunakan dua keluarga matriks yang dipublikasikan. Tiga dikromasi — protanopia, deuteranopia, tritanopia — menggunakan matriks Brettel-Viénot-Mollon 1997 yang beroperasi di RGB linear (decode gamma terlebih dahulu, terapkan matriks, encode gamma kembali). Tiga trikromasi anomalus — protanomaly, deuteranomaly, tritanomaly — menggunakan matriks Machado-Oliveira-Fernandes 2009 pada keparahan 0,66, yang sesuai dengan pasien trikromasi-anomalus tipikal. Achromatopsia dan achromatomaly parsial menggunakan bobot luminansi rec601 (`0.299R + 0.587G + 0.114B`) untuk proyeksi grayscale. Semua delapan simulasi di-render pada setiap perubahan warna.
WCAG 2 vs APCA: Mana Digunakan Kapan
WCAG 2.x (standar saat ini) menghitung rasio kontras simetris dari luminansi relatif: `(L1 + 0.05) / (L2 + 0.05)`, target 4,5:1 untuk teks badan normal dan 7:1 untuk AAA. Itu adalah lantai kepatuhan legal untuk audit aksesibilitas pada 2026. APCA (Accessible Perceptual Contrast Algorithm) adalah penerus WCAG 3 yang diusulkan — peka-polaritas (terang-di-gelap memberi skor berbeda dari gelap-di-terang), lebih berkorelasi dengan keterbacaan yang dipersepsikan manusia, target `|Lc| ≥ 75` untuk teks badan. Kedua metrik ditampilkan dalam satu baris memungkinkan desainer mencapai WCAG 2 untuk kepatuhan dan APCA untuk keterbacaan dunia-nyata tanpa berpindah antara dua kalkulator terpisah.

Praktik Terbaik untuk Konversi Warna

Lebih Pilih OKLCH untuk Token Sistem-Desain; HEX untuk Warisan
Untuk setiap sistem desain baru yang dikirim pada 2025 atau setelahnya, definisikan warna brand dan ramp palet di OKLCH. Sumbu L memberikan ramp yang merata secara perseptual otomatis; sumbu Chroma dapat mengalamatkan warna gamut-luas yang tidak dapat dikodekan hex. Pertahankan fallback hex untuk peramban yang lebih lama melalui `@supports not (color: oklch(0 0 0))` atau PostCSS saat-build, tetapi jadikan OKLCH nilai kanonik di toko token Anda. Sistem warisan dengan ribuan variabel hex yang ada dapat tetap hex hingga migrasi yang direncanakan — jangan berpaling untuk kepentingannya sendiri.
Perlakukan Output CMYK sebagai Aproksimasi, Konfirmasi dengan Penyedia Cetak
Angka CMYK yang dimunculkan alat ini adalah rumus naif berbasis-sRGB, bukan konversi profil-ICC. Gunakan untuk penawaran perkiraan dan komp internal. Sebelum run cetak nyata, kirim hex asli (bukan aproksimasi CMYK) ke penyedia cetak dan biarkan mereka menjalankan konversi ICC mereka sendiri terhadap press, tinta, dan kertas tertentu. Pergeseran kanal 5-15% dari konversi yang tepat dengan mudah dapat mengubah merah tajam menjadi oranye keruh jika aproksimasi dikirim langsung.
Gunakan APCA Lc untuk Aksesibilitas Berpandangan-ke-Depan
WCAG 2.x akan terus menjadi lantai regulasi selama beberapa tahun lagi, tetapi APCA adalah arah yang dituju standar. Untuk desain baru, capai `|Lc| ≥ 75` untuk teks badan dan `|Lc| ≥ 60` untuk teks besar di samping lantai WCAG 2.1. APCA menangkap masalah keterbacaan yang dilewatkan rasio simetris WCAG 2 — khususnya teks goresan-tipis pada latar belakang terang, di mana rasio WCAG terlihat baik tetapi teks sebenarnya menghilang pada jarak baca normal.
Jalankan Warna Gamut-Luas Melalui Pemeriksaan Gamut Display P3
Jika Anda menargetkan perangkat keras Apple modern (iPhone, iPad, MacBook dari 2017+) atau mengirim konten sadar-HDR, definisikan warna brand di OKLCH dan gunakan lencana Display P3 untuk memverifikasi bahwa mereka muat di P3 bahkan jika mereka melampaui sRGB. Warna gamut-lebih-lebar tampak terasa lebih jenuh pada layar P3 dan menurun dengan elegan melalui kompresi chroma yang diterapkan peramban pada layar sRGB-saja. Jangan pra-snap ke sRGB kecuali Anda tahu seluruh audiens Anda berada pada layar warisan.
Pilih Shade Seragam Perseptual melalui Tones OKLCH
Saat menghasilkan ramp 50/100/200/.../900 untuk warna brand, gunakan panel Tones: ia menstep L dalam kenaikan yang sama sambil menahan C dan H tetap. Hasilnya adalah ramp yang merata secara perseptual di mana selisih visual antara 400 dan 500 tampak identik dengan selisih antara 500 dan 600. Penyetelan-tangan ramp HSL untuk perataan yang sama adalah latihan multi-jam per warna; OKLCH memberikannya secara gratis.
Gunakan Eyedropper dengan Hemat untuk Pencocokan Warna Lintas-Tab
EyeDropper API (hanya-Chromium pada 2026) memungkinkan Anda mengklik di mana saja di layar — termasuk di luar peramban — untuk mengambil sampel warna piksel itu. Berguna untuk mencocokkan warna dari screenshot, bingkai video, atau UI aplikasi lain. Perlakukan hasil sebagai titik awal, bukan nilai akhir — render layar menerapkan manajemen warna yang mungkin berbeda dari file sumber. Untuk warna brand kanonik, selalu dapatkan hex dari sumber desain (Figma, Sketch, PDF panduan brand) alih-alih eyedroppering screenshot.
Bookmark URL dengan `#hex=...` untuk Keputusan Palet yang Dapat Dibagikan
Warna saat ini dikodekan ke hash URL sebagai `#hex=...` atau `#oklch=...` secara otomatis. Salin URL, tempel ke thread Slack atau isu GitHub, dan siapa pun yang membukanya mendarat pada warna yang persis sama. Berguna untuk thread tinjauan desain di mana "biru brand" perlu berarti satu triple OKLCH tertentu. Hash diperbarui pada setiap perubahan, sehingga URL di address bar Anda selalu adalah warna saat ini yang langsung — bookmark untuk kembali ke palet tertentu nanti.

Pertanyaan yang Sering Diajukan

Bagaimana cara mengonversi kode hex ke RGB?
Pecah hex 6 digit menjadi tiga pasangan 2 digit, lalu baca setiap pasangan sebagai angka basis-16 dari 0-255. `#FF5733` menjadi R=`FF`=255, G=`57`=87, B=`33`=51, menghasilkan `rgb(255, 87, 51)`. Singkatan 3 digit (`#F73`) berkembang dengan menggandakan setiap digit: `#F73` → `#FF7733`. Alat ini melakukan konversi langsung saat Anda mengetik — tempel hex apa pun (dengan atau tanpa `#`, 3 digit atau 6 digit, 4 digit atau 8 digit dengan alpha) dan bidang RGB diperbarui secara instan.
Apakah hex sama dengan RGB?
Keduanya mengkodekan informasi yang sama dalam notasi yang berbeda. Keduanya menggambarkan warna sebagai tiga kanal (merah, hijau, biru) pada skala 0-255, berlabuh di ruang warna sRGB. Hex mengemas tiga kanal ke dalam string basis-16 6 karakter (`#FF5733`); fungsi `rgb()` mengeja keduanya dalam desimal (`rgb(255, 87, 51)`). Keduanya round-trip tanpa kehilangan informasi. Perbedaannya bersifat praktis: hex lebih pendek dan muat dengan nyaman di variabel CSS, `rgb()` menerima kanal alpha terpisah melalui `rgba()` dan mendukung sintaks persentase CSS Color 4.
Bagaimana cara membaca kode warna hex?
Warna hex memiliki 6 digit heksadesimal setelah `#`, dikelompokkan sebagai **RR GG BB**. Setiap pasangan mengkodekan satu kanal dari `00` (nihil) hingga `FF` (penuh, 255 dalam desimal). `#FF0000` adalah merah murni, `#00FF00` adalah hijau murni, `#0000FF` adalah biru murni. Hex 8 digit (`#FF5733CC`) menambahkan pasangan alpha di akhir — `CC` = 204/255 ≈ 80% opasitas. Singkatan 3 digit (`#F73`) memperluas setiap digit dengan menggandakannya: `#F73` identik dengan `#FF7733`.
Apa rumus hex ke RGB?
Untuk setiap pasangan hex 2 digit, kalikan digit pertama dengan 16 dan tambahkan digit kedua: `FF` = 15×16 + 15 = 255, `57` = 5×16 + 7 = 87, `33` = 3×16 + 3 = 51. Di JavaScript: `parseInt('FF', 16)` mengembalikan 255. Di CSS arah sebaliknya sudah dibangun ke dalam parser — `rgb(255 87 51)` dan `#FF5733` dapat dipertukarkan di mana pun `` diterima. Tidak ada kehilangan pembulatan: 16² = 256, persis cocok dengan rentang byte 0-255 yang ditempati setiap kanal.
Mengapa menggunakan hex alih-alih RGB?
Tiga alasan: lebih pendek (`#FF5733` vs `rgb(255, 87, 51)`), itu adalah format yang diekspor secara default oleh setiap alat desain (Figma, Sketch, Photoshop), dan itu adalah format yang dipelajari mata Anda untuk dikenali seiring waktu — sebagian besar developer front-end dapat mengidentifikasi `#3b82f6` sebagai Tailwind blue-500 dalam sekali pandang. Gunakan `rgb()` (atau sintaks dipisah-spasi modern `rgb(R G B / A)` dari CSS Color 4) ketika Anda membutuhkan alpha, ketika Anda menghitung warna dari JavaScript, atau ketika Anda menginginkan sintaks persentase eksplisit untuk keterbacaan.
Bisakah kode hex memiliki alpha / transparansi?
Bisa — gunakan hex 8 digit (`#RRGGBBAA`) atau singkatan 4 digit (`#RGBA`). Pasangan alpha mengikuti skala 0-`FF` yang sama: `#FF573300` sepenuhnya transparan, `#FF5733FF` sepenuhnya opak, `#FF573380` sekitar 50%. Hex 4 digit CSS dengan alpha dirilis di semua peramban evergreen pada 2018. Safari, Chrome, Firefox, dan Edge semuanya mendukungnya. Jika Anda perlu menargetkan peramban yang sangat lama, kembali ke `rgba()` yang telah didukung sejak IE 9.
Berapa banyak warna yang dapat direpresentasikan hex?
Hex 6 digit merepresentasikan tepat **16.777.216** warna — 256 nilai per kanal dipangkatkan tiga (256³). Dengan hex 8 digit termasuk alpha, ruang yang dapat dialamatkan adalah 256⁴ ≈ 4,3 miliar, tetapi konten warna tetap 16,7 juta; dimensi tambahan adalah opasitas. Mata manusia dapat membedakan sekitar 10 juta warna, jadi sRGB 24-bit telah disebut "truecolor" sejak 1990-an. Layar gamut luas modern (Display P3, Rec2020) mencakup lebih banyak dari spektrum yang terlihat, tetapi hex sendiri terikat sRGB — gunakan OKLCH atau `color(display-p3 ...)` untuk mengalamatkan nilai gamut luas.
Apa itu warna OKLCH?
OKLCH adalah ruang warna yang seragam-perseptual yang diturunkan dari OKLAB dengan mengonversi sumbu chroma a/b ke koordinat polar. Kanal-kanalnya adalah **Lightness** (0-1), **Chroma** (0 hingga sekitar 0,4 tergantung pada rona), **Hue** (0-360°). Tidak seperti HSL, nilai L yang sama tampak sama terang di semua rona, sehingga ramp warna sistem desain tetap konsisten secara perseptual. CSS Color 4 menambahkan fungsi `oklch()` pada 2022; Chrome 111, Safari 15.4, dan Firefox 113 semuanya menyertakan dukungan native. Tailwind v4 dan shadcn menggunakan OKLCH untuk palet default mereka.
Apakah OKLCH lebih baik daripada HSL?
Untuk sistem desain, ya — dan perbedaannya terukur. L (lightness) HSL bersifat geometris, bukan perseptual: `hsl(60, 100%, 50%)` (kuning) tampak lebih terang secara terlihat daripada `hsl(240, 100%, 50%)` (biru) meskipun keduanya melaporkan L=50%. L OKLCH berlabuh pada model perseptual OKLAB dari Björn Ottosson (2020), sehingga L yang sama berarti kecerahan perseptual yang sama. Implikasi praktisnya: ramp OKLCH menghasilkan langkah-langkah yang merata secara visual otomatis; ramp HSL memerlukan penyetelan kecerahan per-rona manual agar terlihat benar.
Peramban apa yang mendukung oklch()?
Semua peramban evergreen pada pertengahan 2023: **Chrome/Edge 111** (Maret 2023), **Safari 15.4** (Maret 2022, yang paling awal), **Firefox 113** (Mei 2023). Cakupan caniuse gabungan lebih dari 94%. Untuk ekor panjang IE 11 / Safari lama yang tersisa, gunakan query `@supports (color: oklch(0 0 0))` untuk menyediakan fallback hex, atau gunakan alat saat-build seperti PostCSS `postcss-oklab-function` untuk menyisipkan aproksimasi sRGB di samping nilai OKLCH.
Mengapa menggunakan OKLCH di Tailwind v4?
Tailwind v4 memindahkan palet defaultnya dari generasi berbasis-HSL ke berbasis-OKLCH karena OKLCH memberikan ramp yang merata secara perseptual otomatis. Sampel warna `blue-500` dan `red-500` sekarang benar-benar tampak sama terang — di bawah sistem HSL v3 mereka tidak, yang memaksa desainer untuk menyetel-tangan setiap stop. OKLCH juga membuka gamut yang lebih lebar pada layar modern: token Tailwind v4 seperti `oklch(0.65 0.25 30)` dapat mengalamatkan merah Display P3 yang tidak dapat dijangkau kode hex mana pun. Build masih memancarkan fallback hex untuk peramban lama.
Apakah OKLCH seragam secara perseptual?
Ya — itu intinya. OKLCH mewarisi keseragaman perseptual dari OKLAB, ruang warna Björn Ottosson 2020 yang dirancang khusus untuk memperbaiki ketidakseragaman di CIELAB (ruang seragam-perseptual terbaik sebelumnya). Langkah tetap di kanal L sesuai dengan langkah kecerahan perseptual yang tetap. Langkah tetap di C sesuai dengan langkah chroma perseptual yang tetap. Inilah mengapa ramp OKLCH terlihat mulus — matematikanya cocok dengan penglihatan manusia. Aproksimasi CIELAB rusak di sekitar warna yang sangat jenuh; OKLAB/OKLCH tetap akurat di seluruh gamut.
Bagaimana cara membaca nilai OKLCH?
`oklch(L C H)` — tiga angka, opsional dengan `/ A` untuk alpha. **L** adalah Lightness dari 0 (hitam) hingga 1 (putih); ditulis sebagai angka atau persentase (`0.6` dan `60%` setara). **C** adalah Chroma dari 0 (abu-abu) hingga sekitar 0,4 untuk warna sRGB paling jenuh; tidak ada batas atas, warna gamut luas dapat melebihinya. **H** adalah Hue dalam derajat dari 0-360, sama seperti HSL (0/360 = merah, 120 = hijau, 240 = biru). Contoh: `oklch(0.629 0.193 263.4)` adalah blue-500 Tailwind.
Apa perbedaan antara gamut dan ruang warna?
**Ruang warna** adalah sistem koordinat yang memberikan setiap warna alamat unik — sRGB, Display P3, Rec2020, OKLCH semuanya adalah ruang warna. **Gamut** adalah subset warna terlihat yang dapat direproduksi oleh ruang tertentu (atau perangkat). sRGB dan Display P3 menggunakan sistem koordinat yang serupa tetapi P3 mencakup ~50% lebih banyak dari spektrum yang terlihat. OKLCH tidak terbatas — sistem koordinatnya dapat mengalamatkan warna apa pun, tetapi apakah layar Anda dapat menampilkannya tergantung pada gamut warna layar. Lencana gamut di alat ini memberi tahu Anda keluarga perangkat mana yang akan merender warna secara akurat.
Mengapa warna OKLCH saya di luar gamut sRGB?
OKLCH tidak terbatas-gamut — Anda dapat menulis `oklch(0.7 0.4 30)` dan itu warna yang valid, tetapi chroma-nya melampaui apa yang dapat dikodekan ruang byte 256-per-kanal sRGB. Pada monitor sRGB warna itu di-clip ke aproksimasi dalam-gamut terdekat (biasanya versi yang lebih pudar). Pada monitor Display P3 (kebanyakan laptop modern, iPhone, MacBook) warna itu di-render dengan benar. Klik **Snap ke sRGB** untuk mengurangi chroma hingga warna pas, lalu kirim hex yang di-snap sebagai fallback di samping OKLCH asli untuk layar gamut luas.
Haruskah saya menggunakan WCAG 2 atau APCA untuk kontras?
Gunakan **WCAG 2.1** hari ini — itu adalah standar regulasi (ADA, EAA, Section 508) dan apa yang diperiksa alat audit. Rasio 4,5:1 untuk teks badan dan 3:1 untuk teks besar adalah lantai legal. **APCA** (Accessible Perceptual Contrast Algorithm) adalah penerus WCAG 3 yang diusulkan, dirancang untuk lebih cocok dengan persepsi — APCA menimbang terang-di-gelap berbeda dari gelap-di-terang, yang rumus simetris WCAG 2 salah. APCA masih draf. Praktik terbaik: lulus WCAG 2 untuk memenuhi kepatuhan, lalu periksa-kewarasan dengan APCA (target `Lc 75`+ untuk teks badan) untuk memastikan hasilnya benar-benar terbaca.
Apa perbedaan antara HSV dan HWB?
Keduanya adalah reshape silindris dari RGB yang berbagi kanal Hue yang sama. **HSV** (Hue, Saturation, Value) diterbitkan oleh Smith pada 1978 — Saturation adalah kekayaan warna, Value adalah kecerahan. Merah murni adalah `hsv(0, 100%, 100%)`. **HWB** (Hue, Whiteness, Blackness) diterbitkan Smith lagi pada 1996 sebagai alternatif yang lebih intuitif untuk seniman — Anda memilih rona murni, lalu menambahkan putih untuk mencerahkan atau hitam untuk menggelapkan. CSS Color 4 menambahkan sintaks `hwb()`; ia dirilis di semua peramban evergreen. HWB lebih mudah diajarkan ("tambahkan putih") tetapi HSV tetap lebih umum di perangkat lunak grafis seperti Photoshop dan Figma.