Title Header (H1 header)

Introduction (H3 header)

This is some placeholder text to show examples of Markdown formatting. We have a full article template you can use when writing a DigitalOcean article. Please refer to our style and formatting guidelines for more detailed explanations: https://do.co/style

Prerequisites (H2 header)

Before you begin this guide you’ll need the following:

Step 1 — Basic Markdown

This is italics, this is bold, and this is strikethrough.

  • This is a list item.
  • This list is unordered.
  1. This is a list item.
  2. This list is ordered.

This is a quote.

This is a quote inside a quote.

  • This is a list in a quote.
  • Another item in the quote list.

Here’s how to include an image with alt text and a title:

Alt text for screen readers

Use horizontal rules to break up long sections:


Rich transformations are also applied:

  • On ellipsis: …
  • On quote pairs: “sammy”, ‘test’
  • On dangling single quotes: it’s
  • On en/em dashes: a – b, a — b
Tables are also supported and will overflow cleanly if needed
col 1 col 2 col 3 col 4 col 5 col 6 col 7 col 8 col 9 col 10
col 1 col 2 col 3 col 4 col 5 col 6 col 7 col 8 col 9 col 10
col 1 col 2 col 3 col 4 col 5 col 6 col 7 col 8 col 9 col 10
col 1 col 2 col 3 col 4 col 5 col 6 col 7 col 8 col 9 col 10
col 1 col 2 col 3 col 4 col 5 col 6 col 7 col 8 col 9 col 10

Step 2 — Code

This is inline code. This is a variable. This is an in-line code variable.

Here’s a configuration file with a label:

/etc/nginx/sites-available/default
server {
    listen 80 default_server;
    . . .
}

Examples can have line numbers, and every code block has a ‘Copy’ button to copy just the code:

  1. const test = 'hello';
  2. const other = 'world';
  3. console.log(test, other);

Here’s output from a command with a secondary label:

Output
Could not connect to Redis at 127.0.0.1:6379: Connection refused

This is a non-root user command example:

  1. sudo apt-get update
  2. sudo apt-get install python3

This is a root command example:

  1. adduser sammy
  2. shutdown

This is a custom prefix command example:

  1. FLUSH PRIVILEGES;
  2. SELECT * FROM articles;

A custom prefix can contain a space by using \s:

  1. FLUSH PRIVILEGES;
  2. SELECT * FROM articles;

Indicate where commands are being run with environments:

  1. ssh root@server_ip
  1. echo "Secondary server"
  1. echo "Tertiary server"
  1. echo "Quaternary server"
  1. echo "Quinary server"

And all of these can be combined together, with a language for syntax highlighting as well as a line prefix (line numbers, command, custom prefix, etc.), and even an environment and label:

index.html
  1. <html>
  2. <body>
  3. <head>
  4. <title>My Title</title>
  5. </head>
  6. <body>
  7. . . .
  8. </body>
  9. </html>

Step 3 — Callouts

Here is a note, a warning, some info and a draft note:

Note: Use this for notes on a publication.

Warning: Use this to warn users.

Info: Use this for product information.

Draft: Use this for notes in a draft publication.

A callout can also be given a label, which supports inline markdown as well:

Labels support inline markdown

Note: Use this for notes on a publication.

You can also mention users by username:

@MattIPv4

Step 4 — Embeds

Embedding a YouTube video (id, height, width):

Embedding DNS record lookups (hostname, record types…):

Demonstrating how glob matching works (pattern, tests…):

Glob embeds can also be written as multiple lines if needed:

Embedding a CodePen example (username, pen ID, flags…):

See the Pen vwPzeX by MattCowley (@MattCowley) on CodePen.

Setting a custom height for the CodePen:

See the Pen vwPzeX by MattCowley (@MattCowley) on CodePen.

Enabling dark mode on a CodePen embed:

See the Pen vwPzeX by MattCowley (@MattCowley) on CodePen.

Setting the CodePen embed to only run when clicked:

See the Pen vwPzeX by MattCowley (@MattCowley) on CodePen.

Changing the default table of a CodePen embed:

See the Pen vwPzeX by MattCowley (@MattCowley) on CodePen.

Making the CodePen editable by the user (requires a Pro CodePen account):

See the Pen Yxzjdz by chriscoyier (@chriscoyier) on CodePen.

Combining different CodePen embed flags together is also supported:

See the Pen vwPzeX by MattCowley (@MattCowley) on CodePen.

Embedding a terminal recording from Asciinema:

Setting a custom number of cols and rows for the Asciinema terminal:

Step 5 — Tutorials

Certain features of our Markdown engine are designed specifically for our tutorials and are locked behind additional flags.

<p style=‘color: red;’>Raw HTML is supported with the html flag.</p>

[rsvp_button 1234 “Marketo RSVP buttons are behind the rsvp_button flag”]

[terminal ubuntu:focal Terminals are behind the terminal flag]

Conclusion

Please refer to our writing guidelines for more detailed explanations on our style and formatting.