Text to Markdown converter

Paste plain text, get structured Markdown. Capitalised lines become headings, dashes and bullets become lists, numbers become ordered lists. Free, in your browser.

Free · no sign-up
# MEETING NOTES

        Date: 12 March
        Attendees: Ana, Wen, Priya

        ## AGENDA

        1. Billing migration status
        2. Q2 hiring plan
        3. Open questions

        ### Action items

        - Ana to draft the ledger cut-over plan
        - Wen to schedule the beta
        - Priya to review pricing page copy

        ## Notes

        The migration is on track. Two blockers remain, both on the vendor side. Details at <https://example.com/wiki/ledger>
Converted in your browser. Your file never leaves your device.
1

Paste the text

Meeting notes, an email, a transcript, a Notepad file. Paste it or drop the .txt onto the box.

2

Check what was detected

Every heading and list the converter inferred is visible on the right. Dial heading detection down if it guessed wrong.

3

Download .md

Save the file, or switch the output to Word to get a .docx with real heading styles in one step.

How structure is inferred from plain text

Plain text has no markup, but people who write it still signal structure: a title in capitals, a label ending in a colon, dashes down the left margin, numbers before steps. A text to Markdown converter reads those conventions and writes the equivalent Markdown. Because every rule is a guess, MDtoDOCX keeps the rules few, shows the result before you download, and lets you switch each rule off. Here is exactly what it looks for.

Headings

Three patterns become headings. First, a short line in ALL CAPS: eight words or fewer, at least two letters, no full stop at the end, and blank lines or the start of the document around it. The first such line becomes #, later ones become ##. Second, a short line that ends in a colon and is followed by a list or a paragraph, such as Action items:, becomes a heading one level below the current section, with the colon removed. A line with text after the colon, such as Date: 12 March, is a key-value pair, not a heading, and stays as text. Third, a short Title Case line between blank lines becomes ##, but only when the document already contains at least one heading from the first two rules. That last condition stops a poem or a list of names from turning into a stack of headings. If the document is a memo with a single all-caps subject line and nothing else, you get one heading and clean paragraphs.

Lists

Lines that begin with -, *, •, –, ·, or the lower-case o that Word uses for second-level bullets, become - items. Lines that begin with 1., 1), (1), a. or i. become 1. items, and Markdown renumbers them, so a list that skips from 3 to 5 in the source comes out sequential. Indentation of two or more spaces, or a tab, nests the item under the one above. A line that follows a list item and is indented to the item's text is treated as a continuation of that item rather than a new paragraph. Consecutive numbered lines are a list; a lone numbered line followed by a blank line and a paragraph is treated as a numbered heading, since that is how section titles in reports are typed.

Paragraphs and line breaks

A blank line separates paragraphs. Single newlines inside a block are the ambiguous case. Notes typed by hand mean them, as in an address or the Date: and Attendees: lines above, so the default keeps them as hard breaks by writing two trailing spaces. Text pasted from an email client or an old README is often hard-wrapped at 72 or 80 columns and the newlines mean nothing. The converter measures line lengths, and when most lines in a block end near the same column it offers Join wrapped lines, which rejoins them into flowing paragraphs. You can force either behaviour from the options.

Characters that would become accidental Markdown

Plain text often contains characters Markdown treats specially. #1 priority at the start of a line would render as a heading, * at the start of a line as a bullet, and _internal_ as italic. MDtoDOCX escapes these when they were clearly not meant as markup, writing \#1 priority, while leaving existing, well-formed Markdown alone so a file that is already half converted is not double-escaped. Bare URLs and email addresses are wrapped in angle brackets so they become links. Lines starting with >, as in quoted email replies, become blockquotes.

Tables and code

Two or more consecutive lines whose words line up at the same columns, separated by two or more spaces or by tabs, are almost always a table. Pro's Detect tables turns them into a pipe table with the first row as the header. Blocks indented by four or more spaces that contain braces, semicolons or equals signs are treated as code and fenced, so a pasted snippet keeps its indentation.

Where the heuristics stop

An acronym-heavy line such as NASA AND ESA SIGN MOU looks like a heading and will be treated as one. A line ending in a colon that introduces a quotation will be promoted too. In those cases set Headings to Caps and colon only or Off, or fix the one line in the preview. The converter never invents emphasis, never reorders text, and never drops a line, so the worst case is a heading you did not want, not lost content. Everything runs in your browser and the text is never uploaded.

MDtoDOCX vs Pandoc vs doing it by hand

What mattersMDtoDOCXPandocRetype in an editor
Headings from caps and colon linesYes, three rules, always onNo, plain text has no structure to PandocManual
Bullets • – o recognisedYesNoManual
Numbered lists renumberedYesNoManual
Hard-wrapped email text rejoinedYes, detected by line widthYes, with --wrapManual
Accidental # and * escapedYesYesEasy to miss
Aligned columns to a tableProNoManual
Time for a 2-page memoUnder a secondSeconds plus install10–20 minutes
PrivacyLocal, nothing uploadedLocalLocal

Frequently asked questions

How does the text to Markdown converter decide what is a heading?
Short all-caps lines, short lines ending in a colon that introduce a list or paragraph, and short Title Case lines between blank lines once the document already has a heading. Lines with text after the colon, such as Date: 12 March, are kept as text. Each rule can be switched off.
Will it invent bold or italic formatting?
No. It only converts structure that is signalled by the text itself: headings, lists, links and quotes. Existing well-formed Markdown emphasis is left alone; stray asterisks and underscores that were not meant as markup are escaped.
Which bullet characters are recognised?
Hyphen, asterisk, the bullet dot, en dash, middle dot and the lower-case o that Word uses for nested bullets. Numbered items written as 1., 1), (1), a. or i. become ordered lists. Indentation nests items.
My text is hard-wrapped at 80 columns. Will every line become a paragraph?
No. The converter measures line lengths and, when a block is wrapped at a consistent width, offers to join the lines into flowing paragraphs. Choose Join wrapped lines in the options to force it, or Keep as hard breaks for addresses and notes.
Can it turn aligned columns into a table?
Yes, with Pro's Detect tables. Consecutive lines whose fields line up at the same columns, separated by two or more spaces or tabs, become a pipe table with the first row as the header.
What about text that already contains # or * characters?
Characters that would accidentally become Markdown, such as #1 at the start of a line, are escaped with a backslash. Text that is already valid Markdown is recognised and passed through unchanged, so a half-converted file is not double-escaped.
Can I convert many .txt files at once?
Single files are free with no limit on how many you convert one after another. Pro adds batch conversion: drop a folder of .txt files and download a .zip of .md files with the same names.
Is it free, and is my text uploaded?
Free, with no account. The text is processed in your browser and never sent to a server. Pro adds table detection, front matter and batch conversion.
What if it gets a heading wrong?
Set Headings to Caps and colon only, or Off, and the preview updates immediately. Because the converter never drops or reorders text, a wrong guess is always a one-line fix in the output.
Can I go straight to Word instead of Markdown?
Yes. Switch the output to Word (.docx) in the format bar. The detected headings become real Word Heading styles, so the document works with Word's navigation pane and table of contents. See Markdown to Word for what the .docx contains.