Figure shortcode
To override Hugo’s embedded figure shortcode, copy the source code to a file with the same name in the layouts/_shortcodes directory.
Example
With this markup:
{{< figure
src="/images/examples/zion-national-park.jpg"
alt="A photograph of Zion National Park"
link="https://www.nps.gov/zion/index.htm"
caption="Zion National Park"
class="ma0 w-75"
>}}Hugo renders this HTML:
<figure class="ma0 w-75">
<a href="https://www.nps.gov/zion/index.htm">
<img
src="/images/examples/zion-national-park.jpg"
alt="A photograph of Zion National Park"
>
</a>
<figcaption>
<p>Zion National Park</p>
</figcaption>
</figure>Which looks like this in your browser:

Zion National Park
Arguments
- src
- (
string) Thesrcattribute of theimgelement. Typically this is a page resource or a global resource. - alt
- (
string) Thealtattribute of theimgelement. - width
- (
int) Thewidthattribute of theimgelement. - height
- (
int) Theheightattribute of theimgelement. - loading
- (
string) Theloadingattribute of theimgelement. - class
- (
string) Theclassattribute of thefigureelement. - link
- (
string) Thehrefattribute of the anchor element that wraps theimgelement. - target
- (
string) Thetargetattribute of the anchor element that wraps theimgelement. - rel
- (
rel) Therelattribute of the anchor element that wraps theimgelement. - title
- (
string) Within thefigurecaptionelement, the title is at the top, wrapped within anh4element. - caption
- (
string) Within thefigurecaptionelement, the caption is at the bottom and may contain plain text or markdown. - attr
- (
string) Within thefigurecaptionelement, the attribution appears next to the caption and may contain plain text or markdown. - attrlink
- (
string) Thehrefattribute of the anchor element that wraps the attribution.
Image location
The figure shortcode resolves internal Markdown destinations by looking for a matching page resource, falling back to a matching global resource. Remote destinations are passed through, and the render hook will not throw an error or warning if unable to resolve a destination.
You must place global resources in the assets directory. If you have placed your resources in the static directory, and you are unable or unwilling to move them, you must mount the static directory to the assets directory by including both of these entries in your site configuration:
module:
mounts:
- source: assets
target: assets
- source: static
target: assets
[module]
[[module.mounts]]
source = 'assets'
target = 'assets'
[[module.mounts]]
source = 'static'
target = 'assets'
{
"module": {
"mounts": [
{
"source": "assets",
"target": "assets"
},
{
"source": "static",
"target": "assets"
}
]
}
}
