# Best way to make menus

**URL:** <https://discourse.gohugo.io/t/best-way-to-make-menus/12094>\
**Category:** support\
**Created:** [May 22, 2018, 7:54am UTC](https://discourse.gohugo.io/t/best-way-to-make-menus/12094 "2018-05-22T07:54:39Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Boyd\_Kelly](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.gohugo.io/boyd_kelly/32/9034_2.png) [@Boyd\_Kelly](https://discourse.gohugo.io/u/Boyd_Kelly)\
**Post date:** [May 22, 2018, 7:54am UTC](https://discourse.gohugo.io/t/best-way-to-make-menus/12094/1 "2018-05-22T07:54:39Z")

</div>

I’m just getting started here and have a question about menus. Trying different themes, I notice that there seems to be 2 or 3 ways this can be done.

1. Create a folder in content (with/without a corresponding folder.md file???)
2. Add [[menu.main]] entries in the conf.toml file
3. Add menu entries in the front matter of pages.

I’m confused. What are the pros/cons of these methods?

---

<div class="post-metadata">

**Author:** ![brunoamaral](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.gohugo.io/brunoamaral/32/21144_2.png) [@brunoamaral](https://discourse.gohugo.io/u/brunoamaral)\
**Post date:** [May 22, 2018, 9:14am UTC](https://discourse.gohugo.io/t/best-way-to-make-menus/12094/2 "2018-05-22T09:14:21Z")

</div>

1. Is a leaf bundle (not sure) and only works if the theme is listing those

2. Gives you a central place to manage every link, does not give you an indication of whether it is the active page when you cycle through the menu items

3. Same as above but can be used to ascertain if the user is on the active page.

---

<div class="post-metadata">

**Author:** ![TotallyInformation](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.gohugo.io/totallyinformation/32/5668_2.png) [@TotallyInformation](https://discourse.gohugo.io/u/TotallyInformation)\
**Post date:** [May 22, 2018, 9:52am UTC](https://discourse.gohugo.io/t/best-way-to-make-menus/12094/3 "2018-05-22T09:52:34Z")

</div>

2 & 3 are aspects of the same thing - the menu feature. You can, of course, have multiple menu’s not just “main”. I think most theme’s use “main” as the site navigation menu.

I use a combination of 2 & 3. Using 2 for global settings and 3 for local overrides.

---

<div class="post-metadata">

**Author:** ![kaushalmodi](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.gohugo.io/kaushalmodi/32/2567_2.png) [@kaushalmodi](https://discourse.gohugo.io/u/kaushalmodi)\
**Post date:** [May 22, 2018, 11:55am UTC](https://discourse.gohugo.io/t/best-way-to-make-menus/12094/4 "2018-05-22T11:55:44Z")

</div>

> [@Boyd\_Kelly](#):
>
> - Add [[menu.main]] entries in the conf.toml file
> - Add menu entries in the front matter of pages.

These are the only methods that use the Hugo-native menu feature.

Using your option 2 i.e. `menu` in site config gives you a [quick way](https://gohugo.io/templates/menu-templates/#section-menu-for-lazy-bloggers) to start using menus. It’s also used to configure the menu weights, etc.

Using your option 3 i.e. `menu` in front-matter gives you a finer control on which post should go to which (could be multiple) menu(s). You also need to use the site config (option 2) though if you want to assign menu weights.

* * *

I use option 3 exclusively as I don’t like to clutter my site config with “content stuff” like menus. And I get around the “not setting of menu weights in site config” by naming my menus with numerical prefixes (as the default sort of menus is alphanumerical if weights are not specified)… and then I remove those prefixes in my layout.

---

<div class="post-metadata">

**Author:** ![Boyd\_Kelly](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.gohugo.io/boyd_kelly/32/9034_2.png) [@Boyd\_Kelly](https://discourse.gohugo.io/u/Boyd_Kelly)\
**Post date:** [May 22, 2018, 9:07pm UTC](https://discourse.gohugo.io/t/best-way-to-make-menus/12094/5 "2018-05-22T21:07:26Z")

</div>

Thank you very much for these comments. Very helpful!
