Changing the default Notepad++ theme doesn’t change most of the colors in a Markdown document. This is especially apparent when using a dark-mode Notepad++ style and dark theme in Windows. You have to manually edit a special Markdown theme to change most of the colors and fonts.

Update: Here is a repo I discovered after writing this post with pre-defined dark themes. It also explains how to get the highlighting to work better / differently for different mark-down flavors.

Background

Markdown on its own tries to look readable and doesn’t need extensive syntax coloring or highlighting. Nevertheless some coloring can help to spot errors such as accidentally indented blocks of text or badly formed lists. And it can assist skimming large marked down documents.

Unfortunately if you use Notepad++ with a dark-mode type of theme (light text on dark background) the way Notepad++ highlights Markdown hurts more than it helps. The text will have a white background, but only where there’s text; the rest of the document will keep its dark background making the whole thing difficult to read (and terrible looking.)

Notepad++ supports changing the way it highlights Markdown, but not in its configurations accessed in the “Settings > Style Configurator” dialog; rather, you can switch to the “Markdown” language through the “Language” menu next to the “Settings” menu. The language will get switched to Markdown automatically if you open a file with a “.markdown” suffix.

When scrolling through the supported languages under the “Style Configurator” you’ll notice that Markdown isn’t among them. You might think you could simply pick your favorite theme (I like “Vibrant Ink”,) then make sure the “Default” language has color and font choices to your liking.

This doesn’t help much at all, unfortunately, because the elements defined in the Markdown style override nearly all the defaults. You can set “Global Overrides” in the “Style Configurator”, but these overrides will change the look of every language, messing up your C++, Ruby or other supported languages.

You will notice this problem especially if you, like me, use a dark-mode type theme such as “Vibrant Ink.” The chosen theme will still be in effect, but all elements defined in the special Markdown style will clash with it (they use light background + dark foreground style colors.) If you only change the global override on the background color, you still have a problem because the Markdown theme foreground colors don’t contrast well with a dark background.

Solution

The Markdown highlighting is in a user defined language file, not the “themes” directory. In Windows 10 navigate to:

c:\users\<your-username>\AppData\roaming\notepad++

Then, instead of “themes” where I first looked, open “UserDefineLangs”. The file named “UserDefinedLang-markdown.default.modern.xml” has the color and font settings and syntax definitions.

The file has keyword definitions first in the “KeywordLists” element; leave those alone unless you want to customize for a different Markdown flavor. The “Styles” section is what you want. Each style cooresponds to a “keywords” item defined in the “KeywordsLists” section.

Default text – stuff you write in paragraphs with no markdown in front – gets defined in the first element under “Styles.” For default text the “bgColor” and “fgColor” attributes define a dark gray foreground color (333333) and pure white (FFFFFF)

<WordsStyle name="DEFAULT" fgColor="333333" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />

The font settings are blank, meaning the theme in effect will set them.

The color settings use the RGB convention represented in hexadecimal: The first two characters are for the red value, the second two for blue and the third for green, where 00 represents the lowest (darkest) value and FF represents the brightest. So to make default text have a light foreground and black background, change the above line to:

<WordsStyle name="DEFAULT" fgColor="F0F0F0" bgColor="010101" fontName="" fontStyle="0" nesting="0" />

To easily find colors use a color picker.”

Update: I discovered this repository with built in UDL themes for NPP check it out to save time.