Grow your CSS skills. Land your dream job.

Last updated on:

Random Hex Color

Technique #1

    $rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
    $color = '#'.$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)].$rand[rand(0,15)];

Then echo out the $color value anywhere you need it. For example:

<body style="background: <?php echo $color; ?>;">

Technique #2

<?php printf( "#%06X\n", mt_rand( 0, 0xFFFFFF )); ?>

There is also a JavaScript version.

Reference URL


  1. Simpler version:

    <php $color = sprintf(“#%06x”,rand(0,16777215)); ?>

    <body style="background: <php echo $color; ?>;”>

  2. Interestingly enough, I had to do this exact task just a few days ago. Here’s what I came up with:

    $color = str_pad(dechex(rand(0,16777215),6, "0", STR_PAD_LEFT);

  3. In technique #1 you can tweak with the code to get Red, Green and Blue shades out of the code. The all you have to play with is the value upto 15.

  4. TerryB
    Permalink to comment#

    Can I randomize hex colours from a preset list of colour hexes? If so then how?

    • purpletoad
      Permalink to comment#

      yes you can with #1, but your preset list must have some common number such as #axbxcx or #aabbxx

  5. purpletoad
    Permalink to comment#

    for the solution #1, you can actually contorl the random color where #2 cannot

  6. How about this one?

    $rand = dechex(rand(0x000000, 0xFFFFFF));
    echo('#' . $rand);

    You can change rand in for mt_rand if you want, and you can put strtoupper() around the dechex to make the random number look nicer (although it’s not required). That would look like $rand = strtoupper(dechex(rand(0x000000, 0xFFFFFF)));

    It works perfectly and is way simpler than all the other methods described here :)

    • Archigos

      I used the following line and refreshed my page many times (probably at least 30) and noticed that for it being ‘random’ it always seems to end in 00… I don’t think I had a single occurrence where it hasn’t yet.

      $rand = strtoupper(dechex(rand(0x000000, 0xFFFFFF)));

Leave a Comment

Posting Code

Markdown is supported in the comment area, so you can write inline code in backticks like `this` or multiline blocks of code in in triple backtick fences like ```this```. You don't need to escape code in backticks, Markdown does that for you.

Sadly, it's kind of broken. WordPress only accepts a subset of HTML in comments, which makes sense, because certainly some HTML can't be allowed, like <script> tags. But this stripping happens before the comment is processed by Markdown (via Jetpack). It seems to me that would be reversed, because after Markdown processes code in backticks, it's escaped, thus safe. If you think you can fix this issue, get in touch!

If you need to make sure the code (typically HTML) you post absolutely posts correctly, escape it and put it within <pre><code> tags.

Current ye@r *

*May or may not contain any actual "CSS" or "Tricks".