---
title: "Supported features"
description: "See which document features are supported across import, editor rendering, and export in the Tiptap conversion pipeline."
canonical_url: "https://tiptap-docs.lin52025i.qzz.io/conversion/getting-started/feature-support-matrix"
---

# Supported features

See which document features are supported across import, editor rendering, and export in the Tiptap conversion pipeline.

The tables below show how each document feature behaves across the three stages of the conversion pipeline:

1. **Import** converts DOCX content into Tiptap JSON.
2. **Editor** renders that JSON in the browser. Each node and mark type requires a matching Tiptap extension to display correctly.
3. **Export** converts the editor's content back into a DOCX file.

A feature can be supported at one stage and unsupported at another. For example, tab characters are imported and rendered in the editor, but the export extension does not yet write them back to DOCX.

Import and export each have two integration paths: an [editor extension](https://tiptap-docs.lin52025i.qzz.io/conversion/import/docx/editor-extension.md) and a [REST API](https://tiptap-docs.lin52025i.qzz.io/conversion/import/docx/rest-api.md). For most features, both paths produce identical results. Where they differ (footnotes, headers/footers, export customization), the relevant install pages document the specifics.

> **Editor column assumes ConvertKit:**
>
> The editor column in the tables below assumes the recommended setup: [ConvertKit](https://tiptap-docs.lin52025i.qzz.io/conversion/import/docx/convertkit.md) installed as the editor's extension kit. ConvertKit is a superset of the basics (StarterKit-equivalent nodes plus DOCX-aware overrides for Paragraph, Heading, Image, and the table stack). Without ConvertKit, paragraph spacing and indentation, image cropping, and table cell formatting are extracted into the JSON but dropped by the editor's schema. Where editor support depends on something else (Pages, a custom extension), the row notes the dependency.

## Other formats

These tables describe the DOCX pipeline specifically because DOCX is the reference format that all other exports build on. [PDF](https://tiptap-docs.lin52025i.qzz.io/conversion/export/pdf/editor-extension.md), [ODT](https://tiptap-docs.lin52025i.qzz.io/conversion/export/odt/editor-extension.md), [EPUB](https://tiptap-docs.lin52025i.qzz.io/conversion/export/epub/editor-extension.md), and [DOC](https://tiptap-docs.lin52025i.qzz.io/conversion/export/doc/editor-extension.md) each work by first generating a DOCX file and then converting it to the target format via a cloud service. Features that work in DOCX export generally carry through, though each format may introduce its own limitations. See the respective format pages for details.

[Markdown](https://tiptap-docs.lin52025i.qzz.io/conversion/export/markdown/editor-extension.md) follows a completely separate conversion path and supports a different set of features. It is documented on its own page.

## Inline formatting

| Feature                                                                                                                            | Import | Editor | Export |
| ---------------------------------------------------------------------------------------------------------------------------------- | ------ | ------ | ------ |
| [Bold](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/bold-italic-underline-strike.md)          | ✓      | ✓      | ✓      |
| [Italic](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/bold-italic-underline-strike.md)        | ✓      | ✓      | ✓      |
| [Underline](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/bold-italic-underline-strike.md)     | ✓      | ✓      | ✓      |
| [Strikethrough](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/bold-italic-underline-strike.md) | ✓      | ✓      | ✓      |
| [Subscript](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/subscript-superscript.md)            | ✓      | ✓      | ✓      |
| [Superscript](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/subscript-superscript.md)          | ✓      | ✓      | ✓      |
| Inline code                                                                                                                        | ✓      | ✓      | ✓      |
| [Text color](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/text-color-highlight.md)            | ✓      | ✓      | ✓      |
| [Highlight](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/text-color-highlight.md)             | ✓      | ✓      | ✓      |
| [Font family](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/font-family-size.md)               | ✓      | ✓      | ✓      |
| [Font size](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/font-family-size.md)                 | ✓      | ✓      | ✓      |
| [Hyperlinks](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/hyperlinks-bookmarks.md)           | ✓      | ✓      | ✓      |
| [Tabs](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/tabs.md)                                  | \~     | \~     | ✕      |
| [Internal bookmarks](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/hyperlinks-bookmarks.md)   | ✓      | ✓      | ✓      |

## Block elements

| Feature                                                                                                                  | Import | Editor | Export |
| ------------------------------------------------------------------------------------------------------------------------ | ------ | ------ | ------ |
| [Paragraphs](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/paragraphs.md)            | ✓      | ✓      | ✓      |
| [Headings 1 to 6](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/headings.md)         | ✓      | ✓      | ✓      |
| [Blockquotes](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/block-elements.md)      | ✓      | ✓      | ✓      |
| [Code blocks](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/block-elements.md)      | ✕      | ✓      | ✕      |
| [Horizontal rules](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/block-elements.md) | ✓      | ✓      | ✓      |
| [Hard breaks](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/block-elements.md)      | ✓      | ✓      | ✓      |

## Text and paragraph styling

The import service extracts paragraph-level styling attributes like spacing, indentation, and line height from the DOCX source. ConvertKit's custom Paragraph and Heading render them automatically. For typography from the document's named-style catalog (Heading 1, Normal, Quote, etc.), use the experimental [CSS injection](https://tiptap-docs.lin52025i.qzz.io/conversion/import/docx/css-injection.md) feature, which extracts the catalog as scoped CSS rules.

| Feature                                                                                                                                 | Import | Editor | Export  |
| --------------------------------------------------------------------------------------------------------------------------------------- | ------ | ------ | ------- |
| [Text alignment](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/text-alignment.md)                   | ✓      | ✓      | ✓       |
| [Line spacing](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/paragraphs.md)                         | ✓      | ✓      | ✓\*\*\* |
| [Paragraph spacing](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/paragraphs.md)                    | ✓      | ✓      | ✓       |
| [Indentation](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/paragraphs.md)                          | ✓      | ✓      | ✓       |
| [Keep with next / keep lines together](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/paragraphs.md) | ✓      | ✓      | ✓       |
| [Letter spacing](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/font-family-size.md)                 | ✓      | ✕\*    | ✕       |
| [Paragraph borders](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/paragraphs.md)                    | ✕      | ✕      | ✕       |
| [Word styles](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/word-styles.md)                        | \~     | \~\*\* | \~      |

**\*** Letter spacing is extracted as `textStyle.letterSpacing` but no bundled extension renders it. To render imported letter spacing, [extend TextStyle](https://tiptap-docs.lin52025i.qzz.io/conversion/getting-started/guides/styling-converted-content.md#extending-extensions-for-unsupported-attributes).
**\*\*** Word's named-style typography is not applied by default. Use [CSS injection](https://tiptap-docs.lin52025i.qzz.io/conversion/import/docx/css-injection.md) to extract it as scoped CSS.
**\*\*\*** Line spacing round-trips on export. A proportional value (a unitless multiple such as `1.5` or a percentage such as `150%`) is written as a relative line that scales with the font size; a fixed value carrying an absolute unit (`24px`, `18pt`, `1cm`) is written as an exact line height. Font-relative units such as `em` and `rem` are left to the document default.

## Lists

| Feature                                                                                                                     | Import | Editor | Export |
| --------------------------------------------------------------------------------------------------------------------------- | ------ | ------ | ------ |
| [Bullet lists](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/lists.md)                  | ✓      | ✓      | ✓      |
| [Ordered lists](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/lists.md)                 | ✓      | ✓      | ✓      |
| [Ordered list numbering format](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/lists.md) | \~     | ✓      | ✕      |
| [Nested lists](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/lists.md)                  | ✓      | ✓      | ✓      |
| [Task lists](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/lists.md)                    | ✕      | ✓      | ✕      |

## Tables

The cell- and row-level attributes (backgrounds, borders, vertical alignment, height) require ConvertKit's `ConvertTableKit`, which is included by default. With the standalone `@tiptap/extension-table`, these attributes are extracted into the JSON but dropped by the editor's schema. For paginated layout via the [Pages extension](https://tiptap-docs.lin52025i.qzz.io/pages/getting-started/overview.md), use [PagesTableKit](https://tiptap-docs.lin52025i.qzz.io/pages/guides/pages-tablekit.md) instead; its table extensions internally extend ConvertKit's, so the same DOCX cell attributes flow through. See the [tables content reference](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md) for the exact composition.

| Feature                                                                                                                  | Import | Editor | Export |
| ------------------------------------------------------------------------------------------------------------------------ | ------ | ------ | ------ |
| [Basic tables](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md)             | ✓      | ✓      | ✓      |
| [Merged cells (colspan)](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md)   | ✓      | ✓      | ✓      |
| [Merged cells (rowspan)](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md)   | ✓      | ✓      | ✓      |
| [Table header rows](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md)        | ✓      | ✓      | ✓‡     |
| [Table width](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md)              | ✓      | ✓      | ✓†     |
| [Column widths](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md)            | ✓      | ✓      | ✓      |
| [Table borders](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md)            | ✓      | ✓      | ✓      |
| [Cell backgrounds](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md)         | ✓      | ✓      | ✓      |
| [Cell borders](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md)             | ✓      | ✓      | ✓      |
| [Cell vertical alignment](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md)  | ✓      | ✓      | ✓      |
| [Row height](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md)               | ✓      | ✓      | ✓      |
| [Table-level cell margins](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/tables.md) | ✓      | ✓      | ✓      |

**†** A table with an explicit width keeps that fixed width. A table with no width set stays full width (fluid) and reflows to the page, rather than being locked to a fixed measurement.
**‡** Header rows export as Word's "Repeat as header row" only when `repeatTableHeaderRows` is on in the [editor extension](https://tiptap-docs.lin52025i.qzz.io/conversion/export/docx/editor-extension.md). It is off by default, and the REST API does not accept it.

## Media

| Feature                                                                                                                    | Import | Editor | Export |
| -------------------------------------------------------------------------------------------------------------------------- | ------ | ------ | ------ |
| [Inline images](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/images.md)              | ✓      | ✓      | ✓      |
| [Floating images](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/images.md)            | \~     | ✕      | ✕      |
| [Image dimensions](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/images.md)           | ✓      | ✓      | ✓      |
| [Image cropping](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/images.md)             | ✓      | \~\*   | ✕      |
| [Math and equations](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/math-equations.md) | ✕      | ✓      | ✓      |

**\*** ConvertKit's custom Image declares `cropTop`/`cropBottom`/`cropLeft`/`cropRight` and emits them as `data-crop-*` attributes. To produce a visual crop, add CSS that translates those data attributes into `clip-path` or `object-position`.

## Page layout

| Feature                                                                                                               | Import | Editor | Export |
| --------------------------------------------------------------------------------------------------------------------- | ------ | ------ | ------ |
| [Page breaks](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/page-layout/page-breaks.md)               | ✓      | \~     | ✓      |
| [Headers and footers](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/page-layout/headers-footers.md)   | ✓\*    | ✓      | ✓      |
| [Sections](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/page-layout/page-structure.md)               | \~     | ✕      | ✕      |
| [Page size and margins](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/page-layout/page-structure.md)  | ✕      | ✓      | ✓      |
| [Page numbers](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/page-layout/page-structure.md)           | \~\*\* | ✓      | ✓\*\*  |
| [Footnotes](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/footnotes-endnotes.md) | ✓\*    | ✕      | ✕      |
| [Endnotes](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/footnotes-endnotes.md)  | ✓\*    | ✕      | ✕      |
| [Comments](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/structures-and-media/comments.md)            | ✓      | ✓      | ✓      |

**\*** Import behavior differs between integration paths. The [REST API](https://tiptap-docs.lin52025i.qzz.io/conversion/import/docx/rest-api.md) returns footnotes, endnotes, and headers/footers as separate fields in the response. The [editor extension](https://tiptap-docs.lin52025i.qzz.io/conversion/import/docx/editor-extension.md) auto-applies headers and footers via the Pages extension but does not surface footnote or endnote data. See the install pages for details.
**\*\*** Word `PAGE` and `NUMPAGES` fields in headers/footers translate to canonical text tokens (`{page}` / `{numpages}`): auto-on with the Pages extension, opt-in elsewhere via the `placeholders` field. Other field codes (`DATE`, `AUTHOR`, `MERGEFIELD`) still import as their cached display value. On export, both the **editor extension** and the **REST API** emit `{page}` / `{total}` tokens in header/footer content as live `PAGE` / `NUMPAGES` fields. See [page-number fields](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/page-layout/page-structure.md#page-numbers).

> **Page layout requires the Pages extension:**
>
> Headers, footers, page breaks, and paginated layout all require the [Pages extension](https://tiptap-docs.lin52025i.qzz.io/pages/getting-started/overview.md) for editor rendering. Without it, these features have nowhere to render even if the conversion service produces them.

## Review and collaboration

| Feature                                                                                           | Import | Editor | Export |
| ------------------------------------------------------------------------------------------------- | ------ | ------ | ------ |
| [Tracked changes](https://tiptap-docs.lin52025i.qzz.io/conversion/import/docx/tracked-changes.md) | \~\*   | ✓\*    | \~\*   |

**\*** In `preserve` mode, insertions and deletions round-trip as suggestions. `accept` and `reject` instead apply or discard them during import, so nothing arrives as a suggestion. Editor rendering needs the [tracked changes extension](https://tiptap-docs.lin52025i.qzz.io/tracked-changes/getting-started/overview.md). Some kinds of revision are not carried yet, including tracked paragraph splits, formatting changes and moves on import, and formatting revisions and suggestions on images on export. In each case the content arrives, the record of the change does not. See [tracked changes on import](https://tiptap-docs.lin52025i.qzz.io/conversion/import/docx/tracked-changes.md) and [on export](https://tiptap-docs.lin52025i.qzz.io/conversion/export/docx/tracked-changes.md).

## Not supported

These features are not converted or have limited conversion during import.

| Feature                                     | Status                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Table of Contents                           | Imported as `tableOfContents` node (title and heading range). A [custom extension](https://tiptap-docs.lin52025i.qzz.io/editor/extensions/custom-extensions/extend-existing.md) is needed to render it in the editor. The existing [Table of Contents extension](https://tiptap-docs.lin52025i.qzz.io/editor/extensions/functionality/table-of-contents.md) is a headless utility for building sidebar navigation, not a document block renderer. Not exported.                                      |
| Text boxes                                  | Not converted. Content inside text boxes is not extracted.                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Shapes, SmartArt, WordArt                   | Not converted. These elements are not extracted during import.                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Field codes (DATE, AUTHOR, MERGEFIELD)      | The cached display value is preserved as plain text (e.g., a DATE field showing "April 10, 2026" imports as the text "April 10, 2026"). The field code itself is not converted, so the value becomes static and will not update.                                                                                                                                                                                                                                                                     |
| Page-number field codes (PAGE, NUMPAGES)    | Translated to canonical text tokens (`{page}` for `PAGE`, `{numpages}` for `NUMPAGES`) when `placeholders` is enabled (default-on with the Pages extension; opt-in via the `placeholders={}` form field on the REST API). The Pages extension renders `{page}` natively; map `{numpages}` via `Pages.configure({ placeholders: { total: 'numpages' } })` to render it live. With `placeholders: false` (or omitted on the REST API), the cached display value imports as plain text.                 |
| Document metadata (author, title, keywords) | Not converted. Metadata is not included in the JSON output.                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Form fields and content controls            | Partially converted. Inline and block-level structured document tags (SDTs) keep their content, but the control metadata is discarded. Checkbox content controls are the exception. With task-list import on, a list item that starts with one imports as a task item with its ticked state, and task items export as checkbox content controls. See [Task lists](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/task-lists.md).                                  |
| Hidden text                                 | Text runs marked as hidden (`w:vanish`) are excluded from the import output.                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Right-to-left text direction                | DOCX `<w:bidi>` (paragraph direction) and `<w:rtl>` (run direction) are not parsed on import or written on export. Documents authored in Arabic, Hebrew, Persian, Urdu, and other RTL languages render with the editor's CSS direction (LTR by default). Set `dir="rtl"` on the editor root or detect language at the application level to handle this today. See [Text alignment](https://tiptap-docs.lin52025i.qzz.io/conversion/content-types/text-and-formatting/text-alignment.md) for details. |
