---
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.dev/docs/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.dev/docs/conversion/import/docx/editor-extension.md) and a [REST API](https://tiptap.dev/docs/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.dev/docs/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.dev/docs/conversion/export/pdf/editor-extension.md), [ODT](https://tiptap.dev/docs/conversion/export/odt/editor-extension.md), [EPUB](https://tiptap.dev/docs/conversion/export/epub/editor-extension.md), and [DOC](https://tiptap.dev/docs/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.dev/docs/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.dev/docs/conversion/content-types/text-and-formatting/bold-italic-underline-strike.md)          | ✓      | ✓      | ✓      |
| [Italic](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/bold-italic-underline-strike.md)        | ✓      | ✓      | ✓      |
| [Underline](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/bold-italic-underline-strike.md)     | ✓      | ✓      | ✓      |
| [Strikethrough](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/bold-italic-underline-strike.md) | ✓      | ✓      | ✓      |
| [Subscript](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/subscript-superscript.md)            | ✓      | ✓      | ✓      |
| [Superscript](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/subscript-superscript.md)          | ✓      | ✓      | ✓      |
| Inline code                                                                                                           | ✓      | ✓      | ✓      |
| [Text color](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/text-color-highlight.md)            | ✓      | ✓      | ✓      |
| [Highlight](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/text-color-highlight.md)             | ✓      | ✓      | ✓      |
| [Font family](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/font-family-size.md)               | ✓      | ✓      | ✓      |
| [Font size](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/font-family-size.md)                 | ✓      | ✓      | ✓      |
| [Hyperlinks](https://tiptap.dev/docs/conversion/content-types/structures-and-media/hyperlinks-bookmarks.md)           | ✓      | ✓      | ✓      |
| [Tabs](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/tabs.md)                                  | \~     | \~     | ✕      |
| [Internal bookmarks](https://tiptap.dev/docs/conversion/content-types/structures-and-media/hyperlinks-bookmarks.md)   | \~     | \~     | ✕      |

## Block elements

| Feature                                                                                                     | Import | Editor | Export |
| ----------------------------------------------------------------------------------------------------------- | ------ | ------ | ------ |
| [Paragraphs](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/paragraphs.md)            | ✓      | ✓      | ✓      |
| [Headings 1 to 6](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/headings.md)         | ✓      | ✓      | ✓      |
| [Blockquotes](https://tiptap.dev/docs/conversion/content-types/structures-and-media/block-elements.md)      | ✓      | ✓      | ✓      |
| [Code blocks](https://tiptap.dev/docs/conversion/content-types/structures-and-media/block-elements.md)      | ✕      | ✓      | ✕      |
| [Horizontal rules](https://tiptap.dev/docs/conversion/content-types/structures-and-media/block-elements.md) | ✓      | ✓      | ✓      |
| [Hard breaks](https://tiptap.dev/docs/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.dev/docs/conversion/import/docx/css-injection.md) feature, which extracts the catalog as scoped CSS rules.

| Feature                                                                                                    | Import | Editor | Export  |
| ---------------------------------------------------------------------------------------------------------- | ------ | ------ | ------- |
| [Text alignment](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/text-alignment.md)   | ✓      | ✓      | ✓       |
| [Line spacing](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/paragraphs.md)         | ✓      | ✓      | ✓\*\*\* |
| [Paragraph spacing](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/paragraphs.md)    | ✓      | ✓      | ✓       |
| [Indentation](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/paragraphs.md)          | ✓      | ✓      | ✓       |
| [Letter spacing](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/font-family-size.md) | ✓      | ✕\*    | ✕       |
| [Paragraph borders](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/paragraphs.md)    | ✕      | ✕      | ✕       |
| [Word styles](https://tiptap.dev/docs/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.dev/docs/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.dev/docs/conversion/import/docx/css-injection.md) to extract it as scoped CSS.
**\*\*\*** Only proportional line spacing round-trips on export: a unitless multiple such as `1.5` or a percentage such as `150%`. Fixed line heights carrying a unit (e.g. `24px`, `18pt`) have no proportional DOCX equivalent and are not preserved.

## Lists

| Feature                                                                                                        | Import | Editor | Export |
| -------------------------------------------------------------------------------------------------------------- | ------ | ------ | ------ |
| [Bullet lists](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/lists.md)                  | ✓      | ✓      | ✓      |
| [Ordered lists](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/lists.md)                 | ✓      | ✓      | ✓      |
| [Ordered list numbering format](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/lists.md) | \~     | ✓      | ✕      |
| [Nested lists](https://tiptap.dev/docs/conversion/content-types/text-and-formatting/lists.md)                  | ✓      | ✓      | ✓      |
| [Task lists](https://tiptap.dev/docs/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.dev/docs/pages/getting-started/overview.md), use [PagesTableKit](https://tiptap.dev/docs/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.dev/docs/conversion/content-types/structures-and-media/tables.md) for the exact composition.

| Feature                                                                                                    | Import | Editor | Export |
| ---------------------------------------------------------------------------------------------------------- | ------ | ------ | ------ |
| [Basic tables](https://tiptap.dev/docs/conversion/content-types/structures-and-media/tables.md)            | ✓      | ✓      | ✓      |
| [Merged cells (colspan)](https://tiptap.dev/docs/conversion/content-types/structures-and-media/tables.md)  | ✓      | ✓      | ✓      |
| [Merged cells (rowspan)](https://tiptap.dev/docs/conversion/content-types/structures-and-media/tables.md)  | ✓      | ✓      | ✓      |
| [Table header rows](https://tiptap.dev/docs/conversion/content-types/structures-and-media/tables.md)       | ✓      | ✓      | ✕      |
| [Column widths](https://tiptap.dev/docs/conversion/content-types/structures-and-media/tables.md)           | ✓      | ✓      | ✓      |
| [Cell backgrounds](https://tiptap.dev/docs/conversion/content-types/structures-and-media/tables.md)        | ✓      | ✓      | ✕      |
| [Cell borders](https://tiptap.dev/docs/conversion/content-types/structures-and-media/tables.md)            | ✓      | ✓      | ✕      |
| [Cell vertical alignment](https://tiptap.dev/docs/conversion/content-types/structures-and-media/tables.md) | ✓      | ✓      | ✕      |
| [Row height](https://tiptap.dev/docs/conversion/content-types/structures-and-media/tables.md)              | ✓      | ✓      | ✕      |

## Media

| Feature                                                                                                       | Import | Editor | Export |
| ------------------------------------------------------------------------------------------------------------- | ------ | ------ | ------ |
| [Inline images](https://tiptap.dev/docs/conversion/content-types/structures-and-media/images.md)              | ✓      | ✓      | ✓      |
| [Floating images](https://tiptap.dev/docs/conversion/content-types/structures-and-media/images.md)            | \~     | ✕      | ✕      |
| [Image dimensions](https://tiptap.dev/docs/conversion/content-types/structures-and-media/images.md)           | ✓      | ✓      | ✓      |
| [Image cropping](https://tiptap.dev/docs/conversion/content-types/structures-and-media/images.md)             | ✓      | \~\*   | ✕      |
| [Math and equations](https://tiptap.dev/docs/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.dev/docs/conversion/content-types/page-layout/page-breaks.md)               | ✓      | \~     | ✓      |
| [Headers and footers](https://tiptap.dev/docs/conversion/content-types/page-layout/headers-footers.md)   | ✓\*    | ✓      | ✓      |
| [Sections](https://tiptap.dev/docs/conversion/content-types/page-layout/page-structure.md)               | \~     | ✕      | ✕      |
| [Page size and margins](https://tiptap.dev/docs/conversion/content-types/page-layout/page-structure.md)  | ✕      | ✓      | ✓      |
| [Page numbers](https://tiptap.dev/docs/conversion/content-types/page-layout/page-structure.md)           | \~\*\* | ✓      | \~\*\* |
| [Footnotes](https://tiptap.dev/docs/conversion/content-types/structures-and-media/footnotes-endnotes.md) | ✓\*    | ✕      | ✕      |
| [Endnotes](https://tiptap.dev/docs/conversion/content-types/structures-and-media/footnotes-endnotes.md)  | ✓\*    | ✕      | ✕      |

**\*** Import behavior differs between integration paths. The [REST API](https://tiptap.dev/docs/conversion/import/docx/rest-api.md) returns footnotes, endnotes, and headers/footers as separate fields in the response. The [editor extension](https://tiptap.dev/docs/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.dev/docs/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.dev/docs/pages/getting-started/overview.md) for editor rendering. Without it, these features have nowhere to render even if the conversion service produces them.

## Not supported

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

| Feature                                     | Status                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Comments and annotations                    | Not converted. The comments extension exists but is not connected to conversion.                                                                                                                                                                                                                                                                                                                                                                                                        |
| Tracked changes and revisions               | Not converted. The tracked changes extension exists but is not connected to conversion.                                                                                                                                                                                                                                                                                                                                                                                                 |
| Table of Contents                           | Imported as `tableOfContents` node (title and heading range). A [custom extension](https://tiptap.dev/docs/editor/extensions/custom-extensions/extend-existing.md) is needed to render it in the editor. The existing [Table of Contents extension](https://tiptap.dev/docs/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            | Not converted. Inline structured document tags (SDTs) have their text content preserved, but the control metadata is discarded.                                                                                                                                                                                                                                                                                                                                                         |
| 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.dev/docs/conversion/content-types/text-and-formatting/text-alignment.md) for details. |
