How to create a timeline in HTML

Timelines are a great way to visually represent a sequence of events or milestones. They can be used in various contexts, such as project timelines, historical timelines, or personal achievements. With HTML and CSS, we can easily create and style a timeline to make it visually appealing and informative.

Let's start creating the timeline in small steps.

Step 1: Set up the HTML structure

To begin, create a new HTML file and define the basic structure. Start with the HTML doctype declaration (<!DOCTYPE html>) followed by the opening and closing <html> tags. Inside the <html> tags, include the <head> and <body> sections.

<!DOCTYPE html>
<html>
<head>
<!-- Metadata (data about data) will be placed here-->
</head>
<body>
<!-- Main content will be placed here -->
</body>
</html>

Step 2: Link CSS style sheet

In the <head> section of your HTML file, link an external CSS style sheet using the <link> tag. This CSS file will contain the necessary styles to design and format your timeline. Alternatively, you can include inline CSS within your HTML file.

<head>
<title>Timeline</title>
<link rel="stylesheet" href="styles.css">
</head>

Step 3: Create a container for the timeline

Within the <body> section, create a <div> element that will serve as the container for your timeline. Give it an appropriate ID or class for easier styling and manipulation. This container will hold all the individual events and timeline elements.

<body>
<div class="timeline">
<!-- Container will hold the timeline events -->
</div>
</body>

Step 4: Add timeline events

Inside the timeline container <div>, create separate <div> elements for each event you want to display. Assign a class or ID to each event for styling purposes. You can also include relevant content such as dates, titles, descriptions, or images within each event <div>.

<div class="timeline">
<div class="timeline-item">
<div class="timeline-content">
<div class="timeline-date">2022</div>
<div class="timeline-description">Event 1</div>
</div>
</div>
<div class="timeline-item">
<div class="timeline-content">
<div class="timeline-date">2023</div>
<div class="timeline-description">Event 2</div>
</div>
</div>
<div class="timeline-item">
<div class="timeline-content">
<div class="timeline-date">2024</div>
<div class="timeline-description">Event 3</div>
</div>
</div>
<!-- Add more events if needed -->
</div>

Step 5: Style the timeline

Apply the .timeline class to a <div> element to wrap the entire timeline. Set the position, maximum width, margin, and padding using .timeline

.timeline {
position: relative;
max-width: 800px;
margin: 0 auto;
padding: 40px 20px;
}

Create a vertical line spanning the height of the timeline using the .timeline::after selector. Position the line in the middle (left: 50%;) and give it a width. Style the line with a background color.

.timeline::after {
content: '';
position: absolute;
width: 2px;
background-color: #000;
top: 0;
bottom: 0;
left: 50%;
margin-left: -1px;
}

Apply the .timeline-item class to individual timeline items represented by <div> elements. Set the position to relative and add a bottom margin for spacing between the items. Create a circular marker for each timeline item using the .timeline-item::after selector. Set the position to absolute and position the marker at the center horizontally (left: 50%) and at the top vertically (top: 0). Style the marker with a background color and a border-radius to make it circular.

.timeline-item {
position: relative;
margin-bottom: 50px;
}
.timeline-item::after {
content: '';
position: absolute;
width: 20px;
height: 20px;
background-color: #000;
border-radius: 50%;
top: 0;
left: 50%;
margin-left: -10px;
}

Position the content of each timeline item using the .timeline-item.left .timeline-content and .timeline-item.right .timeline-content selectors. Differentiate the alignment based on whether the timeline item is on the left or right side by adjusting the left property.

.timeline-item.left .timeline-content {
left: 70%;
}
.timeline-item.right .timeline-content {
left: 20%;
}

In order to style the content of timeline items, apply the following properties.

  • For the content contained within each timeline item, use .timeline-content to set its position to relative and create a left margin. This will ensure proper spacing between the marker and the content.

  • To emphasize the date within each timeline item, use .timeline-date and make the font-weight bold, and add a bottom margin to provide spacing between the date and other elements.

  • For the description within each timeline item, add a bottom margin of 10 pixels to ensure proper spacing below the description using .timeline-description.

.timeline-content {
position: relative;
left: 30px;
}
.timeline-date {
font-weight: bold;
margin-bottom: 10px;
}
.timeline-description {
margin-bottom: 10px;
}

Step 6: Run Code

Place the code in appropriate files and open the HTML file in a web browser. The timeline will be displayed with the styles specified in the CSS file. You can make further adjustments to the content, appearance, and layout of the timeline by modifying the code.

HTML and CSS code to create a timeline

Free Resources

Copyright ©2025 Educative, Inc. All rights reserved