Use markdown to write and format dev.to posts. Use liquid tags to make add rich content such as tweets and videos. More below. ❤️
<% end %>Below are some examples of commonly used markdown syntax. If you want to dive deeper, check out this cheat sheet.
Italics: *asterisks* or _underscores_
Bold: **double asterisks** or __double underscores__
I'm an inline link: [I'm an inline link](put-link-here)

figcaption tag!Add a header to your post with this syntax:
# One '#' for a h1 header
## Two '#'s for a h2 header
...
###### Six '#'s for a h6 header
We support native Liquid tags in our editor, but have created our own custom tags listed below:
All you need is the full link of the article:
{% link https://dev.to/kazz/boost-your-productivity-using-markdown-1be %}
You can also use the slug like this:
{% link kazz/boost-your-productivity-using-markdown-1be %}
All you need is the DEV username:
{% user jess %}
All you need is the tag name:
{% tag git %}
All you need is the ID at the end of a comment URL. To get the comment link, click either the timestamp or the menu button in the top right corner on a comment and then click "Permalink". Here's an example:
{% devcomment 2d1a %}
All you need is the full link of the podcast episode:
{% podcast https://dev.to/basecspodcast/s2e2--queues-irl %}
Using the Twitter Liquid tag will allow the tweet to pre-render from the server, providing your reader with a better experience. All you need is the tweet id from the url.
{% twitter 834439977220112384 %}
All you need is the Glitch project slug
{% glitch earthy-course %}
There are several optional attributes you can use in your tag, just add them after the id, separated by spaces.
app{% glitch earthy-course app %}
code{% glitch earthy-course code %}
preview-first{% glitch earthy-course preview-first %}
no-attribution{% glitch earthy-course no-attribution %}
no-files{% glitch earthy-course no-files %}
file{% glitch earthy-course file=script.js %}
All you need is the GitHub username and repo:
{% github thepracticaldev/dev.to %}
All you need is the GitHub issue or comment URL:
{% github https://github.com/thepracticaldev/dev.to/issues/9 %}
All you need is the gist link:
{% gist https://gist.github.com/QuincyLarson/4bb1682ce590dc42402b2edddbca7aaa %}
All you need is the id from the URL.
{% youtube dQw4w9WgXcQ %}{% vimeo 193110695 %}All you need is the SlideShare key
{% slideshare rdOzN9kr1yK5eE %}
All you need is the full CodePen link, ending in the pen ID code, as follows:
{% codepen https://codepen.io/twhite96/pen/XKqrJX %}
default-tab{% codepen https://codepen.io/twhite96/pen/XKqrJX default-tab=js,result %}
Put executable code within a runkit liquid block, as follows:
{% runkit
// hidden setup JavaScript code goes in this preamble area
const hiddenVar = 42
%}
// visible, reader-editable JavaScript code goes here
console.log(hiddenVar)
{% endrunkit %}
All you need is the ID of the Stackblitz:
{% stackblitz ball-demo %}
All you need is the ID of the Sandbox:
{% codesandbox ppxnl191zx %}
Of CodeSandbox's many optional attributes, the following are supported by using them in your tag, just add them after the id, separated by spaces.
initialpath{% codesandbox ppxnl191zx initialpath=/initial/load/path %}
module{% codesandbox ppxnl191zx module=/path/to/module %}
All you need is the full JSFiddle link, ending in the fiddle ID code, as follows:
{% jsfiddle https://jsfiddle.net/link2twenty/v2kx9jcd %}
Custom tabs{% jsfiddle https://jsfiddle.net/webdevem/Q8KVC result,html,css %}
All you need is the URL after the domain name:
{% replit @WigWog/PositiveFineOpensource %}
All you need is the Instagram post id from the URL.
{% instagram BXgGcAUjM39 %}
All you need is the data-id code from the embed link:
# Given this embed link:
< script async class="speakerdeck-embed"
data-id="7e9f8c0fa0c949bd8025457181913fd0"
data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js">< /script >
{% speakerdeck 7e9f8c0fa0c949bd8025457181913fd0 %}
Just enter the full URL of the Soundcloud track you are trying to embed.
{% soundcloud https://soundcloud.com/user-261265215/dev-to-review-episode-1 %}
Enter the Spotify URI of the Spotify track / playlist / album / artist / podcast episode you are trying to embed.
{% spotify spotify:episode:5V4XZWqZQJvbddd31n56mf %}
To parse Liquid tags as code, simply wrap it with a single backtick or triple backticks.
`{% mytag %}{{ site.SOMETHING }}{% endmytag %}`
One specific edge case is with using the raw tag. To properly escape it, use this format:
`{% raw %}{{site.SOMETHING }} {% ``endraw`` %}`
Lists are written just like any other Markdown editor.
If you're adding an image in between numbered list, though, be sure to tab the image,
otherwise it'll restart the number of the list.
Here's an example of what to do: