Built-in Shortcodes

Note
This article was last updated on 2023-02-26, the content may be out of date.

Hugo provides multiple built-in shortcodes for author convenience and to keep your markdown content clean.

Hugo uses Markdown for its simple content format. However, there are a lot of things that Markdown doesn’t support well. You could use pure HTML to expand possibilities.

But this happens to be a bad idea. Everyone uses Markdown because it’s pure and simple to read even non-rendered. You should avoid HTML to keep it as simple as possible.

To avoid this limitations, Hugo created shortcodes. A shortcode is a simple snippet that can generate reasonable HTML code and conforms to Markdown’s design philosophy.

Hugo ships with a set of predefined shortcodes that represent very common usage. These shortcodes are provided for author convenience and to keep your markdown content clean.

Use Shortcodes
  1. Shortcodes with raw string parameters ` `
  2. Shortcodes with Markdown % %
  3. Shortcodes without Markdown < >

See detail shortcodes/#use-shortcodes

figure

Documentation of figure

Example figure input:

1
{{< figure src="/images/lighthouse.jpg" title="Lighthouse (figure)" >}}

The rendered output looks like this:

Lighthouse (figure)

The HTML looks like this:

1
2
3
4
5
6
<figure>
  <img src="/images/lighthouse.jpg" />
  <figcaption>
    <h4>Lighthouse (figure)</h4>
  </figcaption>
</figure>

gist

Documentation of gist

Example gist input:

1
{{< gist spf13 7896402 >}}

The rendered output looks like this:

The HTML looks like this:

1
<script type="application/javascript" src="https://gist.github.com/spf13/7896402.js"></script>

highlight

Documentation of highlight

Example highlight input:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{{< highlight html >}}
<section id="main">
    <div>
        <h1 id="title">{{ .Title }}</h1>
        {{ range .Pages }}
            {{ .Render "summary"}}
        {{ end }}
    </div>
</section>
{{< /highlight >}}

The rendered output looks like this:

1
2
3
4
5
6
7
8
<section id="main">
    <div>
        <h1 id="title">{{ .Title }}</h1>
        {{ range .Pages }}
            {{ .Render "summary"}}
        {{ end }}
    </div>
</section>

param

Documentation of param

Example param input:

1
{{< param description >}}

The rendered output looks like this:

Hugo provides multiple built-in shortcodes for author convenience and to keep your markdown content clean.

ref and relref

Documentation of ref and relref

tweet

Documentation of tweet

Example tweet input:

1
{{< tweet user="SanDiegoZoo" id="1453110110599868418" >}}

The rendered output looks like this:

vimeo

Documentation of vimeo

Example vimeo input:

1
{{< vimeo 146022717 >}}

The rendered output looks like this:

youtube

Documentation of youtube

Example youtube input:

1
{{< youtube w7Ft2ymGmfc >}}

The rendered output looks like this:

0%