

SimplyIrfan Markdown creates an alternate Markdown representation of eligible public WordPress content without creating duplicate posts or changing the original HTML page.
For a normal post such as:
https://example.com/my-post/
it can provide:
https://example.com/my-post.md
The plugin converts the rendered front-end page, rather than only raw post content. This helps preserve server-rendered Gutenberg blocks, shortcodes, theme output, tables, figures, links, lists, and other content that exists after WordPress has processed the page.
The plugin is created and maintained by Irfan under the SimplyIrfan brand.
.md URLs for public posts, pages, and selected public custom post types.Accept: text/markdown.Vary: Accept, no-store headers for negotiated responses, WordPress no-cache constants, and integrations with supported cache-plugin hooks.Accept.rel="alternate" with type="text/markdown".Accept: text/markdown content negotiation, disabled by default.A typical document can contain fields such as:
title, `id`, `type`, `slug`, `published_at`, `modified_at`, `url`, `markdown_url`, `excerpt`, taxonomy fields, and featured-image metadata.
When enabled, page-aware JSON-LD is appended as a fenced JSON section. It describes the original HTML article and does not replace schema generated by Rank Math, Yoast SEO, or the active theme on the normal HTML URL.
Go to Settings Markdown Output after activation.
Options
DOM & Selectors
Advanced
Vary: Accept.text/* Accept headers.Tools
simplyirfan-markdown plugin folder to /wp-content/plugins/, or install the ZIP from Plugins Add New Plugin Upload Plugin..md to an eligible public permalink to test the Markdown representation.No. .md URLs are generated by WordPress rewrite rules. Temporary caches are used for performance, but the plugin does not create a second file tree or duplicate posts.
The Markdown URL is an alternate machine-readable representation of the canonical HTML page. It is not intended to be a second independent article. The Markdown response identifies the HTML URL as canonical.
Yes. The plugin provides a predictable Markdown representation and advertises it from eligible HTML pages. It does not guarantee that any particular crawler, model, or search engine will discover or use the representation.
Yes. Featured-image metadata is enabled by default and can be disabled from Settings Markdown Output. The metadata can include the original image URL, alt text, width, height, attachment ID, MIME type, caption, and file size when WordPress has that information.
They can be. Enable Images in Markdown to convert images found inside the selected content area. Common lazy-loading attributes are supported.
The converter uses the rendered front-end page, so server-rendered block and shortcode output can be represented. Content inserted only by browser-side JavaScript is not available to the server-side renderer.
Yes. Use Main Content Selectors and Excluded Content Selectors. The selector implementation supports a practical subset including tags, IDs, classes, descendants, direct children, and comma-separated alternatives.
No. The plugin only serves publicly viewable content from enabled public post types. Password-protected content is rejected. Additional access-control integrations can use the simplyirfan_markdown_can_serve_post filter.
No. The plugin generates its own alternate Markdown response. The optional Article JSON-LD is only part of that Markdown representation; it does not modify the normal HTML page or existing Rank Math/Yoast schema.
It is optional and disabled by default. When enabled, a client can request Markdown from the normal canonical URL with Accept: text/markdown. This requires all caches/CDNs in front of the site to honor Vary: Accept. Test carefully before enabling it.
The plugin returns a non-cacheable HTTP 503 response instead of caching an empty or incomplete document.
Go to Settings Markdown Output Tools Clear Markdown Cache. Cache generation also changes automatically after relevant settings changes, theme switches, and navigation-menu updates.
No external API or SaaS service is required. The plugin runs on the WordPress site. The rendered-content approach makes a loopback HTTP request to the site’s canonical page; hosting configurations that block safe loopback requests may require testing or selector adjustments.
The plugin provides filters including:
simplyirfan_markdown_can_serve_postsimplyirfan_markdown_is_noindex_postsimplyirfan_markdown_include_taxonomysimplyirfan_markdown_front_mattersimplyirfan_markdown_schemasimplyirfan_markdown_markdown_documentsimplyirfan_markdown_cache_ttlSimplyIrfan Markdown does not send post content to an external service. It processes eligible content on the WordPress site and uses WordPress’s own temporary caching mechanisms.
SimplyIrfan Markdown is licensed under the GNU General Public License v2 or later.