---
title: "Hugo tips: How to create author pages | Netlify"
description: "Realize the speed, agility and performance of a scalable, composable web architecture with Netlify. Explore the composable web platform now!"
source: "https://www.netlify.com/blog/2018/07/24/hugo-tips-how-to-create-author-pages/"
last_updated: "2026-07-15T22:37:04.000Z"
---
Ever wondered how to create an author page in Hugo that displays the author’s name, their bio, and a list of their articles, like WordPress does? It can be done 🙌

## Create authors taxonomy

Hugo includes support for user-defined groupings of content called [taxonomies](https://gohugo.io/content-management/taxonomies/).

To create our `authors` taxonomy, add the following block to your Hugo site **config.toml**:

```
[taxonomies]  author = "authors"
```

If you’re already using `tags` or `categories` as taxonomies, make sure to add them to the config as well. Hugo creates `tags` and `categories` taxonomies by default, but they’ll stop working once you define any custom taxonomies unless you include them too.

```
[taxonomies]  author = "authors"  tag = "tags"  category = "categories"
```

## Add author metadata

Now that we have the authors taxonomy, we need a place to store information about each author:

1.  Create an `authors` directory under `content`.
    
2.  Create a subdirectory for each author. The name of the subdirectory should be the slugified version of the author’s name; for example, if the author’s name is **Ursula K. Le Guin**, the folder will be **ursula-k-le-guin**.
    
3.  Add an `_index.md` (note the underscore is important!) with information about the author in each subdirectory.
    

```
└── content/    └── authors/        ├── author-1/        │   └── _index.md        ├── author-2/        │   └── _index.md        └── author-3/            └── _index.md
```

_\_index.md_ example for an author:

```
---name: Ursula K. Le Guinphoto: 'https://upload.wikimedia.org/wikipedia/commons/6/6d/Ursula_K_Le_Guin.JPG'twitter: @ursulaleguin---Ursula Kroeber Le Guin (October 21, 1929 – January 22, 2018) was an Americannovelist. The New York Times described her as “America’s greatest  science fiction writer”, although she said that she would prefer to be known as an “American novelist”.
```

## Create author templates

Hugo searches for the layout to use for a given page in a [well defined order](https://gohugo.io/templates/lookup-order/#examples-layout-lookup-for-taxonomy-list-pages), starting from the most specific.

To create a specific author template:

1.  Create an `authors` folder under `layouts`.
2.  Add a `list.html` template to display information about the author and list their posts.

```
└── layouts/    └── authors/        └── list.html
```

_layouts/authors/list.html_

```
<h1>{% raw %}{{ .Params.name }}{% endraw %}</h1><img src="{% raw %}{{ .Params.photo }}{% endraw %}" alt=""/>
<h2>Bio</h2>{% raw %}{{ .Content }}{% endraw %}{% raw %}{{ with .Params.twitter }}{% endraw %}  <p>    <a href="https://twitter.com/{% raw %}{{ substr . 1 }}{% endraw %}">      Follow {% raw %}{{ $.Params.name }}{% endraw %} on Twitter    </a>  </p>{% raw %}{{ end }}{% endraw %}
<h2>Articles</h2><ul>{% raw %}{{ range .Data.Pages }}{% endraw %}    <li><a href="{% raw %}{{ .Permalink }}{% endraw %}">{% raw %}{{ .Title }}{% endraw %}</a></li>{% raw %}{{ end }}{% endraw %}</ul>
```

By default, Hugo will also use the `list.html` template to render a list of all existing authors. Using the same template to display different things can get messy quickly 🙈

Instead of adding extra logic to our `list.html`, we can take advantage of [Hugo’s template lookup order](https://gohugo.io/templates/lookup-order/#examples-layout-lookup-for-taxonomy-terms-pages) for taxonomy terms, and add a template called `terms.html` to render the list of authors:

```
└── layouts/    └── authors/        └── list.html        └── terms.html
```

_layouts/authors/terms.html_

```
<h1>Authors</h1><ul>{% raw %}{{ range .Data.Pages }}{% endraw %}  <li><a href="{% raw %}{{ .Permalink }}{% endraw %}">{% raw %}{{ .Params.name }}{% endraw %}</a></li>{% raw %}{{ end }}{% endraw %}</ul>
```

To disable listing authors all together, add `taxonomyTerm` to the list of `disableKinds` in your **config.toml**

```
disableKinds = ["taxonomyTerm"]
```

## Add authors to posts

We can now add a list of one or more `authors` to the front matter of our posts.

```
---title: "Ursula K. Le Guin: Conversations on Writing"authors:  - Ursula K. Le Guin  - David Naimon---In a series of interviews with David Naimon (Between the Covers), Le Guindiscusses craft, aesthetics, and philosophy in her fiction, poetry, andnonfiction respectively.
```

In the template that renders your post, you can show additional information about the author(s), like an avatar and a link to their page, with the following snippet:

```
{% raw %}{{- range .Params.authors }}{% endraw %}  {% raw %}{{- with $.Site.GetPage "taxonomyTerm" (printf "authors/%s" (urlize .)) }}{% endraw %}    <figure>      <img src="{% raw %}{{ .Params.photo }}{% endraw %}" alt=""/>      <figcaption>        <a href="{% raw %}{{ .Permalink }}{% endraw %}">{% raw %}{{ .Params.name }}{% endraw %}</a>      </figcaption>    </figure>  {% raw %}{{ end }}{% endraw %}{% raw %}{{ end }}{% endraw %}
```

## Example site

Want to see an example in action? Take a look at this [example GitHub repository](https://github.com/imorente/hugo-multiauthor-example) for a Hugo site using this technique.

### Share

-   [X (fka Twitter)](https://twitter.com/intent/tweet?text=Hugo tips: How to create author pages&url=https://www.netlify.com/blog/2018/07/24/hugo-tips-how-to-create-author-pages//)
-   [LinkedIn](https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.netlify.com%2Fblog%2F2018%2F07%2F24%2Fhugo-tips-how-to-create-author-pages%2F%2F)
-   [Facebook](https://www.facebook.com/sharer.php?u=https://www.netlify.com/blog/2018/07/24/hugo-tips-how-to-create-author-pages//)
-   [Bluesky](https://bsky.app/intent/compose?text=Hugo tips: How to create author pages+https://www.netlify.com/blog/2018/07/24/hugo-tips-how-to-create-author-pages//)

* * *

### Tags

-   [Hugo](/blog/tags/hugo/)
-   [Tutorial](/blog/tags/tutorial/)

## Keep reading

![](/_astro/3f45eb6eda4ea8814be310e3df4a7883a5bd9ba0-1200x675_ZcBDUS.webp)

Guides & Tutorials May 15, 2026

[

### How to build a real-time AI chatbot in minutes with Netlify Agent Runners (no backend)

](/blog/how-to-build-a-real-time-ai-chatbot-in-minutes-with-netlify-agent-runners-no-backend)

-   ![Profile picture of Nahrin Jalal](/_astro/f0e7c8f227a03fe58340c99ef5439d5a896c0733-272x272_Z23kDpD.webp)
    
    Nahrin Jalal
    

![](/_astro/8fe9e8a23f944c9912003233d99a2df7fee637cf-1600x900_Z1gMhmf.webp)

Guides & Tutorials May 15, 2026

[

### Tracking AI search traffic: how to use Netlify Log Drains to maximize AEO

](/blog/tracking-ai-search-traffic)

-   ![Profile picture of Nahrin Jalal](/_astro/f0e7c8f227a03fe58340c99ef5439d5a896c0733-272x272_Z23kDpD.webp)
    
    Nahrin Jalal
    

## Recent posts

News & Announcements July 14, 2026

[

### More headroom, a lower per-credit rate, and a bill you can predict: introducing new Pro plan tiers

](/blog/new-pro-plan-tiers)

-   ![Profile picture of Gehrig Kunz](/_astro/b4e9f58d914d1334ea70d53ea55a1f26b26f1445-512x512_17SwOI.webp)
    
    Gehrig Kunz
    

News & Announcements July 13, 2026

[

### Netlify inside of Claude Design

](/blog/netlify-inside-of-claude-design)

-   ![Profile picture of Sean Roberts](/_astro/bbf2243f8171dbddd80ab2103622106cef84d125-512x512_Z1d2LKE.webp)
    
    Sean Roberts
    

News & Announcements June 25, 2026

[

### Netlify Functions, designed for Agent Experience

](/blog/netlify-functions-designed-for-agent-experience)

-   ![Profile picture of Eduardo Bouças](/_astro/52958f21e8450baf6d8e60302341a984e220c0cd-512x512_13VDlu.webp)
    
    Eduardo Bouças
    

![](/_astro/3f255b372fa958df35802666ee33b4609b2d71bd-1200x1586_1VtE2D.webp)

### How do the best dev and marketing teams work together?

[Access the report](https://www.netlify.com/reports/2024-leadership-trend-report/access/)