Skip to main content

Introduction

When rendering Markdown to HTML, render hooks override the conversion. Each render hook is a template, with one template for each supported element type:

Hugo supports multiple content formats including Markdown, HTML, AsciiDoc, Emacs Org Mode, Pandoc, and reStructuredText.

The render hook capability is limited to Markdown. You cannot create render hooks for the other content formats.

For example, consider this Markdown:

[Hugo](https://gohugo.io)

![kitten](kitten.jpg)

Without link or image render hooks, this example above is rendered to:

<a href="https://gohugo.io">Hugo</a>
<img alt="kitten" src="kitten.jpg">

By creating link and image render hooks, you can alter the conversion from Markdown to HTML. For example:

<a href="https://gohugo.io" rel="external">Hugo</a>
<img alt="kitten" src="kitten.jpg" width="600" height="400">

Each render hook is a template, with one template for each supported element type:

layouts/
└── _default/
└── _markup/
├── render-blockquote.html
├── render-codeblock.html
├── render-heading.html
├── render-image.html
└── render-link.html

The template lookup order allows you to create different render hooks for each page type, kind, language, and output format. For example:

layouts/
├── _default/
│ └── _markup/
│ ├── render-link.html
│ └── render-link.rss.xml
├── books/
│ └── _markup/
│ ├── render-link.html
│ └── render-link.rss.xml
└── films/
└── _markup/
├── render-link.html
└── render-link.rss.xml

The remaining pages in this section describe each type of render hook, including examples and the context received by each template.