Updating the Windows Console Colors

In another blockbuster post, our Summer 2017 Intern, @craigaloewen unveils a subtle, but important improvement to the Console in Windows 10 build 16257. I know many of you have been asking for this! Over to you Craig ...

The Windows Console's colors are getting their first overhaul in more than 20 years! Hurray!

The default color values have been changed to improve legibility of darker colors on modern screens, and to give the Console a more modern look & feel.

For example, Windows Console's legacy blue is very difficult to read on a modern high-contrast displays ...

... and the improved blue is much more legible:

What might not be immediately apparent from the above screenshots is that we didn't just change the blue, we actually tweaked all of the colors!

Why Change the Entire Color Scheme?

During the past 20 years, screens & display technology, contrast ratio, and resolution have changed significantly, from CRT's through TFT LCD's to modern-day nano-scale 4K displays.

The legacy default scheme was not built for modern displays and does not render as well on newer high-contrast LCD displays. ThisΒ is particularly apparent with deeply saturated darker colors like blue.

The new default colors will modernize the look of the Windows Console and make it more congruent with other terminal experiences, such as the integrated terminal in VSCode.

Where Will I See these Changes?

If you clean-install a new build of Windows 10 >= 16257, you'll get the new colors as the default Console scheme.

If you upgraded to this new build of Windows, you will still see the original legacy colors, not the new defaults! This is because we do NOT want to overwrite any of your existing custom color settings. To better understand how color settings are stored, please read this blog post on Windows Console settings.

So how will you see the new color scheme if you have upgraded from a previous build? We've also released a ColorTool with which you can apply this and a selection of alternative color schemes to your Windows Console.

The New Default Scheme Details

Here is the legacy color scheme (top), and the new default scheme (below):

Additionally, the following table describes the color scheme change in terms of RGB values.

Color Name ConsoleΒ Legacy RGB Values New Default RGB Values
BLACK 0,0,0 12,12,12
DARK_BLUE 0,0,128 0,55,218
DARK_GREEN 0,128,0 19,161,14
DARK_CYAN 0,128,128 58,150,221
DARK_RED 128,0,0 197,15,31
DARK_MAGENTA 128,0,128 136,23,152
DARK_YELLOW 128,128,0 193,156,0
DARK_WHITE 192,192,192 204,204,204
BRIGHT_BLACK 128,128,128 118,118,118
BRIGHT_BLUE 0,0,255 59,120,255
BRIGHT_GREEN 0,255,0 22,198,12
BRIGHT_CYAN 0,255,255 97,214,214
BRIGHT_RED 255,0,0 231,72,86
BRIGHT_MAGENTA 255,0,255 180,0,158
BRIGHT_YELLOW 255,255,0 249,241,165
WHITE 255,255,255 242,242,242


Comments (82)

  1. Ivan says:

    If i may ask, when we’re gonna get tabs?

    1. You may ;). Nothing planned yet, but it is on our backlog. We’ve been spending all our resources thus far on overhauling the Console’s 30 year old innards, without which, we wouldn’t be able to add tabs anyhow!

      1. Raj Chaudhuri says:

        > “overhauling the Console’s 30 year old innards”
        This is the best news about Windows I have heard in years, especially in the two years that I have been without Windows. If I see uniscribe in the console, I will be VERY happy. Thank you, and keep up the good work.

      2. Joe says:

        Great work…keep it up!

      3. mark says:

        This is great, I love tabs. I use them in KDE konsole all the time.

        I personally do not think that I ultimately … really need them, because I can already use e. g. vte + mate-terminal to have tabs work (+xming or what was the name), but if this would be possible out-of-the-box as-is then of course I would not mind that at all! More options are always nice to have. And who knows, perhaps tabs will happen some time too, it should technically be not too hugely difficult, just a widget that arranges other sub-widgets possibly in different threads (but I really do not know what I am talking about here, the little GUI I know has been happening primarily through ruby-bindings to gtk/gnome; I understand that every toolkit and environment has different components, KDE uses settable slots and signals, windows-driven GUIs probably use some other mechanics).

  2. Martin Anderson says:

    I think the Dark Cyan is more towards the blue than the green, and I would have used a value like
    R: 58 G: 168 B: 203

    1. Not sure I agree … I think perhaps #3ba8ca is better, no? πŸ˜‰ You can change your default colors if you wish, plus we’re working on a little something to give you more control over your colors too! Stay tuned!

      1. Martin Anderson says:

        I hadn’t considered changing the colours in the pallette before for the Command Prompt, but I just changed them all to match the colours specified here (except for the Dark Cyan) so all we need now is a way to preserve changes between Windows Updates, and possibly a drop-down with various saved pallettes, for easy swapping πŸ™‚

        1. Daniel says:

          It’s pretty easy to write a command that uses SetConsoleScreenBufferInfoEx() to change the color palette (potentially on a per Windows basis). I use that so that each project can have its own color palette and it’s easy to see which window is working on what (the palette is loaded in environment setup script, although with the default color values). It would be nice if that were something that was built in Windows and configurable via a cmd.exe option.

  3. Peter says:

    Are these colors also going to apply to bash shells?

    1. Yes, for any apps that emit VT specifying color by palette index. If color is specified by RGB value, the requested color is emitted.

  4. SilverFox says:

    Will the color of DARK_MAGENTA be fixed in powershell?(It looks the same as the background now)

    1. Please file an issue on PowerShell

  5. Kevin says:

    I’m the guy from Reddit – cheers again! Looks like a great start down a very awesome path of development. Respect, and can’t wait to see what’s next.

  6. Tom Servo says:

    Is there Acrylic transparency planned at some point? You know, blurred transparency on the parts of the console window that is filled with the screen background color (excluding the window frame)?

    1. Fluent is possible, but not until we’ve overhauled the renderer, etc. Bear with us πŸ˜‰

      1. Martin Anderson says:

        Is there any thought being put into a UWP version of CMD? So with DPI font scaling, Direct Write, working for other platforms, nicer windowing, and of course Acrylic backgrounds?

        Or is it just keeping it Win32, but re-doing the Shell/UI?

        1. CBHacking says:

          A UWP shell wouldn’t make any sense at all, the sandboxing would make it totally useless (can’t view folders unless you open a folder picker to them, can’t launch programs without them inheriting the same restrictions, etc.). A UWP *terminal* that can run arbitrary shells (such as CMD/Powershell/bash/etc.) that aren’t sandboxed might be interesting, but realistically still probably wouldn’t be worth it (among other things, it would probably make launching a terminal much slower). Either way, it probably wouldn’t be practical to update such a core part of the OS (remember, the terminal hosts *every* command-line app, not just CMD and Powershell and bash) through the Store, so you’d still only get updates with OS patches.

          With that said, a terminal that could take advantage of some of the new UI features for UWP apps (such as scaling) would be nice. The improvements that are already being made are much appreciated.

          1. Not entirely true – there are different forms of UWP apps. We’re currently assessing several options re. modernizing Console itself.

            FWIW, ConHost doesn’t host command-line apps – it’s a separate process that communicates with attached command-line application via stdin/out routed via the ConDrv driver. We’re planning a series of articles to help explain this in more detail. Stay tuned.

  7. Warchylde says:

    Thank you for this guys, it may seem like a small thing to some but many of us will greatly appreciate this.

  8. For those who’d rather not wait for 16257 to get the colours, I’ve created a reg key patch here: https://gist.github.com/richardszalay/9fdaba666b519f089bd96d4cb1abb522

    Keep in mind that some subkeys (like PowerShell) override a few colours, so you’ll need to delete those values in the subkeys if you want it to inherit them.

    1. Plus this won’t change settings for any per-command-line-app settings, nor for any settings applied to any shortcuts.

  9. AMicSys says:

    Is there a plan to update the menu access for cmd prompt (edit, properties, defaults)? Too many clicks to get things done…pls pls pls fix it!!!

    1. You’d think that updating settings would be a simple change, right? Alas, it requires some pretty pervasive changes that’ll take quite a lot of engineering work which we’ve yet to find time/resources for. We ARE, however, keen to revisit our settings infrastructure, and hope to do so before too long.

  10. Den says:

    About month ago I was create a feedback hub ticket and I think it’s a good place to double that info here πŸ™‚
    Windows Console doesn’t take into account user’s regional settings!

    For example: I setup my PROMPT system variable as [$t$h$h$h] $p$g to show current time in CMD.
    Also I setup time format in regional parameters to show leading zeroes for hours.

    Console shows me “[ 8:54:31] C:\>” instead of “[08:54:31] C:\>”

    1. PROMPT has been that way since AT LEAST DOS 5.0. The moment we change something that’s been around this long is the moment our inboxes start to fill up with “YOU BROKE OUR SYSTEM” messages. HOWEVER, we’re not averse to introducing new PROMPT args for those that want a time indicator that honors regional and other settings! Sounds like a great ask for our UserVoice πŸ˜‰ https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/category/182371-cmd-classic-shell

  11. Brittany says:

    Oh man! This is awesome! It will help me to see everything better! Thanks guys!

  12. david says:

    MSFT should have replaced cmd.exe with powershell ISE [which already has all the capabilities of cmd.exe and more]
    just like MSPaint replacement

    1. Cmd is a shell. Console (ConHost.exe) is the terminal. ISE is a scripting dev tool and would incur a significant overhead for simply running command-line executables, and/or interacting with the command-line directly.

      1. CBHacking says:

        Also (annoyingly!) there are still things that Powershell is so bad at the easiest way, by far, to do them is to invoke “cmd /c “. A great example is creating file system links (symbolic, hard, or junction). For some reason, the MKLINK command is a CMD built-in, rather than an executable. Yes, FSUTIL.EXE can be used from PS, but it’s a pain.

        The obvious (and critical) reason you can’t remove CMD.EXE entirely is because Powershell doesn’t understand CMD’s scripting language, and after 3+ decades of people writing batch scripts for COMMAND.COM and CMD.EXE, you can’t just say “nope, re-write them all for WSH or Powershell, we don’t support those anymore!”. One could embed CMD’s script parser in Powershell (hopefully only ever invoked for .BAT and .CMD files) if you *really* wanted to, but it makes a lot more sense to just keep the old shell around (with maybe some small, backward-compatible changes if there’s a situation that really warrants it)..

        1. Re. Symlinks, I suggest you add additional context & requests to this GitHub issue: https://github.com/PowerShell/PowerShell/issues/2845. Better still, submit a PR with your implementation of symlink support.

        2. John Oxley says:

          In PowerShell, what’s wrong with `New-Item -ItemType SymbolicLink`?

          1. Jeremy Morton says:

            The same thing that’s wrong with PowerShell commands in general: you have to write a sentence, paragraph or an essay to do something. This isn’t so bad in a script that you will run more than once, but is way more work than I want to do for exploratory, interactive shell work.

          2. With respect, that’s not true: It’s recommended that you use full command/argument names when writing scripts to ensure legibility & maintenance, but when commanding, using common aliases (e.g. ls, grep, etc.) and abbreviations (e.g. gci, sls). To look up the default/current aliases, call get-alias / gal.

        3. Shayan.To says:

          New-Item -ItemType Junction/HarkLink/SymbolicLink -Value

  13. This looks awesome! Definitively staying tuned for that tool πŸ˜€
    I can’t wait to hear what you guys update next!

    Like Ivan, I do hope it’s tabs πŸ˜‰

  14. Oliver Salzburg says:

    This is much appreciated. Thanks

  15. Thomas D. says:

    Totally agree with Martin Anderson, the new dark cyan looks like light blue. Please adjust to something more cyan-ish where the G and B values are in the same ballpark (or, in HSL terms, stay somewhere around H 120 instead of your blog post’s 137). My proposal is 34,180,200 (H 125).
    Besides that I’m totally happy with the idea of revamping the default palette and your choices for the new colors, so a big thanks for your work! πŸ™‚

    1. We’re working on a tool to give you easier control over your console colors. Bear with us πŸ˜‰

  16. Magnus Blodvik says:

    Still only a 256 colour palette though.

    1. No – Console now supports 24-bit RGB color on Creators Update and later: Enable VIRTUAL_TERMINAL_PROCESSING and emit RGB VT sequences (https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences)

  17. Ernst says:

    that’s good news,
    but when you guys could implement ctrl+shirt+c/ctrl+shift+v ?
    no copy/paste yet, that’s a sad

  18. Paul Schaeflein says:

    Terrific news!

    Ironically, this improved display of colors and fonts for Console is posted on a difficult-to-read, tiny-font, mostly-colorless MSDN site. πŸ™‚ But I’m glad for the improvement regardless.

    1. Click the screenshot for a larger version. We try to post embedded images sized to fit the post. Sometimes they’re too small, othertimes, they’re too big.

  19. Rob Cannon says:

    Simple PowerShell to set defaults. You will have to look at your registry to see if any shortcuts that have been customized

    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable00 -Value 789516
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable01 -Value 14300928
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable02 -Value 958739
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable03 -Value 14521914
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable04 -Value 2035653
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable05 -Value 9967496
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable06 -Value 40129
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable07 -Value 13421772
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable08 -Value 7763574
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable09 -Value 16742459
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable10 -Value 837142
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable11 -Value 14079585
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable12 -Value 5654759
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable13 -Value 10354868
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable14 -Value 10875385
    Set-ItemProperty ‘HKCU:\Console’ -Name ColorTable15 -Value 15921906

    1. Shortcut settings aren’t persisted in the registry. Also, this will change PowerShell’s settings, but not those of Cmd, etc.

  20. James Dorf says:

    Now c’mon, you know how we are out here… where is the “tool” to update to the new colors without doing a clean-install ??

    Anxious in Newport Beach! /jim

      1. James Dorf says:

        Patience I will show, as 54 year old Jedi would me.

      2. B.R. says:

        Agree with the immediate NEED, not WANT of those who are super anxious to get those new colors sans a clean install. Rude Microsoft! You apparently enjoy teasing babies with candy. GAH!!

        1. LOL πŸ™‚ Alas, if only ’twere that simple πŸ˜‰ Console & command-line settings in Windows are pretty complex (as described in the associated settings post).

          We decided NOT to nuke pre-existing defaults because that’d result in us changing some users’ explicitly modified settings – something we try our hardest NOT to do. Also, since defaults are overridden by custom per-app and/or per-shortcut settings, some of your consoles / command-line apps won’t see the changes anyhow (esp. those with custom colors).

          However, as I mentioned, we’re working on a tool to help y’all out here. Bear with us … πŸ˜‰

          1. Ted says:

            Is the tool to set console colors available yet? If so, would you mind adding a link in the article?

          2. It’s been available for almost a year now: https://blogs.msdn.microsoft.com/commandline/2017/08/11/introducing-the-windows-console-colortool/

            Thanks for the note though – updated the post to include a link.

  21. mark says:

    Nice update – small but useful. I use consoles/terminals almost all of the time, usually kde konsole but also others when possible. In KDE Konsole I can also use RGB colours and wrote a small module in ruby to use the “HTML colours” (you know, slateblue, orange, olivedrab etc…) – eventually I will test this on the “windows subsystem for bash/*nix” too but right now I am a semi-sleepy sommer holidays break (August is usually the time of the year where most people in europe make a break, also at university) – but I will definitely check out what has changed.

    So thanks to Rich, Craig and everyone else who keeps people updated – this is appreciated. (Without the blog series, it would be IMMENSELY more difficult for me to keep track of what is changing over the weeks/months).

  22. Miro Schmoft says:

    What command did you use to output the colors like in the example picture?

    1. @craigaloewen on Twitter would love to tell you πŸ™‚

  23. Shgth says:

    I just want to say thanks Rich Turner for keeping us updated; excellent to see this level of interaction. I love the new colors(have the latest build but did .reg file thing to get new colors)! Way easier to read on both of my Quantum Dot and TN panels.

    1. Great to hear – thanks for sharing!

  24. Victor says:

    Why does PowerShell.exe uses it randomly?

    I mean, sometimes it shows the new colors, sometimes it doesn’t.

    If poweshell command line is “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” -noexit -command Set-Location -literalPath ‘C:\’ it doesn’t use the new colors.
    While if the command line is “PowerShell.exe” -noexit -command Set-Location -literalPath ‘C:\’ colors are applied.

    Issue happens when powershell is launched using Windows Explorer’s PowerShell menu in File Menu, while selecting or not selecting (focused) any file before it.

    If I select a file or folder in explorer (highlighted), and launch powershell, it uses the new colors.
    If I click to an empty space and no file or folder is selected, and launch powershell, it doesn’t use the new colors.

    1. Victor says:

      Well, I found the reason.
      Sometimes it launched PowerShell using the Shortcut from
      C:\Users\\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell
      Windows PowerShell.lnk

      I just recreated the shortcut using the same settings:
      Destiny: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
      Start in: %HOMEDRIVE%%HOMEPATH%
      Comment: Performs object-based (command-line) functions

      And voilΓ , now it uses the latest colors. I don’t know how, but I guess Windows File Explorer’s menu to launch PowerShell uses that .lnk file.

    2. Tip: Read our post on where console app/shell settings are persisted. Hint: If you’re launching PowerShell from a shortcut – even a shortcut in the start menu – then it’s not getting the new default color settings; it’s getting its own private color settings.

  25. Oisin G. says:

    Nice to see incremental changes on the way. So, any chance of a matrix of VT code that are implemented and those that _will_ be implemented next? Having full screen mode with alt+enter is just begging to bring back support for the mouse in conhost. It’s hard to bring back turbo vision style console apps without it πŸ˜‰

    1. Console has supported mouse VT sequences since Anniversary Update – try Midnight Commander in WSL πŸ˜‰

      We’re planning a writeup of our VT support. Will take a look at creating a usable table.

  26. Jonas says:

    Are themes comming to conhost.exe?
    Are you also working on an easier way of picking colors for a shortcut?

    1. Stay tuned for more πŸ˜‰

  27. Miro Schmoft says:

    I just updated the colors. I welcome this change and it looks beautiful.

    However, there is a downside. Yellow is very hard to distinguish from white, which makes it difficult to recognize PowerShell commands (Get-Help, Get-ChildItem and the likes). They don’t pop anymore.

    For me, this is a deal breaker and I reverted the yellow color to the old style.

    1. Feel free to tweak your colors to your needs/tastes.

  28. Chris Morgan says:

    What I’d really like now is support for the actual bold face. I like my 1m to mean bold instead of bright.

    1. We hear ya. The challenge with text adornments, is that bold characters, for example, require additional width/height per char, so require the Console to resize the Window, or sacrifice some columns / rows, etc.

  29. L. says:

    Any news on better Unicode support and font fallback?

    1. You’ll need to be more specific: Unicode is a big area.

      Guessing at what you’re asking though: We continue to improve Console’s ability to support UTF-8 and have more improvements on the boil for future releases (after Fall Creators Update).

      To support font fallback, we’ll need to rewrite our current renderer. We’re keen to do this, but need to carefully plan and spend our resources wisely.

      1. Raj Chaudhuri says:

        Will Indic characters be rendered in the console?

  30. DWalker07 says:

    But the old numbers were such good binary numbers like 128, 192, and 255! πŸ™‚

    It is a good improvement.

  31. Jayash11 says:

    Very nice improvement.. appricite this.

  32. Ivan says:

    Had to revert it back. Yellow is pretty much indistinguishable from white now, which is very unfortunate given my color layouts.

  33. Phil says:

    Hooray! As a heavy console user (I prefer console emacs.. maybe I’m a bit weird?) this is a VERY welcome change.

    1. If you’re anything like @paulcam206 (dev on the Console team), you’re VERY weird πŸ˜‰ πŸ˜€

  34. goran says:

    how execute command color 34,34,34 i did but is not running

    1. As you can see when you run `color /?`, color only supports selecting one of the Console’s 16 colors – it does not support full 16-bit RGB colors. This is because `color` is a Cmd command which we try not to change unless we have to in order to preserve backwards compatibility with legacy scripts and tools. If you want to output text with rich color support, emit text with embedded ANSI/VT sequences instead, e.g.: `echo ^[[38;2;100;200;255mHello^[[0m` (where ^[ == CTRL [)

  35. Daniel says:

    Hey Rich, I just installed 1709 on a new Computer with a new ssd. When you WIN+R ‘powershell’ you get the new Colors, that is true. However, when you open powershell via start menu, you still get the old Colors. You forgot to update the Default shortcuts in the start menu with the new Colors.

    1. You get the old colors when starting PowerShell from the start menu because PowerShell’s start menu shortcut embeds definitions for a bunch of custom colors that override the default colors specified by the base Console color settings.

      There are several PowerShell issues discussing this and other related issues: I encourage you to add your thoughts/suggestions to those issues: https://github.com/powershell/powershell/issues?utf8=%E2%9C%93&q=is:issue+is:open+colors

Skip to main content