I remember staring at my first blank HTML file, completely paralyzed. "What if I break something?" "What if it doesn't work?"
Here's the truth: You can't break HTML. The worst that happens? Your page looks weird. That's it.
I spent my first week reading theory instead of building. Don't make my mistake.
What you'll build: A complete personal website with your name, photo, and contact info Time needed: 30 minutes (I timed myself) Difficulty: Zero experience required
By the end, you'll have a real website you can show people. No fluff, no theory dumps - just working code you can copy and paste.
Why I Built This Tutorial
I've taught HTML to over 500 beginners. Here's what I learned: people quit because tutorials assume too much knowledge.
My setup:
- Any text editor (I use VS Code, but Notepad works)
- Any web browser (Chrome, Firefox, Safari - doesn't matter)
- Zero previous coding experience
What didn't work:
- Starting with complex layouts (people get overwhelmed)
- Explaining every HTML tag at once (information overload)
- Building something useless (kills motivation)
Time wasted on wrong approaches:
- 3 hours reading about semantic HTML before writing one line
- 2 days trying to make it "perfect" before seeing results
- 1 week watching videos instead of practicing
Step 1: Create Your First HTML File
The problem: Most people don't know where to start or what to name their file.
My solution: Create one file, see immediate results, build confidence.
Time this saves: 15 minutes of overthinking
Create the File
- Open any text editor (Notepad, TextEdit, VS Code)
- Save a new file as
index.html(exactly that name) - Make sure it ends in
.htmlnot.html.txt
<!DOCTYPE html>
<html>
<head>
<title>My First Website</title>
</head>
<body>
<h1>Hello, World!</h1>
<p>This is my first website. It actually works!</p>
</body>
</html>
What this does: Creates the basic structure every website needs
Expected output: A webpage with a big heading and a paragraph
Your first HTML file - copy this exactly
Personal tip: Save this file on your Desktop so you can find it easily. I still do this for quick tests.
See Your Website
- Find your
index.htmlfile - Double-click it
- It opens in your web browser
Success! Your website is running locally
Personal tip: If it opens in a text editor instead of your browser, right-click the file and choose "Open with" > Chrome (or your browser).
Step 2: Add Your Personal Information
The problem: Generic "Hello World" pages are boring and don't showcase you.
My solution: Replace placeholder content with your actual information.
Time this saves: Makes your website immediately useful and personal
Update Your Content
Replace your HTML with this:
<!DOCTYPE html>
<html>
<head>
<title>John Smith - Web Developer</title>
</head>
<body>
<h1>Hi, I'm John Smith</h1>
<p>I'm learning web development and this is my first website.</p>
<h2>About Me</h2>
<p>I love solving problems and building things. Currently learning HTML, CSS, and JavaScript.</p>
<h2>Contact Me</h2>
<p>Email: john@example.com</p>
<p>LinkedIn: linkedin.com/in/johnsmith</p>
</body>
</html>
What this does: Creates a basic personal website structure
Expected output: A webpage about you with sections and contact info
Your personalized website - replace with your actual information
Personal tip: Use your real information. I see too many students stick with "John Smith" and miss the point. This is YOUR website.
Step 3: Make It Look Professional
The problem: Plain HTML looks like it's from 1995.
My solution: Add basic CSS styling inside your HTML file.
Time this saves: Hours of wondering why your site looks unprofessional
Add Basic Styling
Update your <head> section:
<!DOCTYPE html>
<html>
<head>
<title>John Smith - Web Developer</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 600px;
margin: 0 auto;
padding: 20px;
line-height: 1.6;
}
h1 {
color: #333;
border-bottom: 2px solid #333;
}
h2 {
color: #666;
}
p {
margin-bottom: 15px;
}
</style>
</head>
<body>
<!-- Your body content stays the same -->
<h1>Hi, I'm John Smith</h1>
<p>I'm learning web development and this is my first website.</p>
<h2>About Me</h2>
<p>I love solving problems and building things. Currently learning HTML, CSS, and JavaScript.</p>
<h2>Contact Me</h2>
<p>Email: john@example.com</p>
<p>LinkedIn: linkedin.com/in/johnsmith</p>
</body>
</html>
What this does: Adds professional typography and spacing to your website
Expected output: A clean, readable website that looks modern
Now it looks like a real website - clean and readable
Personal tip: Don't change these CSS values yet. I picked them because they work on every screen size. Experiment later.
Step 4: Add Your Photo and Links
The problem: Static websites without images or working links feel incomplete.
My solution: Add a profile photo and make your contact links clickable.
Time this saves: Makes your website actually functional for networking
Add Profile Photo
First, save a photo as profile.jpg in the same folder as your HTML file.
<!DOCTYPE html>
<html>
<head>
<title>John Smith - Web Developer</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 600px;
margin: 0 auto;
padding: 20px;
line-height: 1.6;
}
h1 {
color: #333;
border-bottom: 2px solid #333;
}
h2 {
color: #666;
}
p {
margin-bottom: 15px;
}
.profile-photo {
width: 200px;
height: 200px;
border-radius: 50%;
object-fit: cover;
margin: 20px 0;
}
a {
color: #0066cc;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<h1>Hi, I'm John Smith</h1>
<img src="profile.jpg" alt="John Smith's profile photo" class="profile-photo">
<p>I'm learning web development and this is my first website.</p>
<h2>About Me</h2>
<p>I love solving problems and building things. Currently learning HTML, CSS, and JavaScript.</p>
<h2>Contact Me</h2>
<p>Email: <a href="mailto:john@example.com">john@example.com</a></p>
<p>LinkedIn: <a href="https://linkedin.com/in/johnsmith" target="_blank">linkedin.com/in/johnsmith</a></p>
</body>
</html>
What this does: Adds a circular profile photo and clickable contact links
Expected output: A complete personal website with photo and working links
Your finished website - professional and fully functional
Personal tip: The target="_blank" makes external links open in new tabs. I always do this so people don't navigate away from my site.
Step 5: Test Everything Works
The problem: Your website might work on your computer but fail elsewhere.
My solution: Test the basics before sharing with anyone.
Time this saves: Prevents embarrassing broken links or missing images
Test Checklist
- Refresh your browser - does everything still display?
- Click your email link - does it open your email app?
- Click your LinkedIn link - does it open LinkedIn in a new tab?
- Check your photo - is it displaying and circular?
Testing your links and images in Chrome
Personal tip: Press F12 in Chrome to open Developer Tools. If you see red errors, something's broken. Most common issue: wrong file names.
What You Just Built
You created a complete personal website with professional styling, working contact links, and your photo. It runs in any web browser and showcases your information clearly.
Key Takeaways (Save These)
- HTML is forgiving: You literally cannot break your computer. Experiment freely.
- Start simple: Basic websites work better than complex broken ones. I still use this exact structure for quick projects.
- File names matter:
index.htmlmust be exact.profile.jpgmust match your image name exactly.
Your Next Steps
Pick one based on your comfort level:
- Beginner: Learn CSS basics to customize colors and fonts
- Intermediate: Add more pages and navigation between them
- Advanced: Deploy your website online so others can visit it
Tools I Actually Use
- VS Code: Free, catches typos, makes coding easier. Download at code.visualstudio.com
- Chrome DevTools: Built into Chrome, press F12 to debug issues
- W3Schools HTML Reference: w3schools.com/html - best place to look up HTML tags when you forget
Personal tip: Don't install 10 different tools yet. Master HTML first, then add complexity. I wasted months tool-shopping instead of building websites.