Hugo, without the terminal.

Run Hugo locally, review the site and publish when you're ready – from one Mac app.

Free · macOS 26 or later

HugoKit showing server controls, site health, content, build logs and publishing.

How it works

Preview, preflight and publish.

HugoKit works with the Hugo executable and project files already on your Mac – nothing to move or convert.

Preflight

Check the site before you publish.

Preflight runs before every publish. Suggested fixes are shown as diffs and applied only after approval.

Publish

Publish where your site lives.

Each target stores its own build settings, status and history. Review Changes counts the added, changed and deleted files before a publish, and HugoKit checks the public URL afterwards when one is configured.

In the app

What you can do

All your sitesKeep your Hugo sites together: add one, clone from Git or scan a folder of projects.

Every Hugo site you have, in one sidebar. Add them one at a time with ⌘O, clone one straight from a Git URL, or point HugoKit at the folder you keep your projects in and let it find them itself.

  • Watch a folder: HugoKit scans up to three levels deep, adds every folder that holds a Hugo config, and skips the ones that never contain a site of their own – public, resources, themes, archetypes, .git, node_modules, .build and vendor.
  • A folder counts as a site when it has a Hugo config file. If the config is there but the folders around it look incomplete, the site is added with a warning rather than turned away.
  • Add a site straight from a Git URL – paste the repository, choose where to clone it, and HugoKit clones and adds it in one step. A token is only ever sent to github.com.
  • Pin the ones you use most, and give each site an emoji so the sidebar is scannable at a glance.
  • Each site keeps its own settings – its port, its content toggles, its deploy destinations.
Site healthFind broken links, missing alt text, large images, deprecated config and content issues.

Preflight blocks what breaks a deployed site. Site Health – ⇧⌘H from anywhere – reports on the site itself: broken links, images without alt text, config keys Hugo has deprecated. Findings are listed for you to act on; Site Health does not edit the site.

  • Nine checks run in parallel: broken internal links, images without alt text, images over 500 KB, deprecated config keys, a missing favicon, build-time regressions, front matter gaps, draft ratio and a stale search index.
  • A score out of 100 – an error costs 10 points, a warning 5, an info 2 – and every issue is tagged CONTENT, PERF, A11Y or CONFIG.
  • Front matter issues are aggregated per field, so 200 posts without a date cost you one issue, not two hundred.
  • It reads the built site in public/, so build before you read too much into the score.
Template previewChoose a layout and see it rendered with a matching page while the server is running.

A layout file is invisible until a page renders it. Template Preview (⇧⌘T) puts your layouts on the left and the rendered page on the right, served by your own dev server – so you can see what single.html actually does without hunting for a URL that exercises it.

  • Your layouts/ and every theme’s layouts/ in one tree – and where both define the same file, the project’s version wins, exactly as Hugo resolves it.
  • Preview with picks a real page from your content that the selected template actually renders; partials, shortcodes and baseof fall back to the home page.
  • The preview is live: save the file in your editor and it reloads like any other page.
  • It needs the dev server running – if it is stopped, the panel says so and offers to start it.
Content overviewFind pages, read what changed and edit front matter, with the page's own files beside it.

The Content page counts what is in the site and lists the files. It is built for a typo, a front matter field, a date – not for writing. A front matter inspector sits beside each file for exactly those fields; real writing stays in your own editor, and the preview reloads on save either way.

  • Pages, sections, word counts and images per site – plus how many are drafts, future-dated or expired. A page bundle shows as one entry with its images, not a folder of loose files.
  • Search the list by title, section or path with ⌘F. Matching ignores case and diacritics, so aben finds Åben.
  • With a Raw editor active, ⌘F opens a native find bar inside the sheet and ⌥⌘F adds replace controls. Replace All is one undo step, and changes stay in the buffer until Save.
  • A Changed filter lists what git reports as new, modified, renamed or deleted since the last commit, with the word for which on each row. Sites without git do not show it.
  • Edit the front matter in a panel beside the file – title, description, date, tags and categories, with suggestions drawn from the site’s own taxonomies – or use the Raw tab, a plain monospaced editor with an explicit Save (⌘S). Both edit the same text.
  • Below the front matter: the files in the page’s bundle, with Quick Look and insert-a-reference, and the pages that link to this one with the line each link sits on.
  • In the Raw tab, an outline of the document’s headings. Click one and the cursor moves to that line.
  • New Content offers the site’s own archetypes. A directory archetype creates a leaf bundle with the archetype’s files inside it.
  • See every tag and category across the site, catch a duplicate spelling, and rename one everywhere in a single pass you can undo.
  • On a site with configured languages, a page’s translations can be grouped onto one row. Read-only, and filenames are left as the site writes them.
  • Close a file with unsaved changes and HugoKit asks first.
  • Open in editor is one click away, in whatever editor you already use.
Config editorEdit the Hugo config as fields or raw text, then check the diff before anything is saved.

Your config is the file most likely to break a site, and the one you edit least often – so you never quite remember what the keys are called. HugoKit gives it a form, a raw text tab, and one rule: nothing is written to disk until you have seen the diff.

  • The form is grouped: Basics, Build, Author, Params, Markup, Taxonomies, Main Menu and Additional Fields.
  • The two tabs are the same document – type a key in Raw and it turns up in the form, and the other way round.
  • Save does not save. It shows every changed key, old value against new; you approve, and then it is written.
  • TOML, YAML or JSON – the format is read from the file, and keys you never touched keep their place, their spelling and their comments.
Snapshots and undoBefore HugoKit changes a file, it keeps a snapshot and records a diff you can restore.

Nothing changes without a diff, and everything can be undone. Whenever HugoKit writes to your site – a preflight fix, a config save, a content edit, a theme switch – it snapshots the affected files first.

  • Snapshots live in the app’s own storage, never in your repository – so they can’t be committed or published by accident.
  • Every write is recorded as a per-file diff. Read it in place, copy it out, or undo just that file.
  • Restore brings back a whole operation – and takes its own snapshot first, so even an undo can be undone.
  • Per site, you decide: turn the layer off, or set how many versions of each file to keep.
More features 8 more
Create new sitesStart with the HugoKit Starter or Hugo's blank template, with Git setup if you want it.

⇧⌘N gives you two templates. The HugoKit Starter is a complete, working site – kept as a real, running Hugo project inside the app rather than a pile of snippets. Blank is the plain output of hugo new site with a small welcome page.

  • The Starter always brings the essentials – a 404 page, robots.txt, a sitemap, an RSS feed, an SEO partial and light/dark mode – plus an archive, a colophon, a ⌘K search palette, a sharing image drawn per page and the whole site as llms.txt.
  • You pick the rest up front: a blog with sample posts, a projects section, an about page, a theme toggle and tags.
  • The Starter is TOML-only and needs Hugo 0.146 or newer; Blank lets you choose the config format.
  • Either one can initialise a git repository, open the site and start the server the moment it is done.
Theme scaffoldingSee installed themes, create a blank one and preview its layouts as you work.

The Themes page lists what is installed in themes/. New Blank Theme scaffolds a placeholder to build on – minimal layouts and styles, not a finished design – by running Hugo’s own hugo new theme underneath.

  • Letters, numbers and hyphens; the name becomes the folder under themes/.
  • A checkbox decides whether the sample pages hugo new theme generates come along. layouts/, assets/ and archetypes/ are left alone either way.
  • Set it as the active theme on creation, and the next build uses it.
  • Removing a theme deletes themes/ and touches nothing else in the site.
Hugo ReferenceLook up 195 Hugo reference entries without leaving the app.

Hugo’s reference material, indexed and searchable inside the app, in a window of its own (⌘2). Look up a function name, a page variable or a config key without switching to a browser.

  • 195 entries across twelve categories: functions, methods, page and site variables, templates, partials, shortcodes, front matter, config, content, build and performance.
  • Opens in its own window and stays out of the way of the site you are working on.
Keyboard shortcutsUse shortcuts for Publish, Preflight, Site Health, Template Preview and Hugo Reference.

The everyday actions have their own shortcuts. The rest sit in the menus, under the same names they carry in the app.

  • ⌘P publish · ⇧⌘P preflight · ⌘D deploy
  • ⇧⌘H site health · ⇧⌘T template preview · ⌘2 Hugo Reference
  • ⌘O open a site · ⇧⌘N create one · ⌘, settings
  • ⌘F search the active context – Content list or Raw document · ⌥⌘F replace in Raw · ⌘K insert a link while editing
Menu bar extraStart and stop sites, open previews and check server status without opening the main window.

Closing the window leaves HugoKit running in the menu bar, with every site and its server status one click away.

  • Start or stop any site from the menu, and open its localhost URL in the browser.
  • The status dot follows the server: green running, amber busy, red failed, grey idle.
  • Turn the icon off in Settings → General.
NotificationsChoose which server, build and publish events are worth a macOS notification.

Native macOS notifications for the things that finish while you are looking at something else. Every event has its own toggle, so you can keep the publish result and silence the rest.

  • Six events: server started, server stopped unexpectedly, build succeeded, build failed, publish succeeded, publish failed.
  • The toggles live in Settings → Notifications.
  • If you have denied notification permission, HugoKit says so and links straight to System Settings.
Hugo, managedAlready have Hugo? HugoKit finds it. If not, it can install Hugo Extended for you.

HugoKit looks for Hugo in the locations it is usually installed, and offers to install Hugo Extended when it finds none.

  • It checks Homebrew’s paths, /usr/local/bin, ~/.local/bin and /usr/bin, then falls back to which hugo.
  • Nothing found? With Homebrew installed it runs brew install hugo; without it, it downloads the latest Hugo extended release from GitHub and installs it to ~/.local/bin.
  • Extended is the build that compiles SCSS, and most themes need it – so that is the variant it installs.
  • Rather do it yourself? HugoKit shows the command, links to Hugo’s own instructions, and gives you a Retry Detection button.
Native and privateBuilt in SwiftUI, with deploy credentials in Keychain and no account system or backend.

Built in SwiftUI, with no account system or backend service. HugoKit communicates with Hugo, Git and the host you publish to.

  • Your files stay where they are: nothing is converted, moved or copied into an app format.
  • Deploy credentials go into the macOS Keychain, never into a config file in your repository.
  • No sign-in and no cloud service in the loop – nothing leaves your Mac until you publish it yourself.
Explore the documentation

Why it exists

I build and maintain several Hugo sites, and I wanted one place to start the server, check a build and publish. HugoKit started as a tool for my own work, and it's still the app I use on those sites.

HugoKit is a personal, non-commercial project. Donations help cover its running costs: Donate

FAQ

Does it work with my existing Hugo site?

Yes – add the site's folder or watch a parent folder. HugoKit uses the project as it is, without converting its files.

Does it replace my editor?

No – keep writing in the editor you already use. HugoKit handles the server, checks and publishing, and reloads the preview when files change.

Any editorPlain Markdown
Do I need Hugo installed first?

Not necessarily. If Hugo is already installed, HugoKit uses it; otherwise it offers to install Hugo Extended during setup.

Auto-install
Where does my content live?

Right where it already is: in the project folder on your Mac. HugoKit does not copy content into its own format.

What if HugoKit breaks something?

That's what snapshots are for. Before HugoKit writes to a file, it keeps a copy and records a diff. You can restore one file or the full operation, and Preflight fixes still require approval.

SnapshotsDiffsUndo
Where can it publish to?

GitHub Pages, FTP and SFTP. You can keep one target or several for each site. Netlify and Vercel are not supported as direct targets.

GitHub PagesFTP / SFTPMultiple targets
Is it really free?

Yes. It's free to download and use, with no account or subscription.

Which Macs does it run on?

Any Mac running macOS 26 (Tahoe) or later.

macOS 26+
How do updates work?

HugoKit uses Sparkle to check for signed updates from hugokit.com. It shows the release notes and asks before installing. Sparkle system profiling is disabled.

Built-in updatesRelease notes in-appSigned
Who's behind it?

I'm Anders Mortensen, based in Denmark. I built HugoKit for the Hugo sites I maintain and continue to develop it as a personal project. Bug reports and feature requests are welcome by email.

Download HugoKit

HugoKit is a Mac app for running Hugo sites locally and publishing them to GitHub Pages, FTP or SFTP.

Download for macOS
Version
Requires
macOS 26 or later
Download
8.7 MB
Architecture
Universal – Apple silicon and Intel
Released
17 October 2026

Questions and bug reports are welcome at hello@hugokit.com.

What is Hugo?

Hugo is an open-source static site generator: you write content and templates, and Hugo turns them into a complete site of static files.

Why people use it

FastHugo builds most sites in less than a second, including sites with thousands of pages.
Live preview`hugo server` rebuilds the site and reloads the browser after a file is saved.
Plain filesContent is stored in Markdown files that can be edited, copied and versioned.
Host anywhereThe build output is HTML, CSS, JavaScript and other static files.
Built-in toolsHugo includes menus, taxonomies, image processing, RSS and sitemap generation.
Free and open sourceHugo is free and open source.

HugoKit runs that same setup from a Mac interface, alongside whichever editor you prefer.

Learn more at gohugo.io

Latest release · 17 October 2026

HugoKit 0.5.0

0.5.0 adds Split Preview, page duplication, reusable archetypes, a media library, translation drafts and batch editing. Content search now includes page text.

  • 01 Split PreviewEdit Raw beside the actual Hugo-rendered page. Save updates the preview after Hugo rebuilds.
  • 02 Duplicate PageCreate an independent draft from an existing page, with a fresh date and cleared URL and publication settings.
  • 03 Save as ArchetypeTurn a page into a reusable Hugo content template.