If John Gruber had created Markdown 10 years earlier, the tools I use to write might be very different.

By 2004, when Gruber developed the Markdown language, I was already experimenting with marking up files as Rich Text Format (RTF). These plain text files were compatible with most word processing packages and the note taking apps that I was sampling.

RTF coding to format fonts and layouts looks cryptic, but didn't intimidate me— I was a programmer who supported commercial printing. Marking up an RTF file is tedious, however, and the code makes the document hard to read. I abandoned my home-grown efforts when I discovered EPIM in 2005.

Comparison of RTF coding to Markdown
Figure 1. Comparison of RTF coding to Markdown. The simplicity of Markdown is why many prefer it.

Not until an EPIM user requested support for Markdown in 2016 did I even know about it. Other requests came in 2019 and 2021.

Interest accelerated in early 2025 as Artificial Intelligence spread. AI and the associated Large Language Models (LLM) often return Markdown-formatted text, which users said EPIM didn't display well.

The EPIM team responded quickly, saying in August 2025 that supporting Markdown would be prioritized in the backlog. By February 2026, the beta for EPIM 26.0 included Markdown.

The purpose of this post is to review how EPIM implements Markdown. For broader information, a search of the internet will bring up any number of guides about the syntax of the language and tools for viewing Markdown files.

Writing and previewing

Software packages for publishing documents (whether print or digital) typically have two components: the markup language and an app to translate the instructions and render the format and layout.

Some Markdown apps combine the two components so that you can preview your document as you write. EPIM separates the functions. When no text is selected, EPIM previews or codes the entire document.

There are two ways to toggle between the writing and preview modes (Figure 1). Notice the wording changes from Convert from Markdown when you are writing to Convert to Markdown in preview mode.

Toggling content from Markdown code to preview
Figure 2. Toggling content from Markdown code to preview is available on the toolbar menu (1) or in the Context Menu (2).

Best practice: Standardize syntax

Markdown, like any language, has different flavors, or dialects. For example, there are two ways to make text bold: enclose it with two asterisks or two underscores (see the table below). Markdown apps differ in how they interpret the underscores. EPIM handles both, but will re-code the underscores as asterisks. As a best practice, and for consistency, use asterisks.

Basic and extended syntax

EPIM supports all of the basic Markdown syntax and several extended syntax elements (see the table below). EPIM does not support
  • Footnotes
  • Syntax highlighting
  • Heading Ids, which act as anchor links.
  • Definition lists
  • Strikethrough
  • Underscored text
  • HTML code mingled with Markdown

Handling Markdown files

To bring a Markdown file into EPIM, follow the menu: File > Import > Notes > Markdown (*.md). EPIM starts with the imported file in preview mode. (For now, EPIM supports dragging and dropping only text and RTF files into a tree.)

Only the Notes module supports Markdown, although the EPIM team has said it will likely be incorporated in other modules. To save a note as a Markdown file, follow the menu, File > Export > Notes > Markdown (*.md).

An EPIM guide for Markdown syntax

Basic syntax

Content Markdown syntax Comments
Headings Syntax 1:
Hashmark (#) up to 6 levels
Level 1: #
Level 6: ######

Syntax 2:
Heading 1 (any number of equal signs on the line below)
===
Heading 2 (any number of dashes on the line below)
---
In Syntax 2:
  • EPIM converts the equal signs and dashes to hashmarks.
  • When you use dashes and press Enter, EPIM creates a horizontal line.
Bold Two asterisks or underscores.
This is **bold**.
This is __bold__.
EPIM converts underscores to asterisks.
Italic One asterisk or underscore.
This is *italic*.
This is _italic_.
Bold and Italic Three asterisks or underscores.
This is ***italic***.
This is ___italic___.
Block quotes (indented paragraphs) Insert > at the beginning of the paragraph. Insert an additional > for each indentation.

This is line 1 (not indented).
> Line 2, indented once.
>> Line 3, indented twice
Blocked quotes, once previewed, remain indented; EPIM does not restore the markup character (>) or left alignment.
List (numeric) Syntax 1:
Number followed by a period
1. 1st
2. 2nd
3. 3rd

Syntax 2:
Number followed by a parenthesis
1) 1st
2) 2nd
3) 3rd
  • When you preview a numbered list, EPIM converts it to a numeric list in its RTF editor and will not convert it back to Markdown.
  • EPIM will reapply the Markdown formatting when you export the file.
List (bullet) Precede line items

Syntax 1: with a dash
- 1st
- 2nd

Syntax 2: with an asterisk
* 1st
* 2nd

Syntax 3: with a plus sign
+ 1st
   + 2nd item indented
  • After previewing, EPIM converts the dash and plus signs to asterisks.
  • To nest items, indent them.
Horizontal rules On a line by themselves, type three or more

Syntax 1: asterisks (***)
Syntax 2: dashes (---)
Syntax 3: underscores (___)
  • After previewing, EPIM converts the dashes and underscores to three asterisks.
  • When you type three or more dashes and press Enter, EPIM converts them to a horizontal line.
Links Enclose the link text in brackets followed by the link enclosed in parentheses.

[Google Maps](https://www.google.com/maps/)
Add an image Start with an exclamation mark, followed by descriptive text in brackets, and the image's path in parentheses.

![Sample License](C:\pcdata\License-front.jpg)
When you toggle from preview back to Markdown, EPIM substitutes "Image" for the descriptive text and removes the path.

![Image](<>)
Code Enclose text you want to appear as code in backticks (`).

Enter this at the command prompt:
`dir c:\*.*`
  • EPIM will preview the text in Courier New.
  • EPIM removes the backticks upon toggling back to Markdown.
Escape character Precede the Markdown code with a backslash.

\# Heading 1
\\# Start this line with a hashmark
This supports using the literal character that Markdown would otherwise translate for formatting.

Extended syntax

Content Markdown syntax Comments
Tables: inserting Use three or more hyphens (---) to create each column's header, and use pipes (|) to separate each column.

| Syntax | Description | Comments |
| ----------- | ----------- | ----------- |
| Header | Title | Col 3 |
| Paragraph | Text | Col 3 |
💡 Tip: Create the table using EPIM's Insert Table function, then convert the table to Markdown.
Tables: text alignment Use colons in the header row to align text in the columns left, right, or center.

| Left | Centered | Right |
| :----------- | :-----------: | -----------: |
EPIM by default renders the header in bold.
Checkboxes (task list) Similar to a bullet list, begin with a dash (-) followed by a space and brackets for each item. To select a checkbox, type x between the brackets.

- [x] Write the press release
- [ ] Update the website
- [ ] Contact the media

Add New Comment