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). Search API HTML Element Filter 1.0.7 Minor update available for module search_api_html_element_filter (1.0.7). 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). 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.

CKEditor5 Table Fix

38 sites Security covered
View on drupal.org

This plugin preserves full HTML table markup, including elements like `tfoot`, `th scope`, and nested tags, that are often stripped by CKEditor 5. It is particularly useful for sites upgrading from CKEditor 4 or those needing to maintain semantic and accessible table structures.

CKEditor5 Table Fix

A lightweight plugin that restores full HTML table markup support (like <tfoot>, <th scope>, and nested tags such as the table caption element in CKEditor5 for Drupal 10 and 11. Especially useful after upgrading from CKEditor4.

Features

  • Restore capability to handle otherwise stripped table elements and attributes in CKEditor5, such as:
    • <tfoot>
    • <th scope>
    • <caption>
    • <div>
    • <div> nested <dt>
    • <dt> nested <dd>
    • <dt> nested <dl>
    • <p>
    • <td> nested <ol> and <ul> elements
    • <ul> or <ol> nested <li> elements
    • <section> wrapping table element
    • <details> wrapping table element
    • See sample markup below for testing and verification purposes
  • Provides a faux CKEditor button for easy enablement
  • Works with Drupal 10/11 and any text format using CKEditor5
  • Designed for upgraded sites coming from CKEditor4 that need legacy table markup preserved

Use cases:

  • Government and enterprise sites with legacy or semantic HTML tables
  • WCAG-compliant data tables needing accessible markup
  • Any site where CKEditor 5 strips valid table structure and formatting

Post-Installation

  1. For detailed instructions review the README.md installation and configuration steps.
  2. Disable the core CKEditor 5 table plugin on your target text format(s). You can do this under Configuration → Content Authoring → Text formats and editors.
  3. Enable the CKEditor5 Table Fix plugin on the same text format. Look for the “Table Fix Dummy” button and add it to the toolbar.
  4. Save your text format — the plugin is now active.

No visible button will appear in the CKEditor UI, but the plugin will be loaded silently in the background to preserve your full table markup.

Sample table markup to test

<section>
    <!-- or <details> -->
        <table class="table table-bordered table-responsive">
            <caption class="text-left"><span class="small lead">For example, your year productive capacity is 601 acres of grain</span></caption>
            <thead>
                <tr>
                    <th scope="row">
                        test
                    </th>
                </tr>
                <tr>
                    <td>
                        &nbsp;
                    </td>
                    <th class="text-right" scope="col">
                        Reference year 0
                    </th>
                    <th class="text-right" scope="col">
                        Reference year 1
                    </th>
                    <th class="text-right" scope="col">
                        Reference year 2
                    </th>
                </tr>
            </thead>
            <tbody>
                <tr class="text-right">
                    <th scope="row">
                        Grain (acres)
                    </th>
                    <td>
                        601
                    </td>
                    <td>
                        601
                    </td>
                    <td>
                        601
                    </td>
                </tr>
                <tr class="text-right">
                    <th scope="row">
                        Industry Benchmark
                    </th>
                    <td>
                        $130.12
                    </td>
                    <td>
                        $79.11
                    </td>
                    <td>
                        $124.78
                    </td>
                </tr>
                <tr class="text-right">
                    <th scope="row">
                        Total
                    </th>
                    <td>
                        $78,074
                    </td>
                    <td>
                        $47,460
                    </td>
                    <td>
                        $74,870
                    </td>
                </tr>
            </tbody>
            <tfoot>
            <tr>
                <td colspan="4">
                    <div class="wb-fnote">
                        <dl>
                            <dt>
                                Note 1
                            </dt>
                            <dd id="table1-fn-1">
                                <p>
                                    The sum of values may not add up to totals as a result of rounding.
                                </p>
                                <p class="fn-rtn">
                                    <a href="#table1-fn-1-rf"><span class="wb-inv">Return to note </span>1<span class="wb-inv"> referrer</span></a>
                                </p>
                            </dd>
                        </dl>
                    </div>
                    <p class="p-element-test">
                        test p element
                    </p>
                    Provide the name of the person in your organization
                    <ol class="list-unstyled">
                        <li>
                            Average ($78,074 + $47,460 + $74,874) ÷ 3 = $66,802
                        </li>
                        <li>
                            Multiplied by 0.44% = $298
                        </li>
                        <li>
                            Multiplied by 71% = $211
                        </li>
                        <li>
                            Total: fee amount = $211
                        </li>
                        <li>
                            Add: administrative cost share = $56
                        </li>
                        <li>
                            Total: fee plus administrative cost share = $267
                        </li>
                    </ol>
                </td>
            </tr>
            </tfoot>
    </table>
<!-- or </details> -->
</section>

Additional Requirements

None. This module only requires Drupal core CKEditor 5 support and does not depend on contrib modules.

Supporting this Module

This module was created and maintained by Cinder Systems.

Activity

Total releases
11
First release
May 2025
Latest release
6 months ago
Releases (12 mo)
7 ▲ from 4
Maintenance
Slowing

Release Timeline

Releases

Version Type Release date
1.0.9 Stable Jan 8, 2026
1.0.8 Stable Nov 24, 2025
1.0.7 Stable Nov 24, 2025
1.0.6 Stable Nov 19, 2025
1.0.5 Stable Nov 19, 2025
1.0.4 Stable Nov 19, 2025
1.0.3 Stable Nov 18, 2025
1.0.2 Stable Jun 5, 2025
1.0.1 Stable May 14, 2025
1.0.0 Stable May 13, 2025
1.0.x-dev Dev May 13, 2025