100% Free — All 7 Days

Build your first
website in 7 days.

Learn HTML & CSS from zero. No experience needed. By the end, you'll have a real, live website — deployed and yours forever.

7
Days to a live website
0
Experience needed
EN
English lessons
ES
Lecciones en español
Hosted on GitHub Pages

Free forever. Your domain. Real on the internet.

Seven days,
one real project.

Every day you learn one concept and immediately build something with it. No fluff. No theory overload. Just code you can see.

Day 01
Your First HTML Page
Tags, structure, and your first words on a screen.
Free
Day 02
Text & Links
Headings, paragraphs, and connecting pages together.
Day 03
Styling with CSS
Colors, fonts, and making things look the way you want.
Day 04
Layout & Boxes
The box model, Flexbox, and controlling your layout.
Day 05
Images & Media
Adding images, video embeds, and responsive visuals.
Day 06
Full Page Build
Put it all together — build a real, complete page.
Day 07
Go Live
Deploy to GitHub Pages. Your site is on the internet.

A real website.
Not a tutorial project.

  • A personal portfolio page with your name, bio, and links
  • Responsive design that works on phones and computers
  • Deployed live on GitHub Pages with a real URL
  • Clean, readable code you fully understand and own
  • Skills to keep building — this is just day one of forever
<!-- Your first HTML -->
<html>
  <head>
    <title>My Website</title>
  </head>
  <body>
    <h1>Hello, world.</h1>
    <p>I built this.</p>
  </body>
</html>

All 7 days.
Completely free.

No credit card. No signup wall. Just click start and begin learning. Available in English and Spanish.

English Español
EB

Esdras Buelvas

Web developer · Teacher · Builder

I've been building websites with HTML & CSS for years, and I know exactly where beginners get lost — because I was one. This course is the guide I wish I had when I started. No jargon. No filler. Just the stuff that actually matters, taught in a way that sticks. Available in English and Spanish so nobody gets left behind.

Day 01 — Free Lesson ~15 min read · 18 min video

Your First HTML Page

Today you write your first line of code. By the end of this lesson you'll have a real HTML file open in your browser — created entirely by you, from scratch.

Watch: Day 1 Full Lesson (18 min)

What is HTML?

HTML stands for HyperText Markup Language. It is the language that every website in the world is built with. When you visit any page on the internet — Google, YouTube, any news site — your browser is reading HTML and turning it into what you see on screen.

HTML is not a programming language. You don't need to do math, logic, or algorithms. You just write structured text using something called tags, and the browser handles the rest.

💡

Think of it this way: HTML is like the skeleton of a website. It defines what's there — the heading, the paragraph, the image, the link. CSS (which we'll learn on Day 3) is the skin and clothes — it defines how it looks.

The basic structure of every HTML file

Every HTML page in the world starts with the same basic structure. You only need to memorize this once — your code editor will often write it for you automatically.

index.html
<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <title>My First Website</title>
  </head>

  <body>
    <!-- Your content goes here -->
  </body>

</html>

Let's break down what each line does:

<!DOCTYPE html>

This tells the browser "this file is HTML5" — the modern version. It always goes on line 1. You'll never change this line.

<html lang="en">

This opens the HTML document. The lang="en" tells the browser the page is in English. Everything on your page goes inside this tag.

<head>

The head section contains information about the page — not content that the visitor sees. The title of the tab in the browser goes here, along with links to CSS files later.

<body>

Everything inside the body is what the visitor actually sees. All your text, images, links — everything goes here.

Rule to remember: Every tag you open must be closed. <body> opens, </body> closes. Notice the slash / in the closing tag — that's the signal that it's closing.

The essential tags you need today

You don't need to know every HTML tag. Here are the 8 tags that will get you through most of Day 1 — and honestly, most of your early web projects.

TagWhat it doesExample
<h1>Main heading — the biggest title on the page<h1>Hello</h1>
<h2>Sub-heading — smaller than h1, use for sections<h2>About me</h2>
<p>Paragraph — for regular body text<p>I am learning HTML.</p>
<strong>Bold text — makes words stand out<strong>Important</strong>
<em>Italic text — for emphasis<em>really</em>
<br>Line break — moves to the next line (no closing tag)Line one<br>Line two
<hr>Horizontal rule — a divider line (no closing tag)<hr>
<!-- -->Comment — notes for you, invisible in the browser<!-- note -->

Heads up: <br> and <hr> are self-closing — they don't need a closing tag. You'll learn more about these on Day 2 when we cover links and images.

Write your first page

Open VS Code. Create a new file. Name it index.html. Then type — don't copy-paste — every single line of this code:

index.html
<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <title>My First Page</title>
  </head>

  <body>

    <h1>Hello, my name is Esdras.</h1>

    <p>I am learning to build websites.</p>
    <p>This is my <strong>first page</strong> and I built it from scratch.</p>

    <hr>

    <h2>Why I'm learning HTML</h2>
    <p>Because I want to build things <em>by myself.</em></p>

  </body>

</html>

Type it, don't paste it. Your hands learning the structure is part of the lesson. You'll remember it 10x better if you type every character yourself today.

Open it in your browser

Save your file (Cmd+S on Mac, Ctrl+S on Windows). Now open your file explorer, find index.html, and double-click it. It will open in your default browser.

You should see your heading, your paragraphs, a horizontal line, and bold/italic text — exactly as you wrote them. That is a real webpage. Your webpage.

💡

Pro tip: Install the Live Server extension in VS Code. It auto-refreshes your browser every time you save. Right-click your file → "Open with Live Server".

Every time you change something in VS Code and save, your browser will update. This is your workflow for the entire course. Get comfortable with it.

Day 1 Challenge

Make it yours.

Don't move to Day 2 until you've done all of these. They'll take you 10–15 minutes and they'll lock in everything you just learned.

  • Change the <h1> to use your own name
  • Add a third <p> tag with something true about yourself
  • Add an <h2> with the title "My Hobbies"
  • Use <strong> on at least one word in your page
  • Change the <title> and watch the browser tab update
  • Add a comment using <!-- --> that only you can see
Up next — Day 2
Text, Links & Navigation
Day 02 — Free Lesson ~15 min read · 18 min video

Text, Links & Navigation

Today you make your pages connect. You'll learn how to create links, build lists, and set up a basic navigation — the building blocks of every website on the internet.

Watch: Day 2 Full Lesson (18 min)

What we're building today

On Day 1 you built a single page. Today you learn how to connect pages, create lists, and build navigation — so your site starts feeling like a real website with multiple sections and destinations.

By the end of today your page will have working links, an ordered and unordered list, and a simple navigation bar at the top.

💡

Quick recap from Day 1: You know HTML structure, headings, paragraphs, bold, italic, and line breaks. Everything today builds directly on top of that.

The anchor tag — how links work

Links in HTML are made with the <a> tag — short for anchor. It wraps around any text and turns it into a clickable link.

index.html
<a href="https://google.com">Click here to visit Google</a>

The href attribute is where you put the destination URL. That's it. Any text between the opening and closing tag becomes the clickable link text.

Opening links in a new tab

By default, links open in the same tab. If you want a link to open in a new tab — which is best practice for external sites — add target="_blank":

index.html
<a href="https://google.com" target="_blank">Visit Google</a>

Linking to another page on your own site

When linking between your own pages, you don't need the full URL — just the filename:

index.html
<!-- Link to another page in your project -->
<a href="about.html">About me</a>
<a href="contact.html">Contact</a>

Linking to a section on the same page

You can link to a specific section on the same page using an id and the # symbol:

index.html
<!-- The link -->
<a href="#about">Jump to About section</a>

<!-- The destination -->
<h2 id="about">About Me</h2>

Good to know: The id attribute can be added to any HTML element — not just headings. It gives that element a unique name so you can link directly to it.

Lists — ordered and unordered

HTML has two types of lists. An unordered list gives you bullet points. An ordered list gives you numbers. Both use the <li> tag for each item.

Unordered list — bullet points

index.html
<ul>
  <li>HTML</li>
  <li>CSS</li>
  <li>JavaScript</li>
</ul>

Ordered list — numbered

index.html
<ol>
  <li>Buy groceries</li>
  <li>Cook dinner</li>
  <li>Eat</li>
</ol>

Common mistake: Always put <li> items directly inside <ul> or <ol>. Never put raw text directly inside a list tag without wrapping it in <li>.

Building a simple navigation

A navigation bar is just a list of links at the top of your page. In HTML, we use the <nav> tag to tell the browser "this is navigation", and a <ul> with links inside for the actual items.

index.html
<nav>
  <ul>
    <li><a href="index.html">Home</a></li>
    <li><a href="#about">About</a></li>
    <li><a href="#hobbies">Hobbies</a></li>
    <li><a href="contact.html">Contact</a></li>
  </ul>
</nav>

Right now it looks like a plain vertical list — that's normal. On Day 3 when we add CSS, you'll style it into a real horizontal navbar that looks professional. Today we focus on getting the structure right.

💡

Why use <nav>? It's a semantic tag — it tells the browser and screen readers that this section is navigation, not just a random list. Good habit to build early.

Put it all together

Open your index.html from Day 1. Add a navigation at the top, a list of your hobbies, and a few links. Type every line — don't paste.

index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>My Website</title>
  </head>
  <body>

    <nav>
      <ul>
        <li><a href="#home">Home</a></li>
        <li><a href="#about">About</a></li>
        <li><a href="#hobbies">Hobbies</a></li>
      </ul>
    </nav>

    <h1 id="home">Hello, I'm Esdras.</h1>
    <p>I'm learning to build websites from scratch.</p>

    <hr>

    <h2 id="about">About Me</h2>
    <p>I'm 17, bilingual, and teaching myself to code.</p>

    <h2 id="hobbies">My Hobbies</h2>
    <ul>
      <li>Building websites</li>
      <li>Learning new things</li>
      <li>Teaching others</li>
    </ul>

    <p>Check out <a href="https://github.com" target="_blank">my GitHub</a>.</p>

  </body>
</html>

Notice: The nav links use #home, #about, #hobbies — and the headings have matching id attributes. Click a nav link and the page jumps straight to that section.

Day 2 Challenge

Make it yours.

Complete all of these before moving to Day 3. Should take 10–15 minutes.

  • Add a 4th nav link that jumps to a new section you create
  • Add an ordered list ranking your top 3 favorite things
  • Add a link to your favorite website that opens in a new tab
  • Add an email link using href="mailto:your@email.com"
  • Make sure every nav link jumps to the correct section
  • Add a "Back to top" link at the bottom of the page
Up next — Day 3
Styling with CSS