Let's dive into the wonderful world of Markdown. It might seem a little strange at first, but trust me, once you get the hang of it, you'll wonder how you ever lived without it. It's a must for programmers and the easiest way to format your writing.
Fun fact: This whole tutorial is written in Markdown, so you can see it in action right here!
What is Markdown?
Think of Markdown as a super simple way to add formatting—like bold text, italics, headings, lists, and links—to plain text files. It was created by John Gruber and Aaron Swartz with the goal of being as easy-to-read and easy-to-write as possible.
You just type some simple symbols (like *
or #
) around your text, and special programs or websites know how to turn that into nicely formatted documents, like the web page you're probably reading this on (HTML).
Why bother learning it? Because it's used everywhere!
- GitHub, GitLab, Bitbucket: For writing README files, comments, and documentation.
- Reddit: For formatting posts and comments.
- Note-taking apps: Like Obsidian, Bear, Ulysses, and many others.
- Chat apps: Slack and Discord use variations of it.
- Forums and Blogs: Many use it as their main writing format.
It's fast, it's portable (just a plain text file!), and it doesn't get in your way. Let's learn how to write it!
How do I create headings or titles?
This is fundamental! You use the hash symbol (#
) at the start of a line to create headings. The number of hashes tells you the level of the heading (like H1, H2, H3 in HTML).
#
= Biggest heading (Level 1)##
= Second biggest (Level 2)- ...and so on, usually up to
######
(Level 6)
Important: You need a space between the #
symbols and your heading text!
Example Code:
# This is Heading Level 1 (like the main title)
## This is Heading Level 2 (a major section)
### This is Heading Level 3 (a sub-section)
#### This is Heading Level 4
##### This is Heading Level 5
###### This is Heading Level 6 (the smallest)
This is just regular paragraph text.
How do I make text bold or italic?
Want to add some emphasis or make something stand out? Easy! Use asterisks (*
) or underscores (_
).
- For italics, wrap the text in one asterisk or one underscore.
- For bold, wrap the text in two asterisks or two underscores.
- For bold and italic, wrap the text in three asterisks or three underscores.
You can often use these inside words too, but it depends on the specific Markdown tool you're using. Strikethrough (putting a line through text) is also common, using two tildes (~~
).
Example Code:
You can make text *italic* using asterisks.
Or you can make text _italic_ using underscores.
Make it **bold** with double asterisks.
Or make it __bold__ with double underscores.
Combine them for ***bold and italic***!
Or like ___this___!
Sometimes you want to ~~strike this out~~.
How do I make lists, like bullet points or numbered lists?
Lists are super useful for organizing things. Markdown makes them simple.
Unordered Lists (Bullet Points):
Use an asterisk (*
), a hyphen (-
), or a plus sign (+
) at the start of the line, followed by a space. You can mix and match them, but it's usually cleaner to stick to one type.
Ordered Lists (Numbered Lists):
Just use a number followed by a period (.
) and a space. The cool part? You don't even have to get the numbers right! Markdown is smart enough to figure it out. Using 1.
for every item usually works fine.
Nesting Lists: To make a sub-list, just indent the line with spaces (usually 2 or 4 spaces work).
Example Code:
Here's an unordered list:
* Item 1
* Item 2
* Sub-item 2a (indented)
* Sub-item 2b
- Item 3 (using a hyphen)
+ Item 4 (using a plus)
And here's an ordered list:
1. First step
2. Second step
3. Third step
1. Sub-step 3a (indented)
2. Sub-step 3b
1. Fourth step (See? I used '1.' but it renders as '4.')
How do I add links to websites?
Links are essential for the web! The basic format is [Text you want people to click on](URL address)
.
You can also add an optional "title" that often appears when someone hovers their mouse over the link. You put that in quotes after the URL. [Clickable Text](URL "Hover Title")
Example Code:
Here's a link to the source of Markdown: [Daring Fireball](https://daringfireball.net/projects/markdown/).
Here's a link with a title: [Google Search](https://www.google.com "Click here to search Google!").
How do I add images?
Adding images is very similar to adding links, but you start with an exclamation mark (!
).
The format is: 
The "Alt text" (alternative text) is important! It's what shows up if the image can't load, and it's used by screen readers for visually impaired users. It also helps search engines understand what the image is about.
You can also add an optional hover title, just like with links: 
Example Code:

How do I show code snippets or technical text?
Markdown is great for programmers and tech writers because it makes showing code easy.
Inline Code:
If you just want to mention a small piece of code or a filename like this
within a sentence, wrap it in single backticks (`
).
Fenced Code Blocks: For longer blocks of code, use "fences." These are lines with three backticks (```) or three tildes (~~~) before and after your code block.
Syntax Highlighting (Bonus!):
Most Markdown tools let you add syntax highlighting by putting the name of the language right after the opening triple backticks. Like ```python
or ```javascript
.
Example Code:
To install the package, run `npm install cool-package`.
Here's a block of Python code:
```python
def greet(name):
"""This function greets the person passed in as a parameter"""
print(f"Hello, {name}!")
greet("Markdown Learner")
```
And here's some HTML:
```html
Hello World
This is a paragraph.
```
Just a generic code block:
```
No specific language here.
Just plain text.
```
How do I make blockquotes (like quoting someone)?
To show text that's a quote from another source, use the greater-than symbol (>
) at the start of the line, followed by a space.
You can also nest them by using >>
.
Example Code:
Someone once said:
> To be, or not to be, that is the question.
You can also nest quotes:
> This is the first level.
>> This is nested inside.
> Back to the first level.
How do I add a horizontal line (a divider)?
Need to separate sections of your document visually? Use three or more hyphens (---
), asterisks (***
), or underscores (___
) on a line by themselves.
Example Code:
Here's some text above the line.
---
Text below the first line.
***
Text below the second line.
___
Text below the third line.
What if I want to type a character that Markdown uses for formatting? (Escaping Characters)
Good question! What if you actually want to type an asterisk or a hash symbol without it turning into formatting? You "escape" it by putting a backslash (\
) right before it.
Example Code:
I want to show literal asterisks, like \*this\*, not italics.
I need to type a \# symbol at the start of this line without making it a heading.
Show me the backtick: \`
Show me the backslash itself: \\
How to make tables in Markdown?
Yes, but the syntax is a little more involved. It uses pipes (|
) to separate columns and hyphens (-
) to create the header row divider. You can also control text alignment using colons (:
).
This is often part of "Extended" Markdown flavors, like GitHub Flavored Markdown (GFM).
Example Code:
| Header 1 | Header 2 | Header 3 |
| :------------ | :-----------: | ------------: |
| Left-aligned | Center-aligned| Right-aligned |
| Cell 1 | Cell 2 | Cell 3 |
| Another row | More text | And more |
How to make checklists or task lists?
Yes! This is another common extension, especially popular on platforms like GitHub. It uses the standard list syntax (*
, -
, or +
) followed by [ ]
for an unchecked item or [x]
(or [X]
) for a checked item.
Example Code:
My To-Do List:
- [x] Learn basic Markdown syntax
- [ ] Practice writing lists
- [ ] Add links and images
- [ ] Try making a table
(Note: Whether these are actually interactive checkboxes depends on where you're viewing the Markdown.)
Frequently Asked Questions (FAQs) about Markdown
Here are some common questions people have:
-
Q: Is Markdown the same as HTML?
- A: Nope! Markdown is much simpler than HTML. Think of it as a shorthand. Many tools convert Markdown into HTML so web browsers can display it correctly, but the writing process is way easier.
-
Q: What app or software do I need to write Markdown?
- A: That's the beauty of it – you can write Markdown in any plain text editor! Notepad on Windows, TextEdit on Mac (make sure it's in plain text mode), VS Code, Sublime Text, Atom, etc. There are also dedicated Markdown editors (like Obsidian, Typora, iA Writer) that give you live previews as you type.
-
Q: Can I use HTML tags directly inside my Markdown?
- A: Often, yes! Most Markdown processors are designed to let you embed HTML tags directly if you need some formatting that Markdown doesn't cover (like changing text color, though that's often discouraged). However, it depends on the specific Markdown tool or website. Basic Markdown doesn't guarantee HTML will work.
-
Q: Is there just one version of Markdown?
- A: Not exactly. There's the original Markdown, but over time, different platforms added features. Common variations include:
- CommonMark: An effort to standardize the core features. Most modern tools aim for CommonMark compatibility.
- GitHub Flavored Markdown (GFM): Adds features like tables, task lists, strikethrough, and automatic linking of URLs. Very popular.
- MultiMarkdown: Adds features like footnotes, tables, citations, and more.
- The good news? The basics (headings, bold, italic, lists, links, images, code blocks) are almost always the same everywhere!
- A: Not exactly. There's the original Markdown, but over time, different platforms added features. Common variations include:
-
Q: Where is Markdown used the most?
- A: It's huge in the software development world (GitHub, GitLab documentation), technical writing, blogging platforms (like Ghost, Jekyll, Hugo), forums (Reddit), note-taking apps, and even some chat applications.
-
Q: How do I make paragraphs?
- A: Just leave a blank line between chunks of text! Markdown treats consecutive lines of text as a single paragraph. To start a new paragraph, hit Enter twice to create that empty line separator.
That's the core of Markdown! It looks simple, and it is, but it's incredibly powerful and useful once you start using it. The best way to learn is to practice – try writing your notes, emails, or even just random documents using Markdown from now on. Happy writing!