7 HTML Starter Templates


Whether you’re a seasoned developer looking to jumpstart your next project or a beginner taking your first steps into web development, having a solid HTML foundation can save you hours of setup time. The right starter template provides essential structure, modern best practices, and clean code that you can build upon immediately.

Below are seven carefully curated HTML starter templates that cover different use cases and complexity levels. From a minimal boilerplate perfect for quick prototypes to a dashboard/admin panel and everything in between. These templates will help you skip the repetitive setup work and dive straight into creating something amazing.

Each template includes modern HTML5 semantics, responsive design considerations, and thoughtful organization that follows current web standards.

In particular:

  • They all use UTF-8 encoding and the HTML5 doctype.
  • They include the essential viewport meta tag for responsiveness.
  • They link to a placeholder style.css and script.js. You’ll need to create these files.
  • Comments are included to guide you.
  • Replace placeholder content (like “Page Title”, “Your Company”, etc.) with your actual content.

1. Ultra-Basic HTML5 Boilerplate

Use Case: The absolute bare minimum for any HTML page. Good for quick experiments or when you want to build everything from total scratch.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="A brief description of your page content.">
    <title>Page Title</title>
    <!-- <link rel="icon" href="favicon.ico" type="image/x-icon"> -->
    <link rel="stylesheet" href="style.css">
</head>
<body>

    <header>
        <h1>My Awesome Website</h1>
    </header>

    <main>
        <p>Hello, world!</p>
    </main>

    <footer>
        <p>© <span id="currentYear"></span> Your Name/Company. All rights reserved.</p>
    </footer>

    <script>
        document.getElementById('currentYear').textContent = new Date().getFullYear();
    </script>
    <!-- <script src="script.js"></script> -->
</body>
</html>

2. Simple Content Page (Blog Post / Article / About Us)

Use Case: For pages focused on delivering textual and image content, like a blog post, an “About Us” page, or documentation.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Detailed article about a specific topic.">
    <title>Article Title - My Blog</title>
    <!-- <link rel="icon" href="favicon.ico" type="image/x-icon"> -->
    <link rel="stylesheet" href="style.css">
</head>
<body>

    <header>
        <div class="container">
            <a href="/" class="logo">My Blog/Site</a>
            <nav>
                <ul>
                    <li><a href="/">Home</a></li>
                    <li><a href="/about.html">About</a></li>
                    <li><a href="/contact.html">Contact</a></li>
                </ul>
            </nav>
        </div>
    </header>

    <main>
        <article class="container">
            <header class="article-header">
                <h1>Understanding Modern Web Development</h1>
                <p class="meta">Published on <time datetime="2023-10-27">October 27, 2023</time> by John Doe</p>
            </header>

            <figure class="featured-image">
                <img src="placeholder-image.jpg" alt="Descriptive alt text for the image">
                <figcaption>A caption for the featured image (optional).</figcaption>
            </figure>

            <section class="article-content">
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
                <h2>Subheading for a Section</h2>
                <p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
                <ul>
                    <li>List item one</li>
                    <li>List item two</li>
                    <li>List item three</li>
                </ul>
                <p>Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris.</p>
            </section>

            <footer class="article-footer">
                <p>Tags: <a href="#">Web Development</a>, <a href="#">HTML</a>, <a href="#">JavaScript</a></p>
            </footer>
        </article>
    </main>

    <footer>
        <div class="container">
            <p>© <span id="currentYear"></span> My Blog/Site. All rights reserved.</p>
        </div>
    </footer>

    <script>
        document.getElementById('currentYear').textContent = new Date().getFullYear();
    </script>
    <!-- <script src="script.js"></script> -->
</body>
</html>

3. Landing Page / Marketing Page (Hero + Features)

Use Case: For a product or service landing page, focusing on a call to action, key features, and benefits.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Promoting our amazing new product/service.">
    <title>Awesome Product - Change Your World!</title>
    <!-- <link rel="icon" href="favicon.ico" type="image/x-icon"> -->
    <link rel="stylesheet" href="style.css">
</head>
<body>

    <header class="site-header">
        <div class="container">
            <a href="/" class="logo">AwesomeProduct</a>
            <nav>
                <ul>
                    <li><a href="#features">Features</a></li>
                    <li><a href="#pricing">Pricing</a></li>
                    <li><a href="#contact">Contact</a></li>
                </ul>
            </nav>
        </div>
    </header>

    <main>
        <section id="hero" class="hero-section">
            <div class="container">
                <h1>The Future of [Your Niche] is Here!</h1>
                <p class="subtitle">Discover how AwesomeProduct can revolutionize the way you [solve a problem].</p>
                <a href="#signup" class="cta-button">Get Started Now</a>
            </div>
        </section>

        <section id="features" class="features-section">
            <div class="container">
                <h2>Key Features</h2>
                <div class="features-grid">
                    <div class="feature-item">
                        <img src="icon-feature1.svg" alt="Feature 1 Icon" class="feature-icon">
                        <h3>Innovative Design</h3>
                        <p>Experience a sleek and intuitive interface.</p>
                    </div>
                    <div class="feature-item">
                        <img src="icon-feature2.svg" alt="Feature 2 Icon" class="feature-icon">
                        <h3>Blazing Fast</h3>
                        <p>Optimized for speed and performance.</p>
                    </div>
                    <div class="feature-item">
                        <img src="icon-feature3.svg" alt="Feature 3 Icon" class="feature-icon">
                        <h3>Secure & Reliable</h3>
                        <p>Your data is safe with our top-notch security.</p>
                    </div>
                </div>
            </div>
        </section>

        <section id="testimonials" class="testimonials-section">
            <div class="container">
                <h2>What Our Users Say</h2>
                <blockquote>
                    <p>"AwesomeProduct has changed my life! It's incredible."</p>
                    <footer>- Satisfied Customer</footer>
                </blockquote>
                <!-- Add more testimonials as needed -->
            </div>
        </section>

        <section id="cta-final" class="cta-final-section">
            <div class="container">
                <h2>Ready to Get Started?</h2>
                <p>Join thousands of happy users today.</p>
                <a href="#signup" class="cta-button">Sign Up for Free</a>
            </div>
        </section>
    </main>

    <footer class="site-footer">
        <div class="container">
            <p>© <span id="currentYear"></span> AwesomeProduct Inc. All rights reserved.</p>
            <p><a href="/privacy.html">Privacy Policy</a> | <a href="/terms.html">Terms of Service</a></p>
        </div>
    </footer>

    <script>
        document.getElementById('currentYear').textContent = new Date().getFullYear();
    </script>
    <!-- <script src="script.js"></script> -->
</body>
</html>

4. Portfolio / Gallery Page

Use Case: Showcasing visual work like photography, design projects, or art.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="A portfolio showcasing my creative work.">
    <title>My Portfolio - Jane Doe, Designer</title>
    <!-- <link rel="icon" href="favicon.ico" type="image/x-icon"> -->
    <link rel="stylesheet" href="style.css">
</head>
<body>

    <header>
        <div class="container">
            <h1>Jane Doe - Creative Portfolio</h1>
            <nav>
                <ul>
                    <li><a href="/">Home</a></li>
                    <li><a href="/about.html">About Me</a></li>
                    <li><a href="/contact.html">Contact</a></li>
                </ul>
            </nav>
        </div>
    </header>

    <main>
        <section id="gallery" class="container">
            <h2>My Work</h2>
            <div class="gallery-grid">
                <figure class="gallery-item">
                    <a href="project1-detail.html">
                        <img src="portfolio-thumb1.jpg" alt="Description of Project 1">
                        <figcaption>Project Alpha - Web Design</figcaption>
                    </a>
                </figure>
                <figure class="gallery-item">
                    <a href="project2-detail.html">
                        <img src="portfolio-thumb2.jpg" alt="Description of Project 2">
                        <figcaption>Project Beta - Illustration</figcaption>
                    </a>
                </figure>
                <figure class="gallery-item">
                    <a href="project3-detail.html">
                        <img src="portfolio-thumb3.jpg" alt="Description of Project 3">
                        <figcaption>Project Gamma - Branding</figcaption>
                    </a>
                </figure>
                <!-- Add more gallery items as needed -->
            </div>
        </section>
    </main>

    <footer>
        <div class="container">
            <p>© <span id="currentYear"></span> Jane Doe. All rights reserved.</p>
            <!-- Add social media links if desired -->
        </div>
    </footer>

    <script>
        document.getElementById('currentYear').textContent = new Date().getFullYear();
    </script>
    <!-- <script src="script.js"></script> -->
</body>
</html>

5. Basic Dashboard / Admin Panel Layout

Use Case: The structural shell for a web application’s backend or dashboard. Focuses on layout (sidebar, main content area).

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Admin Dashboard - AppName</title>
    <!-- <link rel="icon" href="favicon.ico" type="image/x-icon"> -->
    <link rel="stylesheet" href="style.css">
</head>
<body class="dashboard-layout">

    <aside class="sidebar">
        <div class="sidebar-header">
            <h2>AppName</h2>
        </div>
        <nav class="sidebar-nav">
            <ul>
                <li><a href="/dashboard" class="active">Dashboard</a></li>
                <li><a href="/users">Users</a></li>
                <li><a href="/products">Products</a></li>
                <li><a href="/settings">Settings</a></li>
                <li><a href="/logout">Logout</a></li>
            </ul>
        </nav>
    </aside>

    <div class="main-wrapper">
        <header class="top-bar">
            <div class="user-profile">
                <span>Welcome, AdminUser!</span>
                <!-- Add profile pic/dropdown here -->
            </div>
        </header>

        <main class="content-area">
            <div class="container-fluid"> <!-- Use container-fluid for full-width content -->
                <h1>Dashboard Overview</h1>
                <p>This is where your main dashboard content will go. Charts, stats, tables, etc.</p>
                <!-- Example content block -->
                <section class="data-widget">
                    <h2>Recent Activity</h2>
                    <p>No recent activity to display.</p>
                </section>
            </div>
        </main>

        <footer class="dashboard-footer">
            <p>© <span id="currentYear"></span> AppName. All rights reserved.</p>
        </footer>
    </div>

    <script>
        document.getElementById('currentYear').textContent = new Date().getFullYear();
    </script>
    <!-- <script src="script.js"></script> -->
</body>
</html>

6. Single Page Application (SPA) Shell

Use Case: For applications built with JavaScript frameworks (React, Vue, Angular, Svelte) where HTML is minimal and content is rendered dynamically.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="My Awesome Single Page Application.">
    <title>My SPA</title>
    <!-- <link rel="icon" href="favicon.ico" type="image/x-icon"> -->
    <!-- Frameworks often handle CSS injection, but a global style.css can be useful -->
    <link rel="stylesheet" href="style.css">
</head>
<body>

    <noscript>
        You need to enable JavaScript to run this app.
    </noscript>

    <div id="app">
        <!-- This is where your JavaScript framework will mount the application -->
        <!-- You can add a loading spinner or message here -->
        <p>Loading application...</p>
    </div>

    <!--
        JavaScript bundles are typically added here by your build process.
        For development, you might link directly:
        <script type="module" src="/src/main.js"></script> (Vite example)
        <script src="app.bundle.js"></script> (Webpack example)
    -->
    <script src="script.js"></script> <!-- Placeholder for your main JS bundle -->
</body>
</html>

7. Basic Form Page (Contact / Signup)

Use Case: A simple page primarily focused on a form, like a contact form or a basic signup form.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Contact us or sign up for our newsletter.">
    <title>Contact Us - MyWebsite</title>
    <!-- <link rel="icon" href="favicon.ico" type="image/x-icon"> -->
    <link rel="stylesheet" href="style.css">
</head>
<body>

    <header>
        <div class="container">
            <a href="/" class="logo">MyWebsite</a>
            <nav>
                <ul>
                    <li><a href="/">Home</a></li>
                    <li><a href="/about.html">About</a></li>
                    <li><a href="/contact.html" class="active">Contact</a></li>
                </ul>
            </nav>
        </div>
    </header>

    <main>
        <section id="contact-form-section" class="container">
            <h1>Get in Touch</h1>
            <p>We'd love to hear from you! Please fill out the form below.</p>

            <form action="/submit-form" method="POST" class="contact-form">
                <div class="form-group">
                    <label for="name">Full Name:</label>
                    <input type="text" id="name" name="name" required>
                </div>

                <div class="form-group">
                    <label for="email">Email Address:</label>
                    <input type="email" id="email" name="email" required>
                </div>

                <div class="form-group">
                    <label for="subject">Subject:</label>
                    <input type="text" id="subject" name="subject">
                </div>

                <div class="form-group">
                    <label for="message">Message:</label>
                    <textarea id="message" name="message" rows="5" required></textarea>
                </div>

                <div class="form-group">
                    <input type="checkbox" id="newsletter" name="newsletter" value="subscribe">
                    <label for="newsletter" class="inline-label">Subscribe to our newsletter</label>
                </div>

                <button type="submit" class="submit-button">Send Message</button>
            </form>
        </section>
    </main>

    <footer>
        <div class="container">
            <p>© <span id="currentYear"></span> MyWebsite. All rights reserved.</p>
        </div>
    </footer>

    <script>
        document.getElementById('currentYear').textContent = new Date().getFullYear();
    </script>
    <!-- <script src="script.js"></script> -->
</body>
</html>

Remember to create corresponding style.css and script.js files in the same directory (or adjust paths) for these templates to link correctly. These templates provide a solid structural foundation for various web projects.