Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
A free, customizable, multilingual Hugo theme for professionals and small businesses with landing, services, office, and blog pages.
Magnolia is a free, open-source Hugo theme (MIT license) that lets professionals and small businesses launch a responsive, multilingual landing page and blog without hand-coding templates. The theme is built on Bootstrap 5 and SCSS and is maintained by developer ololiuhqui.
Magnolia is a Hugo theme that ships with a complete example site, so you never need to run hugo new site. Instead you download the latest example-site release, edit the TOML configuration files in config/_default, and run hugo serve -D to preview your site. The theme requires Hugo extended v0.129.0 or newer because it compiles SCSS. English is the default language, and the repo includes a full Italian translation example.
config/_default/languages and the matching folder in /content. Permalinks can be localized per language, for example /contacts in English and /contatti in Italian.assets/scss/custom-variables.scss; the theme uses Bootstrap 5 so you can override with standard SCSS.assets/img/meta-image, a robots.txt that points to the sitemap index, and an optional config flag to block AI scrapers.featured.webp), publish and expiration dates, tags, automatic table of contents, and related posts based on tagging. The whole blog can be disabled via disableKinds and ignoreFiles if you only want a landing page.config.toml to track performance.hugo, run ln -s public/en/404/index.html public/404.html to get a working 404 on GitHub Pages.The theme is aimed at professionals, freelancers, and small businesses that need a polished online presence. Hugo beginners benefit from the documented example site and ready-to-use config, while multilingual site owners get a language-switching dropdown and localized URLs. Developers who want to customize can use the SCSS variables and Page Bundles for images.
content/en/pages, content/en/posts, content/en/tags) to understand Page Bundles, archetypes, and multilingual content organization.config/_default/config.toml and the per-language config files in config/_default/languages to set site name, pages, and metadata.hugo serve -D to preview, or hugo to build static files for deployment.assets/scss/custom-variables.scss, replace images in assets/img, and edit page content in content/<language>/pages.Pros: Fully free under MIT; responsive and multilingual out of the box; blog can be disabled for landing-only sites; includes an example site and strong documentation; uses Bootstrap 5 and SCSS for deep customization.
Cons: The README notes that accessibility is not yet fully addressed, only some Bootstrap variables are reassigned (so theme-level styling may need extra SCSS), and an RSS feed template for posts has not yet been added — you would need to provide your own for feed-based automations.
Magnolia is free and open source under the MIT license. You can use it for commercial projects; the only requirement is keeping the license attribution. The author accepts optional donations via BuyMeACoffee, Bitcoin, LiberaPay, and GitHub Sponsors.
Yes, Magnolia is released under the MIT license, so it is free to use, modify, and sell. Donations to the author are optional.
Magnolia requires Hugo extended v0.129.0 or newer. Use the extended edition so the theme's SCSS compiles correctly.
Duplicate a language configuration file in config/_default/languages (such as en.toml), rename it to your language's RFC 5646 code, then duplicate the corresponding folder in /content. Translate the TOML variables and page metadata, and keep the same translationKey across languages to enable translated tags and permalinks.
Yes, open config/_default/config.toml and uncomment disableKinds = ['taxonomy', 'term'] to hide tag pages, or also add ignoreFiles = ['posts/*'] to hide posts completely. The theme then works as a plain landing site.
Change the color palette by editing assets/scss/custom-variables.scss. Replace images such as the homepage main.webp, favicon, and meta image in assets/img — the file extension can change but the filename must match the current value.
