Convert HTML to Markdown

By  on  

One of my biggest mistakes with this blog was not finding a WordPress plugin that would allow me to write my posts with markdown; to this day I still need to write posts in "Visual" mode and then manually convert the post to HTML for "Text" mode.  One of these days I want to convert existing posts to Markdown and then enable a plugin that will convert Markdown to HTML. This painful process made me ask myself:  is there a way I can use Node.js JavaScript to convert HTML to Markdown?  There is, and it's called Turndown by Dom Christie.

Convert HTML to Markdown with Node.js

Start by installing Turndown:

yarn add turndown

Then use Turndown's simple API to convert HTML to markdown:

var TurndownService = require('turndown');
var turndownService = new TurndownService();

var markdown = turndownService.turndown(`
    

Title

DavidWalsh.Name is awesome!

`); /* Title ===== [DavidWalsh.Name](https://davidwalsh.name) is awesome! */

You can use the interactive Turndown demo to experiment with its capabilities.  Turndown has a number of options and allows you to use filters to keep elements you believe could be at risk for improper conversion.

Most developers look for a Markdown to HTML solution so it's rate to find myself in a position to need to convert HTML to Markdown.  I look forward to migrating my site's content to Markdown so that writing posts is much less stressful in the future!

Recent Features

  • By
    Introducing MooTools Templated

    One major problem with creating UI components with the MooTools JavaScript framework is that there isn't a great way of allowing customization of template and ease of node creation. As of today, there are two ways of creating: new Element Madness The first way to create UI-driven...

  • By
    CSS @supports

    Feature detection via JavaScript is a client side best practice and for all the right reasons, but unfortunately that same functionality hasn't been available within CSS.  What we end up doing is repeating the same properties multiple times with each browser prefix.  Yuck.  Another thing we...

Incredible Demos

  • By
    MooTools Fun with Fx.Shake

    Adding movement to your website is a great way to attract attention to specific elements that you want users to notice. Of course you could use Flash or an animated GIF to achieve the movement effect but graphics can be difficult to maintain. Enter...

  • By
    Telephone Link Protocol

    We've always been able to create links with protocols other than the usual HTTP, like mailto, skype, irc ,and more;  they're an excellent convenience to visitors.  With mobile phone browsers having become infinitely more usable, we can now extend that convenience to phone numbers: The tel...

Discussion

  1. Hi David,

    there’s even more you can do with it!

    We explored it in a hackathon:
    Exporting content from Confluence using its ReST api and feed the markdown to a static site generator (like Netlify or Hapi.js).

    Was quite fun :-)

    Sadly I can’t share details because of work during business hours :-(

    Cheers

    André

  2. Jennifer

    Jetpack includes an option to write posts using Markdown. https://jetpack.com/support/markdown/

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!