@m2d/table 
@m2d/table: Markdown Table formatting plugin for
@m2d/core. Renders rich, customizable Word tables with column alignment, borders, cell shading, and repeating headers.
Features
- Native Word Tables: Converts Markdown GFM tables into clean
docx.Tableelements with authentic Word OpenXML borders and paddings. - Automatic Column Alignment: Honors Markdown column alignments (
left,center,right) with fallback defaults. - Rich Cell Styling: Style headers and data cells with background fills (
shading), custom typography (fonts, sizes, colors), and paragraph spacing via thedataoption. - Multi-Page Header Repetition: Automatically repeats header rows across page breaks (
tableHeader: true). - Block Content in Cells: Seamlessly accommodates nested paragraphs, lists, code snippets, and blockquotes inside table cells (ideal when paired with
@m2d/html).
Installation
This package (@mdast2docx/table) is an official alias of @m2d/table.
Why does this exist?
We provide this package to offer shorter import paths and improved discoverability. While both packages provide identical functionality, @m2d/table is the primary source of truth.
Which one should I use?
- Use @mdast2docx/table if you prefer the shorter name or specific branding or ESM Only.
- Use @m2d/table for the most stable long-term reference and standard alignment.
| Feature | @m2d/table | @mdast2docx/table |
|---|---|---|
| Source Code | Primary | Proxy |
| Updates | Immediate | Synchronized (Immediately) |
| Bundle Size | 100% | 100% (Zero overhead) |
| Format | ESM + CJS | ESM Only |
| Maintenance | Primary | Proxy (inherits) |
| Security | Primary | Proxy (inherits) |
Maintenance & Support
Security: Security audits are performed on the canonical package; this alias inherits all security patches automatically.
$ pnpm add @m2d/table @m2d/core docx
or
$ npm install @m2d/table @m2d/core docx
or
$ yarn add @m2d/table @m2d/core docx
Quick Start
import { toDocx } from "@m2d/core";
import { tablePlugin } from "@m2d/table";
import remarkGfm from "remark-gfm";
import remarkParse from "remark-parse";
import { unified } from "unified";
const markdown = `
# Quarterly Summary
| Quarter | Revenue | Growth | Status |
| :------ | :-----: | -----: | :----: |
| Q1 | $1.2M | +12% | Active |
| Q2 | $1.5M | +25% | Active |
| Q3 | $1.8M | +20% | Active |
`;
const mdast = unified().use(remarkParse).use(remarkGfm).parse(markdown);
const docxBlob = await toDocx(mdast, {}, {
plugins: [tablePlugin()],
});
Plugin Options
import { AlignmentType, ShadingType, VerticalAlignTable } from "docx";
tablePlugin({
// Table level properties (width, margins, borders)
tableProps: { ... },
// General row properties
rowProps: { cantSplit: true },
// First row (header) properties
firstRowProps: { tableHeader: true },
// Header cell styling
firstRowCellProps: {
shading: { type: ShadingType.SOLID, fill: "1E293B" },
data: { bold: true, color: "FFFFFF", alignment: AlignmentType.CENTER },
},
// Body cell styling
cellProps: {
data: { size: 20, font: "Segoe UI" },
},
// Alignment configuration
alignments: {
preferMdData: true,
defaultHorizontalAlign: AlignmentType.LEFT,
defaultVerticalAlign: VerticalAlignTable.CENTER,
},
});
Deep Dive Guides
- Table Styling & Layout Guide: Margins, border styles, widths, and repeating multi-page headers.
- Cell Formatting & Alignment Guide: Markdown alignment hierarchy, typography, cell shading, and block content in cells.
License
This library is licensed under the MIT open-source license.
with by Mayank Kumar Chaudhari
Keywords
table-plugintablesmdast-tablesmarkdown-tablesdocx-tablesmarkdown-to-docxmdast-to-docxmdastmarkdownpluginconverterdocxms-wordexportdocument-generatordocument-generationtext-processingremarkunifiedtypescriptopen-sourcecustomizableseamless-integrationmodernweb-developmentautomationgoogle-sheetsrich-textcompatibilityprogressivecutting-edgefrontendgenerative-aimd2docxmdast2docxm2dmayank1513