<a id="mdx"></a>

# MDX files

#### Versionadded
Added in version 2026.5.

#### NOTE
Support for this format is under development. Some features might not yet be
available and the behavior can change between releases. Feedback from
testing is welcome.

MDX files are Markdown files with JSX syntax. Weblate extracts translatable
Markdown text and preserves imports, exports, JSX components, and expressions.

MDX units automatically get the `md-text`, `auto-safe-html`, `strict-same` and `safe-mdx` flags.
This keeps the unsafe HTML check active for plain text, standard HTML, and
custom elements while avoiding HTML cleanup on MDX and JSX-like syntax.
Use the explicit `safe-html` flag for strings that are known to contain HTML
and should always be sanitized, including SVG or MathML snippets.

#### NOTE
Unlike most other formats, the changes in the translation files will not be
imported to Weblate because it can not be done reliably. The source of truth
for the translations is Weblate not the translated file.

#### SEE ALSO
[MDX](https://docs.translatehouse.org/projects/translate-toolkit/en/latest/formats/mdx.html)

Example file:

```md
---
title: Ahoj světe!
description: Learn with Weblate
---

import LessonCard from "./LessonCard"
export const metadata = { slug: "intro" }

# Ahoj světe!

<LessonCard title="Keep this code" count={5}>
  Do not translate this JSX body.
</LessonCard>

Orangutan has five bananas.

Try Weblate at [weblate.org](https://demo.weblate.org/)!

*Thank you for using Weblate.*
```

<!-- AUTOGENERATED START: format-features mdx -->
<!-- This section is automatically generated by `./manage.py list_format_features`. Do not edit manually. -->

#### Supported features

| File extensions                                                                                      | `.mdx`                                                                                                             |
|------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------|
| Linguality [ⓘ](https://docs.weblate.org/no/latest/formats.md#bimono)                                   | Monolingual                                                                                                        |
| Supports plural [ⓘ](https://docs.weblate.org/no/latest/formats.md#format-plurals)                      | `No`                                                                                                               |
| Supports descriptions [ⓘ](https://docs.weblate.org/no/latest/formats.md#format-description)            | `No`                                                                                                               |
| Supports explanation [ⓘ](https://docs.weblate.org/no/latest/formats.md#format-explanation)             | `No`                                                                                                               |
| Supports context [ⓘ](https://docs.weblate.org/no/latest/formats.md#format-context)                     | `No`                                                                                                               |
| Supports location [ⓘ](https://docs.weblate.org/no/latest/formats.md#format-location)                   | `No`                                                                                                               |
| Supports flags [ⓘ](https://docs.weblate.org/no/latest/formats.md#format-flags)                         | `No`                                                                                                               |
| API identifier                                                                                       | `mdx`                                                                                                              |
| Supports read-only strings [ⓘ](https://docs.weblate.org/no/latest/formats.md#read-only-strings)        | `No`                                                                                                               |
| Supports removing obsolete strings [ⓘ](https://docs.weblate.org/no/latest/formats.md#obsolete-strings) | `No`                                                                                                               |
| Check flags added by this format [ⓘ](https://docs.weblate.org/no/latest/admin/checks.md#custom-checks)      | `auto-safe-html`, `strict-same`, `md-text`, [Safe MDX](https://docs.weblate.org/no/latest/user/checks.md#check-safe-mdx) |
<!-- AUTOGENERATED END: format-features mdx -->

## Weblate configuration

|                                | Typical Weblate [Component configuration](https://docs.weblate.org/no/latest/admin/projects.md#component)   |
|--------------------------------|----------------------------------------------------------------------------------------------------|
| File mask                      | `path/*.mdx`                                                                                       |
| Monolingual base language file | `path/en.mdx`                                                                                      |
| Template for new translations  | `path/en.mdx`                                                                                      |
| File format                    | MDX file                                                                                           |
| File format parameters         | `mdx_merge_duplicates=True`                                                                        |

<a id="mdx-duplicates"></a>

## Handling duplicate strings

By default, Weblate treats each occurrence of a string as a separate
translation unit to provide line-based context. This can be problematic
in MDX tables or repeated component content, where reordering changes the
context and can lead to translation loss.

To consolidate identical strings into a single translation unit, enable
Deduplicate identical strings in the
[File format parameters](https://docs.weblate.org/no/latest/admin/projects.md#component-file-format-params).

#### NOTE
Enabling this option disables line-based context for the merged units,
ensuring that translations remain stable even if rows or sections
are moved within the document.
