Skip to main content
    Courses/Markdown/Introduction to Markdown

    Lesson 1 • Beginner Track

    Introduction to Markdown

    By the end of this lesson you'll be able to write a heading, split text into clean paragraphs, and make words bold or italic — and, crucially, you'll know exactly how each symbol renders on screen.

    What You'll Learn

    • What Markdown is and why it was invented
    • Where Markdown is used: GitHub READMEs, docs, chat, notes
    • Write all six heading levels with #..######
    • Split text into paragraphs and control line breaks
    • Make words bold with **..** and italic with *..*
    • Predict exactly how each symbol renders before you preview it

    What Is Markdown?

    Markdown is a way of writing formatted text using plain symbols you type with your keyboard. A markup language just means a set of small marks that tell a program "make this a heading", "make this bold", and so on. Markdown was created by John Gruber in 2004 with one goal: the formatting should be easy to read even before it's turned into a web page.

    You write the Markdown source (plain text with a few symbols), and a Markdown processor converts it into formatted HTML that you see on screen — the rendered result. Those two words, source and rendered, are the whole story of this lesson. You write the source; the computer renders it.

    Where you'll meet Markdown

    • GitHub — every README.md file, plus issues and pull requests, is written in Markdown.
    • Documentation — tools like Docusaurus, MkDocs, and GitBook turn Markdown into doc sites.
    • Chat apps — Discord, Slack, and Reddit use Markdown shortcuts for bold and italic messages.
    • Note-taking — Obsidian, Notion, and Bear store your notes as Markdown.

    Real-World Analogy

    Think of Markdown like the editing marks a writer scribbles on a paper manuscript. When an editor wants a word emphasised, they underline it; when they want a new section, they draw a big heading. The typesetter reads those marks and produces the finished, beautifully laid-out page. In Markdown you are the editor adding marks (#, *, blank lines), and the Markdown processor is the typesetter that turns your marks into the polished result. Your marks stay readable on their own — that's why Markdown feels so natural.

    📊 Source vs Rendered (and how HTML compares)

    Here's the same content three ways: the short Markdown you type, the longer HTML it becomes, and the final rendered result you see.

    Markdown sourceEquivalent HTMLRenders as
    # Hello<h1>Hello</h1>Hello
    ## About<h2>About</h2>About
    **bold**<strong>bold</strong>bold
    *italic*<em>italic</em>italic

    Markdown gives you the same result as HTML with a fraction of the typing. You'll learn HTML later in the course — for now, just notice how much shorter the Markdown column is.

    1. Headings

    A heading is a title for a section. In Markdown you make one by starting a line with one or more # symbols, then a space, then your text. The number of # signs sets the level: one # is the biggest (level 1), and six ###### is the smallest (level 6). Use a single level-1 heading for the page title and work down from there.

    MARKDOWN SOURCE (what you type)

    # Heading 1
    ## Heading 2
    ### Heading 3
    #### Heading 4
    ##### Heading 5
    ###### Heading 6

    RENDERED RESULT (what you see)

    Heading 1
    Heading 2
    Heading 3
    Heading 4
    Heading 5
    Heading 6

    Notice how each extra # makes the heading smaller. Run the block below to print this same Markdown, then paste it into a previewer to watch it render.

    Try it: all six heading levels

    Run it, then paste the Markdown into a preview tool and watch the sizes change.

    Try it Yourself »
    JavaScript
    // 🎯 Paste this Markdown into a real editor (VS Code preview, Dillinger.io)
    // and watch each line become a different heading size.
    console.log(`
    # Heading 1 — the biggest, use it once for the title
    ## Heading 2 — major sections
    ### Heading 3 — subsections
    #### Heading 4
    ##### Heading 5
    ###### Heading 6 — the smallest
    
    Just normal paragraph text sits with no symbols at all.
    `);

    🎯 YOUR TURN #1: Make two headings

    Fill in the blanks marked ___ so the first line is a level-1 heading and the second is a level-2 heading.

    ___ My Recipe Book        👉 use ONE #  then a space
    ___ Breakfast Ideas       👉 use TWO ## then a space

    ✅ EXPECTED RENDERED RESULT

    My Recipe Book
    Breakfast Ideas

    2. Paragraphs & Line Breaks

    A paragraph is just a block of normal text — no symbols needed. The catch that trips up everyone at first: to start a new paragraph you must leave a completely blank line between blocks. Pressing Enter once is not enough — a single line break is ignored, and the two lines render as one continuous paragraph.

    MARKDOWN SOURCE

    Roses are red
    violets are blue.
    
    Markdown is easy
    and so are you.

    RENDERED RESULT

    Roses are red violets are blue.

    Markdown is easy and so are you.

    See how "Roses are red" and "violets are blue" joined into one line? The single line break was ignored. The blank line is what created the second paragraph. If you genuinely want a hard line break inside a paragraph, end the line with two spaces — but blank lines for new paragraphs is the rule you'll use 99% of the time.

    Try it: paragraphs vs line breaks

    Run it, paste into a preview, and confirm only the blank line starts a new paragraph.

    Try it Yourself »
    JavaScript
    // 🎯 Blank lines make NEW paragraphs. A single line break does NOT.
    // Paste this in and notice lines 1+2 join, but a blank line splits them.
    console.log(`
    This line and
    this line render as ONE paragraph (the break is ignored).
    
    This is a brand-new paragraph because of the blank line above it.
    `);

    3. Emphasis: Bold & Italic

    To emphasise words, you wrap them in asterisks. One asterisk on each side gives italic: *like this*. Two asterisks on each side gives bold: **like this**. Three gives both at once: ***like this***. The asterisks must hug the words with no spaces inside — ** word ** won't render.

    MARKDOWN SOURCE

    Normal text with *italic* in it.
    Now some **bold** for contrast.
    And ***both at once*** for impact.

    RENDERED RESULT

    Normal text with italic in it.

    Now some bold for contrast.

    And both at once for impact.

    Try it: bold and italic

    Run it, paste into a preview, and see the asterisks disappear into styling.

    Try it Yourself »
    JavaScript
    // 🎯 Emphasis is just symbols wrapped around your words.
    // Paste this into a Markdown preview to see it render.
    console.log(`
    This word is **bold**.
    This word is *italic*.
    This is ***bold and italic*** at the same time.
    
    You can mix them in a sentence: the **total** was *exactly* right.
    `);

    🎯 YOUR TURN #2: Add emphasis

    Fill in the blanks so "free" becomes bold and "today" becomes italic.

    This course is ___free___ for everyone   👉 wrap free in ** ** for bold
    and you can start ___today___ right now.  👉 wrap today in *  *  for italic

    ✅ EXPECTED RENDERED RESULT

    This course is free for everyone and you can start today right now.

    Mini-Challenge: Write a tiny profile

    No blanks this time — just a brief. In a Markdown editor, write a short profile using everything from this lesson. Then compare it to the expected result.

    🎯 MINI-CHALLENGE — write this in Markdown yourself:
    // 1. A level-1 heading with your name
    // 2. A level-2 heading that says "About Me"
    // 3. One paragraph describing yourself, with your
    //    favourite hobby in *italic* and your job in **bold**
    //
    // (write your Markdown in a real editor and preview it)

    ✅ EXAMPLE RENDERED RESULT

    Sam Rivera
    About Me

    I work as a teacher and in my spare time I love rock climbing.

    Common Errors (and the fix)

    • No space after #: #Hello renders as plain text "#Hello", not a heading. You must write # Hello with a space after the hash.
    • No blank line between blocks: putting a heading directly above a paragraph with no blank line in between can swallow the formatting. Always leave one blank line between a heading and the text under it.
    • Expecting a single line break to split text: pressing Enter once does nothing visible — both lines join into one paragraph. Leave a blank line to start a new paragraph.
    • Spaces inside the asterisks: ** bold ** won't render as bold in most parsers. The asterisks must touch the words: **bold**.

    📋 Quick Reference Cheat-Sheet

    Markdown syntaxRenders as
    # TitleTitle (level-1 heading)
    ## SectionSection (level-2 heading)
    ###### TinyTiny (level-6 heading)
    **bold**bold
    *italic*italic
    ***both***both
    blank linestarts a new paragraph

    Frequently Asked Questions

    Q: Where does the rendered version actually appear?

    Anywhere a Markdown processor runs it — GitHub renders your README.md when you view the page, VS Code shows a preview pane, and chat apps render it the instant you send a message. The .md file itself always stays plain text.

    Q: Can I use - (dashes) instead of * for italic and bold?

    For emphasis you use * asterisks or _ underscores (e.g. _italic_ also works). Dashes are used for lists and horizontal rules, which you'll meet in later lessons.

    Q: Why didn't my second line start a new paragraph?

    Because you only pressed Enter once. A single line break is ignored — you need a fully blank line between the two blocks of text for a new paragraph.

    Q: Is Markdown the same everywhere?

    The basics in this lesson — headings, paragraphs, bold, italic — work identically everywhere. Some platforms add extras (GitHub-flavoured Markdown adds task lists and tables), but what you've learned here is universal.

    Pro Tip

    In VS Code, open any .md file and press Ctrl+Shift+V (Cmd+Shift+V on Mac) for an instant live preview. Watching the rendered result update as you type is the fastest way to build an intuition for Markdown.

    🎉 Lesson Complete

    • ✅ Markdown is plain text with simple symbols that a processor renders into formatted output.
    • ✅ It powers GitHub READMEs, documentation sites, chat apps, and note-taking tools.
    • # to ###### make six heading levels — always with a space after the hash.
    • ✅ A blank line starts a new paragraph; a single line break is ignored.
    • *italic*, **bold**, and ***both*** add emphasis.
    • Next lesson: Basic Formatting — lists, links, code, and blockquotes.

    Sign up for free to track which lessons you've completed and get learning reminders.

    Cookie & Privacy Settings

    We use cookies to improve your experience, analyze traffic, and show personalized ads. You can manage your preferences below.

    By clicking "Accept All", you consent to our use of cookies for analytics and personalized advertising. You can customize your preferences or reject non-essential cookies.

    Privacy PolicyTerms of Service