Drupal is a registered trademark of Dries Buytaert
Protected Pages 3.0.0 Major update available for module protected_pages (3.0.0). Commerce Core 3.3.8 Minor update available for module commerce (3.3.8). Layout Builder Reorder 2.0.1 Minor update available for module layout_builder_reorder (2.0.1). Ban 1.1.0 Minor update available for module ban (1.1.0). Field Formatter Range 2.0.0 Major update available for module field_formatter_range (2.0.0). Field Formatter Range 8.x-1.8 Minor update available for module field_formatter_range (8.x-1.8). UI Patterns (SDC in Drupal UI) 2.0.18 Minor update available for module ui_patterns (2.0.18). Varbase FAQs 9.2.1 Minor update available for module varbase_faqs (9.2.1). Search API Solr 4.3.11 Module search_api_solr updated after 14 months of inactivity (4.3.11). Provus Mega Menu Module provus_mega_menu crossed 1,000 active installs.

This module automatically adds the `scope` attribute to table header cells (`<th>`) for improved accessibility. It also converts empty header cells into data cells.

In a table, the scope attribute indicates the direction and range of data cells covered by <th> elements. This module provides functionality to automatically set the scope attribute for these table header cells.

Features

The Table Header Scope Attribute module provides text format filters that process <table> elements to improve accessibility:

  1. Set scope attribute for table headers: Automatically sets the correct scope attribute on <th> elements based on their position in the table.
  2. Transform empty table header to table data: Converts empty <th> elements into <td> elements, as empty headers provide no semantic value.

For example, the following table:

<table>
  <thead>
    <tr>
      <th></th>
      <th>Column header 1</th>
      <th>Column header 2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>Row header 1</th>
      <td>Value A</td>
      <td>Value B</td>
    </tr>
    <tr>
      <th>Row header 2</th>
      <td>Value C</td>
      <td>Value D</td>
    </tr>
  </tbody>
</table>

Will be transformed into:

<table>
  <thead>
    <tr>
      <td></td>
      <th scope="col">Column header 1</th>
      <th scope="col">Column header 2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Row header 1</th>
      <td>Value A</td>
      <td>Value B</td>
    </tr>
    <tr>
      <th scope="row">Row header 2</th>
      <td>Value C</td>
      <td>Value D</td>
    </tr>
  </tbody>
</table>

Post-Installation

After installing this module, you can enable its functionality:

  1. Go to Administration » Configuration » Content authoring » Text formats and editors
  2. Edit a text format, for example, "Basic HTML"
  3. Enable both filters:
    • "Set scope attribute for table headers"
    • "Transform empty table header to table data"
  4. Ensure the filters are ordered correctly:
    • Set scope attribute for table headers" must come before "Transform empty table header to table data"
    • Both filters should be below the "Limit allowed HTML tags and correct faulty HTML" filter

Assuming the filters are enabled for a text format that can be used on, e.g., a basic page (node). Create or edit a basic page, then add a table. Indicate the <th> elements in the <table> and save the node. When viewing the (source of the) basic page, the scope attributes are correctly set to the <th> tags.

Activity

Total releases
4
First release
Sep 2025
Latest release
8 months ago
Releases (12 mo)
4 ▲ from 0
Maintenance
Slowing

Release Timeline

Releases

Version Type Release date
2.0.1 Stable Nov 6, 2025
2.0.0 Stable Sep 11, 2025
2.x-dev Dev Sep 10, 2025
1.0.1 Stable Sep 10, 2025