⏬ TinyMarkdown

a minimalistic library for inline markdown: 9 features – 10 lines of code – 0 dependencies

sometimes you want some strings (like translation strings, user's profile description, etc.) to allow for some basic styling, but without allowing/requiring HTML. this library is a bunch of regexes that help you easily add support for inline markdown features.

usage

const TinyMarkdown = require('tinymarkdown');

const translations = {
    consent: 'i confirm that am **over 18 years old** and have read the [terms of service](/terms).',
}

const html = TinyMarkdown(translations.consent, {links: true});
// 'i confirm that am <strong>over 18 years old</strong> and have read the <a href="/terms">terms of service</a>.'

features

bold/strong

foo **bar** bazfoo <strong>bar</strong> baz

italics/emphasis

foo _bar_ bazfoo <em>bar</em> baz

code/monospace

foo `bar` bazfoo <code>bar</code> baz

strikethrough

foo ~~bar~~ bazfoo <del>bar</del> baz

highlight

foo ==bar== bazfoo <mark>bar</mark> baz

superscript

foo ^bar^ bazfoo <sup>bar</sup> baz

subscript

foo ~bar~ bazfoo <sub>bar</sub> baz

links

⚠️ this feature needs to be explicitly enabled with a {links: true} param

[foo](/bar)<a href="/bar">foo</a>

external links will automatically be set to open in a new tab:

[foo](https://example.com)<a href="https://example.com" target="_blank" rel="noopener">foo</a>

if you want to force that on local links as well, add a ! before the link:

[foo](!/bar)<a href="/bar" target="_blank" rel="noopener">foo</a>

images

⚠️ this feature needs to be explicitly enabled with a {images: true} param

![foo](/bar.svg)<img src="/bar.svg" alt="foo"/>

development

node tests.js     # run tests
node homepage.js  # regenerate homepage from readme

author & links