Markdown basics

Markdown vs Rich Text vs Plain Text: What's the Difference?

Plain text is just characters: no bold, no headings, nothing but the words. Rich text stores the formatting inside the file, the way Word, Pages, RTF and most email does, so you see bold but can't read the file without the right app. Markdown sits in between. It is plain text, but a few symbols like # and ** describe the formatting, so the file reads fine in any text editor and turns into a formatted page in an app that renders it. Pick plain text for scraps, rich text for documents you hand to someone who will open them in Word, and Markdown for anything you'll keep, edit, search or put under version control.

That's the short answer. The rest of this post puts numbers on it. I saved one small note in all three forms and measured what changed: size, what survives a conversion, and what a one-number edit looks like in Git.

QuickMark split view on iPad. Left: a short plain text note with lines like Trip notes, Packing, milk, charger, 1986. A great year., Area: 2*3*4 m and #todo call the hotel. Right: the same note rendered as Markdown, where Trip notes became a heading, the three packing lines joined into one, 1986. turned into a numbered list item and the 3 is in italics
A plain text note opened as Markdown. Most of it reads the same; a few lines don't. Captured in QuickMark on an iPad (A16) simulator.

The three formats side by side

Plain textMarkdownRich text
Typical files.txt.md, .markdown.docx, .rtf, .pages, email
Where formatting livesNowhereIn visible symbolsIn hidden codes or XML
Readable in any text editorYesYesRTF barely, DOCX no (it's a zip)
Headings, lists, tables, linksNoYesYes
Fonts, colours, page layoutNoNo, the app decidesYes
Clean diffs in GitYesYesNo
Best forScraps, logs, configNotes, docs, READMEs, journalsDocuments others will edit in Word

One note, three files: what I measured

The test document is a short trip note: a heading, a bold line, a packing list with two checkboxes, a two-row budget table and one link. Eighteen lines of Markdown.

You write
# Trip to Da Lat

**Dates:** 12 to 15 March. *Bring a jacket.*

## Packing
- Passport
- Charger
- [x] Book the hotel
- [ ] Rent a scooter

## Budget

| Item | Cost |
| --- | ---: |
| Hotel | 2,400,000 |
| Food | 1,200,000 |

See the [weather forecast](https://example.com/weather).
You get

Two headings, a bold label and an italic reminder, a packing list with one ticked and one empty checkbox, a two-column table with the costs right-aligned, and a working link.

I rendered it with QuickMark's own renderer, exported a Word file with QuickMark's own Word exporter, and used macOS's built-in textutil (the converter behind TextEdit) to make the RTF and plain text versions. Here's what came out:

FileSizeLinesCompared to the .md
notes.txt (plain)203 bytes15Smaller, but formatting and the link are gone
notes.md (Markdown)282 bytes18Baseline
notes.rtf (TextEdit)3,924 bytes62About 14 times larger
notes.docx (TextEdit)3,826 byteszipAbout 14 times larger
notes.docx (QuickMark export)9,393 byteszip of 18 filesAbout 33 times larger

Size on its own doesn't matter much; nobody runs out of disk over a trip note. What the numbers show is where the formatting went. In the .md file it's a handful of visible characters. In the RTF it's 62 lines of control words like \fonttbl, \trowd and \cssrgb before you reach your own sentences. The Word file is a zip archive holding 18 separate parts (document.xml, styles.xml, numbering.xml, and so on). QuickMark's Word file is bigger than TextEdit's mostly because it ships more of those parts: styles, list numbering, and placeholder footnote, endnote and comment parts that Word expects to find.

The Git test: change one number

I committed all three files, changed the hotel cost from 2,400,000 to 2,600,000, and asked Git what changed.

The Markdown file:

 | Item | Cost |
 | --- | ---: |
-| Hotel | 2,400,000 |
+| Hotel | 2,600,000 |
 | Food | 1,200,000 |

The Word file:

Binary files a/notes-qm.docx and b/notes-qm.docx differ

That's the whole report for the Word file. It went from 9,393 to 9,391 bytes and Git can't tell you why. The RTF file did produce a one-line diff, because RTF is technically text, but that line sits inside formatting codes and it's the only part of the file a person can read at a glance. This is why READMEs, docs sites and changelogs are almost always Markdown: a reviewer sees exactly what changed.

What plain text throws away

Going the other way, from formatted to plain text, loses more than bold. When textutil turned the rendered note into a .txt:

  • The link URL vanished. "See the weather forecast." survived; https://example.com/weather did not.
  • The checkboxes lost their state. "Book the hotel" (done) and "Rent a scooter" (not done) came out as identical bullets.
  • The table fell apart. Each cell landed on its own line: Item, Cost, Hotel, 2,400,000, Food, 1,200,000.
  • Headings became ordinary lines. "Packing" and "Budget" look just like the text under them.

Markdown keeps every one of those as text you can see: [x], the pipes of the table, the URL in round brackets. It's 79 bytes more than the plain version and nothing is lost.

Every plain text file is already Markdown (almost)

Markdown was designed so that ordinary text renders sensibly. Open a .txt file as Markdown and most of it looks the same. Most. I ran a few everyday lines through QuickMark's renderer to see which ones change:

Plain text lineRendered as Markdown
Three lines: Packing, milk, chargerOne line: "Packing milk charger"
Trip notes with --- on the next lineA heading
1986. A great year.A numbered list that starts at 1986
Area: 2*3*4 m"Area: 234 m" with the 3 in italics
# not a commentA heading
#todo call the hotelUnchanged (no space after #, so not a heading)
Price: $5 and $10Unchanged (not treated as math)
file_name_v2.txtUnchanged (underscores inside a word stay literal)

The first one surprises people most. In Markdown a single line break is just a space; you need a blank line between paragraphs, or a list marker in front of each item. The fixes for the rest are in how to escape characters in Markdown: a backslash, as in 1986\. or 2\*3\*4, keeps the character as typed.

The Trip to Da Lat note rendered in QuickMark on iPhone: a large heading, a bold Dates label with an italic reminder, a Packing list with one ticked and one empty checkbox, a Budget table with right-aligned costs and a blue weather forecast link
The 282-byte Markdown note, rendered. Captured on an iPhone 17 Pro simulator.

Moving between the three in QuickMark

Here's what the app actually does with each format, checked against its source code rather than from memory:

  • Opening plain text: QuickMark opens .md files and any plain text file, including .txt, on Mac, iPhone and iPad. A .txt is shown rendered as Markdown, with the quirks from the table above.
  • Opening rich text: it doesn't. .rtf, .docx and .pages files aren't in the list of types the app accepts. If you need to bring a Word document over, convert it first with a tool like Pandoc.
  • Pasting rich text into the editor: the editor is plain text only, so pasting from a web page or an email brings the words and drops the formatting. It does not convert bold into **bold** or a link into [text](url). You get the text; the Markdown you add yourself.
  • Getting rich text out, on the Mac: File ▸ Copy ▸ Copy as Rich Text (⌥⇧⌘C) puts the rendered document on the clipboard as RTF, HTML and plain text at once, so Mail, Pages or Google Docs each take the version they paste best. The full walkthrough is in how to paste Markdown as rich text. On iPhone and iPad this menu item isn't there yet.
  • Getting the Markdown itself out, on the Mac: Copy Markdown Source (⌥⌘C) in the same File ▸ Copy menu copies the whole document as plain text, symbols included, whatever you have selected.
  • Getting a Word file out: the Word (.docx) export works on Mac, iPhone and iPad. That's the 9,393-byte file from the test above; the Word export post lists what carries over and what doesn't.

Which one should you use?

My rule of thumb:

  • Plain text when the content has no structure at all: a list of serial numbers, a log, a scratch note you'll delete tomorrow.
  • Rich text when the recipient lives in Word or Pages and will edit the document there, or when the layout itself matters: letterheads, contracts, anything with page-exact formatting. Markdown doesn't do fonts or margins, and it doesn't pretend to.
  • Markdown for everything you write for yourself and keep: notes, docs, a daily journal, a README. You get structure, the file stays readable without any app, and when someone does need a Word file or an email, you can make one from it in a few seconds.

Going from Markdown to rich text is one command. Going from rich text back to clean Markdown is a cleanup job. That asymmetry is the strongest argument for writing in Markdown first.

QuickMark app icon

Get rendered Markdown previews everywhere

QuickMark is a free, native Markdown app for Mac, iPhone and iPad. Live preview, export and publish built in.