Beautiful Hugo supports five comment systems, social sharing buttons, GitHub repository buttons, and 42 social icon links in the footer.
Comment Systems
All comment systems are enabled per-page with comments: true in front matter. Only one comment system can be active at a time.
Disqus
The classic comment system, integrated via Hugo’s built-in Disqus support:
[Services]
[Services.Disqus]
Shortname = "your-disqus-shortname"
[Params]
delayDisqus = true
delayDisqus = true defers loading until the user clicks a “Show comments” button, improving page load performance.
Giscus
Giscus uses GitHub Discussions as a comment backend. It’s privacy-friendly and requires no external service:
[Params.giscus]
repo = "owner/repo"
repoId = "R_kgDO..."
category = "Announcements"
categoryId = "DIC_kwDO..."
mapping = "pathname"
strict = "0"
reactionsEnabled = "1"
emitMetadata = "0"
inputPosition = "top"
theme = "preferred_color_scheme"
lang = "en"
lazyLoading = true
Get your configuration values from giscus.app.
Utterances
Utterances uses GitHub Issues as a comment backend — a lighter alternative to Giscus:
[Params.utterances]
repo = "owner/repo"
issueTerm = "pathname"
theme = "preferred-color-scheme"
label = "comment"
Get your configuration from utteranc.es.
Cusdis
Cusdis is a lightweight, privacy-friendly comment system:
[Params]
cusdisID = "your-app-id"
Get your App ID from cusdis.com.
Staticman
Staticman adds comments as static data files via Git pull requests, with optional reCAPTCHA spam protection:
[Params.staticman]
api = "https://your-staticman-instance.herokuapp.com/v3/entry/github/owner/repo/main/comments"
[Params.staticman.recaptcha]
sitekey = "your-site-key"
secret = "your-secret"
Social Share Buttons
Enable social sharing buttons on posts with socialShare = true. The buttons appear at the bottom of each post:
[Params]
socialShare = true
The following platforms are supported:
| Platform | Icon |
|---|---|
| Twitter / X | X logo |
| Facebook logo | |
| Reddit logo | |
| LinkedIn logo | |
| StumbleUpon | StumbleUpon logo |
| Pinterest logo | |
| Envelope icon |
Override per page:
---
title: My Post
socialShare: false
---
GitHub Buttons
Show GitHub repository buttons (star, watch, fork, follow) on any page using front matter:
---
title: My Project
ghRepo: "halogenica/beautifulhugo"
ghBadge: ["star", "watch", "fork"]
ghCount: true
---
| Param | Type | Default | Description |
|---|---|---|---|
ghRepo | string | — | GitHub repo in owner/repo format (per-page front matter only) |
ghBadge | list | — | Which buttons to show: star, watch, fork, follow. Can be set per-page or site-wide via Params.ghBadge |
ghCount | bool | true | Show count numbers on buttons. Can be set per-page or site-wide via Params.ghCount |
The buttons are loaded from ghbtns.com via lightweight iframes.
You can also set ghBadge and ghCount site-wide so they apply to every page that has a ghRepo:
[Params]
ghBadge = ["star", "fork"]
ghCount = true
Footer Social Icons
Add social links under [Params.author] and they appear as icons in the footer. Beautiful Hugo supports 42 platforms:
| Key | Platform | URL Pattern |
|---|---|---|
email | mailto:%s | |
facebook | https://www.facebook.com/%s | |
github | GitHub | https://github.com/%s |
gitlab | GitLab | https://gitlab.com/%s |
git | Git (custom URL) | %s (use full URL) |
bitbucket | Bitbucket | https://bitbucket.org/%s |
twitter | Twitter / X | https://twitter.com/%s |
slack | Slack | https://%s.slack.com/ |
reddit | https://reddit.com/u/%s | |
linkedin | https://linkedin.com/%s | |
xing | https://www.xing.com/profile/%s | |
stackoverflow | Stack Overflow | https://stackoverflow.com/%s |
snapchat | Snapchat | https://www.snapchat.com/add/%s |
instagram | https://www.instagram.com/%s | |
youtube | YouTube | https://www.youtube.com/%s |
soundcloud | SoundCloud | https://soundcloud.com/%s |
spotify | Spotify | https://open.spotify.com/user/%s |
bandcamp | Bandcamp | https://%s.bandcamp.com/ |
itchio | itch.io | https://itch.io/profile/%s |
keybase | Keybase | https://keybase.io/%s |
vk | VK | https://vk.com/%s |
paypal | PayPal | https://paypal.me/%s |
telegram | Telegram | https://telegram.me/%s |
500px | 500px | https://500px.com/%s |
codepen | CodePen | https://codepen.io/%s |
kaggle | Kaggle | https://www.kaggle.com/%s |
mastodon | Mastodon | https://%s (use full URL; rel="me" for verification) |
weibo | https://weibo.com/%s | |
medium | Medium | https://medium.com/@%s |
discord | Discord | https://discord.gg/%s |
strava | Strava | https://www.strava.com/athletes/%s |
steam | Steam | https://steamcommunity.com/id/%s |
quora | Quora | https://www.quora.com/profile/%s |
amazonwishlist | Amazon Wishlist | https://amzn.com/w/%s |
slideshare | SlideShare | https://www.slideshare.net/%s |
angellist | AngelList | https://www.angel.co/p/%s |
about | Custom link | %s (use full URL) |
lastfm | Last.fm | https://www.last.fm/user/%s |
bluesky | Bluesky | https://bsky.app/profile/%s |
orcid | ORCID | https://orcid.org/%s |
googlescholar | Google Scholar | https://scholar.google.com/citations?user=%s |
goodreads | Goodreads | https://goodreads.com/%s |
If a value starts with http:// or https://, it is used directly as the URL. Otherwise, it is interpolated into the default URL pattern.
For LinkedIn, the value should include the path prefix (e.g. in/username for a personal profile or company/username for a company page). If you provide a bare username with no /, the theme automatically prepends in/ for backward compatibility.
[Params.author]
name = "Some Person"
github = "username"
linkedin = "in/username"
mastodon = "https://mastodon.social/@username"