Gerar cor aleatória com JavaScript
Neste artigo você vai aprender a gerar cor aleatória com JavaScript, com uma simples função e recursos nativos da linguagem
Pra gerar uma cor aleatória com JavaScript tu monta um código hexadecimal de 6 dígitos (#RRGGBB) e sorteia os caracteres com Math.random(). Dá pra fazer numa função com laço ou numa linha só:
const cor = ‘#’ + Math.floor(Math.random() * 16777215).toString(16).padStart(6, ‘0’)
O 16777215 é o 0xFFFFFF, o maior valor de uma cor hex de 3 bytes, e o padStart(6, ‘0’) garante os 6 dígitos pra cor nunca sair inválida. Cada vez que tu roda, sai uma cor nova

Fala programador(a), beleza? Bora aprender mais sobre como criar uma cor com JavaScript!
Vamos gerar uma função que nos retorna uma cor hexadecimal
Parar isso vamos listar todas as possibilidades de caracteres que são:
- Letras de A a F;
- Números de 0 a 9;
Depois, de forma aleatória, vamos atribuindo caracteres a uma string que será a nossa cor
Por fim retornamos esta string para o usuário
Veja um exemplo prático do que foi explicado acima:
function generateColor() {
const letters = '0123456789ABCDEF';
let color = '#';
for (let i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
console.log(generateColor()) // #8432EA
Veja que a função primeiramente lista os caracteres possíveis e depois vai atribuindo caracteres até o limite de 6 para a string
No fim nos é retornado uma cor, que exibimos na última linha deste código
A cada vez que a função for invocada é dada uma nova cor
Conclusão
No artigo de hoje você viu como gerar cor aleatória com JavaScript
Criamos uma função para isso, que monta uma string que representa uma cor em hexadecimal
Toda vez que a função é executada, uma nova cor é gerada
Confira nossos cursos gratuitos no Youtube, com vídeos todos os dias!
Se inscreva e ative o sininho para receber as notificações e aprender mais ainda sobre desenvolvimento web!
Veja também nosso catálogo de cursos na Udemy, todos com exercícios e projetos práticos, nas mais diversas tecnologias
O link acima contém um cupom de desconto para os cursos!
Bloco "Versão mais curta pra gerar cor hexadecimal:" mostrando a abordagem de um número só:
const cor = ‘#’ + Math.floor(Math.random() * 16777215).toString(16).padStart(6, ‘0’)
Explicando o porquê: em vez de sortear caractere por caractere, tu sorteia um único número entre 0 e 16777215 e converte pra hexadecimal com toString(16)
O 16777215 é o 0xFFFFFF, o maior valor de uma cor hex de 3 bytes (branco puro), então esse é o teto do sorteio
O padStart(6, ‘0’) no fim garante os 6 dígitos: o toString(16) omite zeros à esquerda e pode devolver menos de 6 caracteres, o que geraria uma cor inválida
Bloco "O que é uma cor aleatória?" definindo em duas linhas: é uma cor escolhida por sorteio, sem tu apontar qual
Na web ela vira um código de cor hexadecimal: um número hex de 6 dígitos (3 bytes) usado em HTML, CSS e SVG, no formato #RRGGBB
Gerar uma cor aleatória é sortear esses 6 dígitos e montar a string
Uma ressalva honesta: o Math.random() serve muito bem pra cor decorativa, mas ele não é criptograficamente seguro e não deve ser usado em contexto de segurança (senha, token, sorteio valendo dinheiro)
Pra esses casos existe a Web Crypto API com crypto.getRandomValues(), disponível em todos os navegadores desde julho de 2015
Pra pintar um elemento na tela, pode usar Math.random() sem medo
O núcleo dessa função é o mesmo Math.floor(Math.random() * n) que a gente já usou pra montar um gerador de número aleatório entre dois valores num vídeo da playlist de JavaScript
Rodando aquele no console várias vezes, o número sempre caía dentro do intervalo, sem estourar pra cima nem pra baixo
Aqui a lógica é idêntica, só que em vez de um intervalo livre a gente prende o sorteio nos 16 caracteres do hexadecimal, então cada chamada devolve uma cor nova e sempre válida
Se tu duvida, joga a função no console e chama umas dez vezes seguidas pra ver a aleatoriedade acontecendo
Perguntas frequentes
O que é uma cor aleatória?
É uma cor escolhida por sorteio, sem tu apontar qual vai ser. Na web ela vira um código hexadecimal de 6 dígitos (#RRGGBB), então gerar uma cor aleatória é sortear esses dígitos e montar a string
O que é um código de cor hexadecimal?
É um número hexadecimal de 6 dígitos (3 bytes) que representa a cor em HTML, CSS e SVG, no formato #RRGGBB. Cada dupla de dígitos controla vermelho, verde e azul
Como gerar uma cor hexadecimal aleatória em uma linha?
Sorteando um único número e convertendo pra hex:
‘#’ + Math.floor(Math.random() * 16777215).toString(16).padStart(6, ‘0’)
O 16777215 é o teto (0xFFFFFF) e o padStart(6, ‘0’) completa os dígitos que faltam
Por que usar padStart(6, ‘0’) na versão curta?
Porque o toString(16) omite os zeros à esquerda e pode devolver menos de 6 caracteres. Sem completar, a string sai com menos de 6 dígitos e vira uma cor inválida. O padStart(6, ‘0’) força os 6 dígitos sempre
Math.random() é seguro pra senha ou token?
Não. O Math.random() não é criptograficamente seguro e não deve ser usado em contexto de segurança. Pra isso existe a Web Crypto API com crypto.getRandomValues(), disponível em todos os navegadores desde julho de 2015. Pra cor decorativa, o Math.random() é adequado
Leia também
Blog | Mais populares
As diferenças de var, let e const
Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
muito bom! Me ajudou no meu projeto
function randomColor(){
let R = Math.floor(Math.random() * 255)
let G = Math.floor(Math.random() * 255)
let B = Math.floor(Math.random() * 255)
return
rgb(</span><span style="color: rgb(86, 156, 214);">${</span><span style="color: rgb(156, 220, 254);">R</span><span style="color: rgb(86, 156, 214);">}</span><span style="color: rgb(206, 145, 120);">, </span><span style="color: rgb(86, 156, 214);">${</span><span style="color: rgb(156, 220, 254);">G</span><span style="color: rgb(86, 156, 214);">}</span><span style="color: rgb(206, 145, 120);">, </span><span style="color: rgb(86, 156, 214);">${</span><span style="color: rgb(156, 220, 254);">B</span><span style="color: rgb(86, 156, 214);">}</span><span style="color: rgb(206, 145, 120);">)}
function corAleatoria() {
return ‘#’ + Math.floor(Math.random() * 0x1000000).toString(16).padStart(6, ‘0’);
}