xmltoolskit.org
XML utilities, in the browser
Say hi →

XML to Markdown

updated 20 August 2026 · table · list · headings

Turn XML into Markdown for a README, a wiki page, or a pull-request comment. Repeating records become a pipe table; anything else reads better as a nested bullet list or as headings with lists under them.

xml → markdown
Drop a .xml file here, or
ready

XML to Markdown

Three shapes for three kinds of document. Pipe table finds the repeating record element and writes one row per record. Nested list mirrors the tree with indented bullets, keeping element names bold. Headings + lists promotes container elements to headings and leaf elements to bullets, which reads best when the XML is really a document rather than a dataset.

How to use it

  1. Paste your XML, or drop a file on the left pane.
  2. Pick the output shape — table for datasets, list or headings for documents.
  3. Leave Record element on auto unless the detected element is not the one you want.
  4. Copy the Markdown, or download it as a .md file.

Pipe tables and their limits

A Markdown table is one line per row, so any value containing a newline is flattened to spaces and any pipe character is escaped as \|. That keeps the table valid, but it means long text fields — a description, an abstract — make for a very wide table. For those, the nested list is usually more readable.

Columns are the union of every record's fields in first-seen order, so a field missing from some records still gets a column with empty cells rather than shifting the row.

Headings mode and heading depth

In headings + lists, each container element becomes a heading one level deeper than its parent, starting at the level you set, and leaf elements become - **name**: value bullets. Markdown only has six heading levels, so anything deeper than that is clamped at ######.

Set the top level to 2 when the output is going under an existing # title, which is the usual case for a README section.

Attributes

With include attributes on, attributes appear as extra table columns (prefixed @), as italic annotations in list mode, or as their own bullets in headings mode. Namespace declarations are always skipped.

FAQ

Which mode should I use?

If the document is a list of similar records — products, entries, rows — use the pipe table. If it is a configuration file or a document with varied structure, the nested list preserves the shape without inventing columns. Headings mode is for XML that reads like prose.

What happens to values containing pipes or newlines?

In table mode, pipes are escaped and newlines collapse to spaces, because a Markdown table cell cannot span lines. In list and headings modes the text is emitted as-is.

Is the Markdown GitHub-flavoured?

Pipe tables are a GFM extension and render on GitHub, GitLab, and most wikis. Everything else is plain CommonMark.

Can I convert Markdown back to XML?

Not here — the conversion drops element names in table mode and cannot recover them. Keep the XML as the source of truth and regenerate the Markdown when it changes.

Is anything uploaded?

No. The document is parsed by the browser and converted in the page.

Related tools

Privacy

100% client-side. Everything runs in the browser tab. See the privacy policy.