Skip to main content

Command Palette

Search for a command to run...

HTML Tags and Elements Explained for Beginners

Published
5 min read
HTML Tags and Elements Explained for Beginners

Introduction

We all have that one friend who sends a "wall of text" in WhatsApp. One giant paragraph with no line breaks, no emojis,just a dense block of words you have to squint to read?

Now imagine that was the entire internet. Before HTML existed, that's exactly what happened when computer talk to each other, just raw , unbroken text with zero personality. No links to click. No Read More buttons.

Tim Berners-Lee looked at that mess and thought, "What if we could mark up text so browsers know what's a headline versus what's a button?"

That's it. That's HTML's superpower: giving meaning to text.

Comparison between plain text and structured HTML content with headings, paragraphs, and links

What Is HTML

HTML (HyperText Markup Language) is a markup language that adds structure and meaning to text using tags. With HTML browser can understand which text is heading, which is paragraph and much more. HTML is the skeleton of the web page it provide a structure your your website.

The Anatomy: Tags vs. Elements

Diagram explaining the difference between HTML tags and elements with opening tag, content, and closing tag

A Tag is just the markup instruction—<p> or </p>.
An Element is the whole deal: <p>This is the paragraph.</p>

Think of it like a sandwich:

  • The Tag == The Bread(the container)

  • The Content = The filling (the meat/veggies)

  • The Element = The entire sandwich (bread + filling + bread)

TagsElements
Just the brackets and lettersThe full thing you see on screen
Can't exist alone (always come in pairs, usually)Can stand alone or wrap content
<p><p>I'm readable content</p>

Self-Closing: The Void Elements

Some elements are loners. They don't need warp content; they embed stuff.

<img> doesn't have </img>. It can't contain text between tags because it displays an image, not letters. Some more self-closing tags are <br> , <hr> <input> and much more.

Block vs. Inline: The Layout Secret

Visual comparison of block and inline HTML elements and how they affect layout

This confuses many people the block elements and the inline elements.

Block elements are greedy. They take up the full width available and shove the next thing to a new line. Like that friend who hogs the couch.

Inline elements are polite. They take only what they need and sit next to each other like passengers on a bus.

BlockInline
Starts fresh on a new lineFlows with the text
take up the full widthOnly as wide as the content
Can have children (blocks or inline)Can only contain text or other inline elements
div, p, h1, formspan, a, img, strong
You can't put a div inside a span. It's like trying to fit a suitcase inside a wallet. Browsers will break your layout trying to "fix" it.

Your Essential Toolkit

There are many tags in HTML(more then 100) . You don't need to memorize all this tags. Learn these 15 tags and you can build almost 90 % of the website you see.

Structure (The Skeleton)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>This Shows in the Tab</title>
</head>
<body>
    <!-- Everything visible lives here -->
</body>
</html>

Why lang="en": Screen readers need to know pronunciation rules. Google's algorithm checks it. Don't skip it.

Content

Headings: <h1> through <h6>. Not for font size—for hierarchy.

Mistake to avoid: Using <h3> because you want smaller text. Use CSS for sizing. Headings are an outline for Google and screen readers. Only one <h1> per page (your main topic).

Paragraphs: <p> automatically adds breathing room (margins) between blocks of text. Don't wrap everything in divs when semantic tags exist.

Links: <a href="url">Clickable text</a>

The target="_blank" attribute opens new tabs, but add rel="noopener" for security (prevents tabnabbing attacks):

<a href="https://example.com" target="_blank" rel="noopener">
  Opens safely in new tab
</a>

Lists:

  • <ul> = bullet points (unordered)

  • <ol> = numbers (ordered)

  • <li> = list item (the actual content)

<h2>My Fruits List</h2> 
<ul> <li>Apple</li> 
<li>Banana</li>
 <li>Cherry</li>
  </ul>

Media

Images:

<img src="photo.jpg" alt="man floating in space">

Always write alt text. Always. When images break, users see the description instead of a broken icon.

Video:

<video src="demo.mp4" controls width="640" height="360">
  Your browser is too old to play this video.
</video>

Include width/height prevents that annoying layout jump as the video loads.

The Semantic Revolution

Comparison between div based layout and semantic HTML structure

HTML5 gave us tags that actually describes what content is, nit just how it looks.

Instead of:

<div class="header">
 <div class="nav">...</div>
</div>
<div class="main-content">...</div>
<div class="footer">...</div>

Use:

<header>
  <nav>...</nav>
</header>
<main>...</main>
<footer>...</footer>

Why bother?

  • Screen reader users can navigate by landmarks ("Jump to main content")

  • Search engines understand <article> is standalone content worthy of indexing

  • Your code reads like an outline

Key semantic tags:

  • <header>: Introductory stuff or navigation

  • <nav>: Major navigation blocks only, not every random link

  • <main>: The primary content. Use once per page.

  • <article>: Self-contained content like blog posts or product cards

  • <section>: Thematic grouping, usually with a heading

  • <aside>: Tangentially related content (sidebars, callout boxes)

  • <footer>: Copyright, contact info, related links

Forms

Forms are how users talk to your server.

<form action="/submit" method="POST">
  <label for="email">Email:</label>
  <input type="email" id="email" name="email" required>

  <button type="submit">Join Newsletter</button>
</form>

Critical details:

  • name attribute = what the server receives (the variable key)

  • id links to the label (clicking the label focuses the input)

  • type="email" triggers the right mobile keyboard and validates format

Input types you should know:

  • text (default)

  • email (validates @ symbol)

  • password (masks characters)

  • checkbox (multiple selections)

  • radio (single selection from group)

  • submit (creates a button)


Resources I Actually Use: