Formatting serial output with colors

Using serial output for debug messages and console logs is very frequent tool for firmware and software developers. But when working on big systems and large data outputs it’s often not easy to find out needed data between lots of symbols.

Using color is a easy obtainable improvement, which can help to increase readability of logs by human eyes. This short article covers basic color codes and usage examples. Coloring is supported by many terminal programs, such as PuTTy, etc.

ANSI color definition

Foreground Background
black 30 40
red 31 41
green 32 42
yellow 33 43
blue 34 44
magenta 35 45
cyan 36 46
white 37 47
\033[1m Bold Text
\033[4m Underline Text
\033[5m Blinking Text
\033[7m Inverse Text

Foreground colors:

Code ESC-string Result
\033[0;30;41m ^[0;30;41m Black on white
\033[0;31m ^[0;31m Red foreground
\033[0;32m ^[0;32m Green foreground
\033[0;33m ^[0;33m Yellow foreground
\033[0;34m ^[0;34m Blue foreground
\033[0;35m ^[0;35m Magenta foreground
\033[0;36m ^[0;36m Cyan foreground
\033[0;37m ^[0;37m White foreground
\033[0;39m ^[0;39m Default color

Bright foreground colors:

Code ESC-string Result
\033[1;30m ^[1;30m Bg Black on white
\033[1;31m ^[1;31m Bg Red foreground
\033[1;32m ^[1;32m Bg Green foreground
\033[1;33m ^[1;33m Bg Yellow foreground
\033[1;34m ^[1;34m Bg Blue foreground
\033[1;35m ^[1;35m Bg Magenta foreground
\033[1;36m ^[1;36m Bg Cyan foreground
\033[1;37m ^[1;37m Bg White foreground
\033[1;39m ^[1;39m Default color

Background colors:

\033[0;40m ^[0;40m Black Background
\033[0;41m ^[0;41m Red Background
\033[0;42m ^[0;42m Green Background
\033[0;43m ^[0;43m Yellow Background
\033[0;44m ^[0;44m Blue Background
\033[0;45m ^[0;45m Magenta Background
\033[0;46m ^[0;46m Cyan Background
\033[0;47m ^[0;47m White Background
\033[0;49m ^[0;49m Default Background

Reset color code: \033[m

Example usage for colors

void color_debug(void) {
    // Outputs black text on green background and returns back to normal 
    printf("\033[0;30;41m Output black text on green background \r\n \033[0;39;49m");
};

Output:

Output black text on green background
Author: xDevs.com Team
Created: Jan. 21, 2015, 11:04 a.m.
Modified: Sept. 30, 2017, 12:22 p.m.