Add your file
Choose or drop a .md or .markdown file. You can paste the contents instead.
Open a .md or .markdown file, or paste Markdown text, to preview it in the browser without installing an editor and without the file being uploaded. The previewer renders ATX and setext headings, paragraphs, emphasis and strong emphasis, bullet and ordered lists (including a custom start number), nested blockquotes, fenced and indented code blocks, thematic breaks, inline links and images, autolinks, inline code and hard breaks; every block carries the source line it started on. Raw HTML is never inserted as markup: it is shown as escaped text and listed as a finding with its line and column, event-handler attributes such as onerror are flagged, and links or images using javascript: or another unknown scheme lose their destination. Only base64 PNG, JPEG, GIF and WEBP data: images are displayed; remote images are listed but never loaded, and external links get noopener and noreferrer. Beside the preview you get a findings table, a heading outline with generated anchor slugs, an inventory of links and images classified as anchor, relative, external, mailto, tel, data or blocked with their distinct external origins, YAML or TOML front matter as a separate raw block, and a word count, character count and estimated reading time. The rendered HTML can be copied or downloaded.
or drop a file here
Choose or drop a .md or .markdown file. You can paste the contents instead.
The file is read and parsed in this browser — nothing is uploaded.
Look over what came back, then copy it, download it, or move on.
Want to know how files are handled? Read the privacy notice →
Drop the .md or .markdown file onto this page or paste the Markdown text, and the formatted preview appears straight away in your browser. Next to it you get a findings table, a heading outline and a list of every link and image, and the rendered HTML can be copied or downloaded.
No. The file is read and rendered by code running in your browser tab, so its contents are not sent to a server for conversion. The preview also never loads remote images or follows links from the document, so opening it does not contact the hosts the file mentions.
Open this page in Edge, Chrome or Firefox on Windows 11 and drop the .md file in; it renders with formatting and no Markdown editor is needed. Notepad shows the # and * symbols because it has no renderer. If accented characters were saved in a legacy Windows code page instead of UTF-8, the file is refused until you re-save it as UTF-8.
Yes, Safari or any modern browser on macOS, iOS or Android can use this page: choose the file or paste its text. On an iPhone, pick the .md from the Files app. Very large documents take longer on a phone, and the preview pane covers blocks that start within the first 300,000 characters.
The file contains bytes that are not valid UTF-8, usually because it was saved as Windows-1252, Latin-1 or another legacy encoding. The error gives the byte offset, line and column of the first bad sequence. Re-save the file as UTF-8 and open it again; a charset line in front matter is reported but never used to re-decode.
They are outside the supported subset, so tables, footnotes, task lists, strikethrough and reference-style links written as [text][id] stay as plain text. What renders is headings, paragraphs, emphasis, lists, blockquotes, fenced and indented code, thematic breaks, inline links and images, autolinks, inline code and hard breaks. HTML entities such as © are not decoded either.
Up to 5,000,000 bytes, about 5 MB; anything larger is refused with a size error before decoding starts. Within that limit the preview pane shows blocks that start in the first 300,000 characters and a warning names the line where it stopped, while the statistics, outline and findings still cover the whole file.
It means blockquotes or list items are nested more than 32 levels deep, so rendering stops and the error points to the line and column that crossed the limit. Hand-written documents rarely go past a few levels, so this usually signals a generated or malformed file. A separate budget error stops extreme runs of brackets or emphasis markers.
In this preview raw HTML is never executed: script, iframe and other tags are shown as escaped text and each one is listed as a finding with its line and column. Event-handler attributes such as onerror are flagged as well. That protects this page only; it is not a malware or phishing check, and another app that renders HTML may treat the same file differently.
Any link or image whose scheme is not http, https, mailto or tel, and is not an anchor or relative path, has its destination removed and is reported as an unsafe URL, even when disguised with mixed case, control characters or percent encoding. data: URLs are kept only for base64 PNG, JPEG, GIF and WEBP images.
Not necessarily: this previewer follows a documented CommonMark subset, while GitHub and GitLab add extensions such as tables, task lists, strikethrough and their own HTML handling. Use the preview to read the structure and spot problems such as unclosed fences or broken brackets, not as proof of how a specific site will display the file.
Yes. The rendered HTML panel can be copied or downloaded as yourfile.rendered.html and contains exactly the markup shown in the preview. Raw HTML from the source stays escaped as text, remote images carry no src, and the escaping was designed for this preview, so review the markup before pasting it into another site or CMS.
It detects front matter only when the very first line is --- for YAML or +++ for TOML and a closing line follows, then shows it as a separate raw block labelled unparsed that you can download. The values are never interpreted, so a title or date there does not change the preview, and an unclosed fence is reported at line one.
Both are estimates: a word is a run of non-whitespace characters, each Chinese, Japanese or Korean character counts as one word, and reading time assumes 200 words per minute. Code blocks, raw HTML blocks, front matter and link destinations are excluded. Characters are Unicode code points after line endings are normalised, excluding front matter.