---
title: "MarkdownSettings"
canonical_url: "https://www.nutrient.io/api/python/settings/format/markdown-settings/"
md_url: "https://www.nutrient.io/api/python/settings/format/markdown-settings.md"
last_updated: "2026-06-12T15:43:20.748Z"
description: "Settings for Markdown. Values fall back through three levels: document → SDK → built-in default."
---

Settings for Markdown. Values fall back through three levels: document → SDK → built-in default. Writes target the document only when set on a document's settings, otherwise the SDK globally when set on SdkSettings.

**Tags:** `Format`

```python

from nutrient_sdk import MarkdownSettings

```

## Construction

`MarkdownSettings` is accessed through a [`Document`](/api/python/document/) instance for per-document overrides, or via [`SdkSettings`](/api/python/settings/document/sdk-settings/) for SDK-wide defaults.

```python

# Per-document override

with Document.open("input.pdf") as doc:
    settings = doc.settings.markdown_settings
    settings.some_field = new_value          # mutate fields directly

# SDK-wide default (applies to all documents)

SdkSettings.markdown_settings.some_field = new_value

```

Settings are configured by writing to fields on the returned object. The settings property itself cannot be reassigned — `doc.settings.markdown_settings = other_settings` is rejected.

## Properties

### emit_page_boundary_markers

```python

@property
def emit_page_boundary_markers(self) -> bool

@emit_page_boundary_markers.setter
def emit_page_boundary_markers(self, value: bool) -> None

```

When enabled, the converter emits a unique HTML-comment marker at the start of every page (, where N is the 1-indexed physical page number). The markers are invisible when the Markdown is rendered to HTML but allow downstream tooling to slice the output reliably back into per-page chunks.

**Type:** `bool`

**Default:** `false`

---

### enable_inline_formatting

```python

@property
def enable_inline_formatting(self) -> bool

@enable_inline_formatting.setter
def enable_inline_formatting(self, value: bool) -> None

```

Controls whether inline text formatting (bold, italic) is preserved in the Markdown output using standard markers (**bold**, *italic*).

**Type:** `bool`

**Default:** `false`

---

### enable_semantic_block_formatting

```python

@property
def enable_semantic_block_formatting(self) -> bool

@enable_semantic_block_formatting.setter
def enable_semantic_block_formatting(self, value: bool) -> None

```

Controls whether footnotes and captions are rendered with semantic Markdown markers (> , *…*) and whether pictures/charts are emitted at all (![alt] / [Figure]). When , footnotes and captions render as plain paragraphs and pictures/charts are dropped entirely. List items always render with - regardless.

**Type:** `bool`

**Default:** `true`

---

### extract_words_from_pictures

```python

@property
def extract_words_from_pictures(self) -> bool

@extract_words_from_pictures.setter
def extract_words_from_pictures(self, value: bool) -> None

```

Controls whether words detected inside picture regions are emitted as plain text in Markdown output. This helps preserve chart labels, axis text, legends, and similar image-contained text when available.

**Type:** `bool`

**Default:** `true`

---

### image_export

```python

@property
def image_export(self) -> ImageExportMode

@image_export.setter
def image_export(self, value: ImageExportMode) -> None

```

Controls how images are exported when converting documents to Markdown.

**Type:** [`ImageExportMode`](/api/python/enums/image-export-mode/)

**Default:** `ImageExportMode.None`

---

### include_headers_and_footers

```python

@property
def include_headers_and_footers(self) -> bool

@include_headers_and_footers.setter
def include_headers_and_footers(self, value: bool) -> None

```

Controls whether running headers and footers are included in the Markdown output. When included, they render as plain text paragraphs.

**Type:** `bool`

**Default:** `false`

---

### use_html_tables

```python

@property
def use_html_tables(self) -> bool

@use_html_tables.setter
def use_html_tables(self, value: bool) -> None

```

Controls how tables are rendered in the Markdown output. When enabled, tables are emitted as HTML (//) preserving row/column spans where available; when disabled, tables render as pipe-style Markdown.

**Type:** `bool`

**Default:** `true`

---

---

## Related pages

- [Per-document override](/api/python/settings/format/email-settings.md)
- [Per-document override](/api/python/settings/format/html-settings.md)
- [Per-document override](/api/python/settings/format/image-settings.md)
- [Format](/api/python/settings/format.md)
- [Per-document override](/api/python/settings/format/cad-settings.md)
- [Per-document override](/api/python/settings/format/pdf-settings.md)
- [Per-document override](/api/python/settings/format/jpeg-settings.md)
- [Per-document override](/api/python/settings/format/spreadsheet-settings.md)
- [Per-document override](/api/python/settings/format/word-settings.md)

