Can different HTML elements have the same ID?

No, different HTML elements cannot have the same ID. The ID attribute must be unique across the entire HTML document. According to the HTML specification, each ID value must identify exactly one element within the document.

The uniqueness requirement exists because IDs serve as unique identifiers for CSS styling, JavaScript manipulation, and anchor linking. When multiple elements share the same ID, browsers and scripts cannot reliably determine which element to target, leading to unpredictable behavior.

Why IDs Must Be Unique

Here are the key reasons why HTML IDs must remain unique

  • CSS Targeting CSS selectors using #idName expect to match exactly one element. Duplicate IDs create ambiguity about which element should receive the styling.

  • JavaScript Access Methods like document.getElementById() return only the first matching element, ignoring subsequent duplicates.

  • Anchor Navigation URLs with fragment identifiers (e.g., page.html#section1) navigate to the first element with that ID.

  • Form Labels The for attribute in labels references form elements by their unique ID.

Syntax

The correct syntax for using unique ID attributes

<element1 id="uniqueId1">Content</element1>
<element2 id="uniqueId2">Content</element2>
<element3 id="uniqueId3">Content</element3>

Each ID value must be distinct within the document, while the same ID cannot be repeated on different elements.

Using Unique ID Attributes

Example

Following example demonstrates proper usage of unique ID attributes with CSS styling

<!DOCTYPE html>
<html>
<head>
   <title>Unique ID Example</title>
   <style>
      #myHeader {
         border: 3px solid violet;
         background-color: lightblue;
         padding: 20px;
         text-align: center;
         color: darkblue;
      }
      #myParagraph {
         color: green;
         font-size: 16px;
         margin: 20px 0;
      }
   </style>
</head>
<body style="font-family: Arial, sans-serif;">
   <h1 id="myHeader">Heading One</h1>
   <p id="myParagraph">This is a paragraph with a unique ID.</p>
</body>
</html>

The output shows both elements styled correctly with their unique IDs

Heading One                          (centered, violet border, light blue background)
This is a paragraph with a unique ID. (green text)

Multiple Unique IDs Layout

Example

Following example demonstrates a layout using four different unique IDs for positioning

<!DOCTYPE html>
<html>
<head>
   <title>Multiple Unique IDs</title>
   <style>
      #container {
         width: 100%;
         font-size: 14px;
         text-align: center;
         overflow: hidden;
      }
      #left {
         float: left;
         width: 150px;
         border: 2px solid green;
         padding: 10px;
         margin: 5px;
      }
      #right {
         float: right;
         width: 150px;
         border: 2px solid orange;
         padding: 10px;
         margin: 5px;
      }
      #center {
         margin: 5px auto;
         width: 150px;
         border: 2px solid red;
         padding: 10px;
      }
   </style>
</head>
<body style="font-family: Arial, sans-serif;">
   <div id="container">
      <div id="left">
         <h3>Left Section</h3>
         <p>Content on the left</p>
      </div>
      <div id="right">
         <h3>Right Section</h3>
         <p>Content on the right</p>
      </div>
      <div id="center">
         <h3>Center Section</h3>
         <p>Content in the center</p>
      </div>
   </div>
</body>
</html>

Each div has a unique ID that allows specific CSS styling for layout positioning

[Left Section]     [Center Section]     [Right Section]
Content on left    Content in center    Content on right
(green border)     (red border)         (orange border)

What Happens with Duplicate IDs

While browsers may not show visible errors for duplicate IDs, several problems occur

  • JavaScript Issues getElementById() returns only the first element with that ID, making other elements inaccessible.

  • CSS Confusion All elements with the same ID receive the same styling, but this behavior is unreliable across browsers.

  • Accessibility Problems Screen readers and other assistive technologies expect unique IDs for proper navigation.

  • HTML Validation Errors HTML validators report duplicate IDs as errors that need correction.

Example JavaScript with Unique IDs

Following example shows how JavaScript correctly accesses elements with unique IDs

<!DOCTYPE html>
<html>
<head>
   <title>JavaScript with Unique IDs</title>
</head>
<body style="font-family: Arial, sans-serif; padding: 20px;">
   <h2 id="heading1">Original Heading 1</h2>
   <h2 id="heading2">Original Heading 2</h2>
   <button onclick="changeContent()">Change Content</button>
   <script>
      function changeContent() {
         document.getElementById("heading1").innerHTML = "Modified Heading 1";
         document.getElementById("heading2").innerHTML = "Modified Heading 2";
      }
   </script>
</body>
</html>

With unique IDs, JavaScript can successfully target and modify each element individually

Before click: Original Heading 1, Original Heading 2
After click:  Modified Heading 1, Modified Heading 2
ID Uniqueness Rule ? CORRECT <h1 id="header">Title</h1> <p id="intro">Text</p> <div id="content">...</div> Each ID is unique ? INCORRECT <h1 id="main">Title</h1> <p id="main">Text</p> <div id="main">...</div> Duplicate IDs

Alternative Solutions

When you need to style or target multiple elements similarly, use these alternatives instead of duplicate IDs

Approach Usage Example
Class Attribute Multiple elements can share the same class <div class="highlight">
Element Selector Target all elements of the same type h2 { color: blue; }
Data Attributes Custom attributes for JavaScript targeting <div data-role="button">
getElementsByClassName JavaScript method to select multiple elements document.getElementsByClassName("menu")

Conclusion

HTML elements cannot share the same ID because IDs must be unique within each document. This uniqueness ensures reliable CSS styling, JavaScript manipulation, and proper accessibility. For targeting multiple elements, use class attributes or other selectors instead of duplicate IDs.

Updated on: 2026-03-16T21:38:54+05:30

594 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements