Drupal is a registered trademark of Dries Buytaert
drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

ckeditor5_table_fix

37 sites Security covered
View on drupal.org

CKEditor5 Table Fix

A lightweight plugin that restores full HTML table markup support (like <tfoot>, <th scope>, and nested tags) 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
3 months ago
Release cadence
24 days
Stability
91% stable

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