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
    Vibration API

    Many of the new APIs provided to us by browser vendors are more targeted toward the mobile user than the desktop user.  One of those simple APIs the Vibration API.  The Vibration API allows developers to direct the device, using JavaScript, to vibrate in...

  • By
    5 HTML5 APIs You Didn’t Know Existed

    When you say or read "HTML5", you half expect exotic dancers and unicorns to walk into the room to the tune of "I'm Sexy and I Know It."  Can you blame us though?  We watched the fundamental APIs stagnate for so long that a basic feature...

Incredible Demos

  • By
    Create Keyboard Shortcuts with Mousetrap

    Some of the finest parts of web apps are hidden in the little things.  These "small details" can often add up to big, big gains.  One of those small gains can be found in keyboard shortcuts.  Awesome web apps like Gmail and GitHub use loads of...

  • By
    Digg-Style Dynamic Share Widget Using MooTools

    I've always seen Digg as a very progressive website. Digg uses experimental, ajaxified methods for comments and mission-critical functions. One nice touch Digg has added to their website is their hover share widget. Here's how to implement that functionality on your site...

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!