Copy as Markdown Button

Description

Copy as Markdown Button lets your visitors copy any post or page content as clean, well-structured Markdown with a single click. It handles everything from headings and tables to code blocks and nested lists – no extra tools or dependencies required.

Placement & Auto-injection

  • Automatically injects the button before or after the content on any combination of post types (posts, pages, and custom post types)
  • Shortcode [copy_as_markdown] for manual placement in any post, page, or widget
  • Gutenberg block available in the Widgets category – place it anywhere in the block editor with per-block overrides for button text, size, and content selector
  • Exclude specific posts or pages from auto-injection by entering their IDs – shortcode and block placements are unaffected

Button Customisation

  • Choose button size: Small, Medium, or Large
  • Set custom background, text, and hover colours via colour pickers
  • Adjust corner radius from 0 px (square) to 50 px (pill)
  • Show or hide the copy icon alongside the button label
  • Customise the button label (default: “Copy as Markdown”) and the success confirmation text (default: “Copied!”)
  • Live preview in the settings panel updates instantly as you change style options

Content Control

  • Optionally prepend the post title as a Markdown H1 heading
  • Custom CSS selector to target a specific page element instead of the auto-detected content area
  • Exclude any elements from the Markdown output using CSS selectors (one per line) – useful for stripping ads, share buttons, comment sections, and related posts
  • Per-shortcode overrides for button text, size, content selector, and download button visibility

Download Button

  • Optional dropdown “Download as .md” button that saves the converted Markdown as a .md file directly from the browser, named after the post slug
  • Appears alongside the copy button in a split-button dropdown
  • Can be force-enabled or force-disabled per shortcode instance using the download attribute

Markdown URL Endpoint

  • Enable a .md.txt URL endpoint so any post or page can be viewed as plain-text Markdown by appending .md.txt to its URL (e.g. yoursite.com/your-post-slug.md.txt)
  • The server converts the post HTML to Markdown and serves it as text/plain – useful for programmatic access, LLM ingestion, and content pipelines
  • Works with Elementor pages by using Elementor’s own renderer when available
  • Optional “View as Markdown” link in the button dropdown opens the plain-text endpoint in a new tab
  • Customisable link label for the “View as Markdown” item

HTML-to-Markdown Conversion

The converter handles a wide range of HTML elements cleanly:

  • Headings (H1–H6), paragraphs, line breaks, and horizontal rules
  • Bold (**), italic (*), and strikethrough (~~) inline formatting
  • Hyperlinks with optional title attributes; images with alt text and titles
  • Fenced code blocks with language detection from the language-* CSS class
  • Inline code with backtick escaping
  • Blockquotes with proper > prefixing on every line
  • Ordered and unordered lists with full nested list support
  • Tables converted to GitHub-Flavored Markdown pipe tables
  • Figures with italicised captions
  • YouTube iframe embeds converted to [Video](url) Markdown links
  • Scripts, styles, navigation, and form elements are automatically stripped

Accessibility & Performance

  • ARIA labels, role="status" live region for screen-reader announcements after copy
  • Keyboard-navigable dropdown with aria-expanded and role="menu" semantics
  • Frontend CSS and JavaScript are only loaded on pages where the button will actually appear

Screenshots

Blocks

This plugin provides 1 block.

  • Copy as Markdown Adds a button that copies the page content to the clipboard as Markdown.

Installation

  1. Upload the plugin folder to the /wp-content/plugins/ directory, or install the plugin through the WordPress Plugins screen directly.
  2. Activate the plugin through the Plugins screen in WordPress.
  3. Go to Settings > Copy as Markdown to configure where and how the button appears.

FAQ

How do I place the button manually?

Use the shortcode [copy_as_markdown] in any post, page, or widget, or add the Copy as Markdown block in the Gutenberg block editor.

Can I copy only part of the page?

Yes. Use the Content Element Selector setting (or the selector shortcode attribute) to target a specific CSS element. Leave it blank to let the plugin auto-detect the content area.

Can I override shortcode settings per instance?

Yes. The shortcode accepts text, size, selector, and download attributes. For example: [copy_as_markdown text="Export" size="large" selector=".post-body" download="true"].

Does it work with custom post types?

Yes. Any public post type is listed in the Display settings so you can enable auto-injection for it.

How do I hide the button on a specific post without disabling the whole post type?

Enter the post or page ID in the Exclude Specific Pages / Posts field under the Display tab. You can find the ID in the URL when editing the post: ?post=123.

What is the .md.txt endpoint?

When enabled, appending .md.txt to any post or page URL (e.g. yoursite.com/my-post.md.txt) serves the full post content as plain-text Markdown. After enabling it, visit Settings > Permalinks once to flush rewrite rules.

Does it work with Elementor?

Yes. The Markdown URL endpoint detects Elementor and uses its own renderer to capture the full built page content rather than the raw post_content.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Copy as Markdown Button” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.2

  • Added optional Download button that saves post content as a .md file directly from the browser.
  • Added .md.txt URL endpoint – append .md.txt to any post/page URL to view it as plain-text Markdown.
  • Added “View as Markdown” dropdown link that opens the .md.txt endpoint in a new tab.
  • Added YouTube iframe support – embeds are converted to [Video](url) Markdown links.
  • Added Exclude by Post ID setting to suppress auto-injection on specific posts or pages.
  • Improved split-button dropdown UI for copy, download, and view actions.

1.0.1

  • Fixed plugin review issues.

1.0.0

  • Initial release.