Orion vs. Hugo
Orion now has better Twitter integration than Hugo, and it's not even close:https://t.co/7WBeP73Md0
— SunStar Systems (@sunstarsys) June 27, 2026
Preface
I understand that tech comparisons are a religious taboo in many circles. The main point I’m trying to convey is that while Orion is billed as an Enterprise Jamstack Wiki, it has many viable use-cases outside of that specific problem domain.
However, the gist of this article is to represent Orion’s Apache-Licensed SSG as a better SSG than Hugo for you and your software engineering teams. It has more power, more performance, more core features, and a lot easier to customize. Plus it is well-documented and has unlimited potential for true power users out there, just like you!
@SunStarSys/orion
NKOTB
Opinionated w/ Gradual Learning Curve
@GoHugoIo/hugo
Popular
Robust Third-Party Themes and Extensions
Opinionated w/ Steep Learning Curve
Common Feature Sets
Apache Licensed
High Performance (max document processing speed at ~1K documents per second)1
Cached Dependency Management
Sophisticated Security Model
Orion as Hugo++
(Configurable) Full power of Django Templates within Markdown sources
Robust Control Flow, For-Loop Constructs, and Django Filters
Full Access To YAML/CSV attached documents as data structures
WebGL-enabled Vector Graphics2
Aggregate Vector Operations on Table Data via
PDLssiskips file headersEasy to Use
Flexible, True Incremental Builds
Per-file/directory (aka fine-grained) ACL, including controls on the build’s software stack and configuration itself
Integrated PCRE Search
Orion CMS Editor Use Cases
Document Upload Linting based on MIME-type (Markdown, Perl, YAML, CSV, )
Automatic Link Validation / Titleization
Real Time Preview Rendering for
@-shortlinks (eg tweets)Electric HTML/Tab Completion
Multilingual w/ AI translation functionality OOTB — including Chinese, Hebrew and Arabic
templated article converter
Orion Incremental Builds
O(N) vs. O(1)
If you want your wiki’s authors and editors to be happy with your build system, it has to support incremental builds as a first order feature, and not a marketing gimmick tacked on as an afterthought.
Which means you want Orion!
Hugo’s Primitive Dependency Cache (i.e., Gilding the Lilly)
Comically absurd levels of meaningless puffery in very detailed architectural diagrams which deftly avoid stating the elepants in the room…
https://deepwiki.com/gohugoio/hugo/3.6-dependency-tracking-and-caching
Here’s what that page doesn’t say about Hugo dependency management:
inflexible, internally generated DAG based on node/leaf/bundle tree layouts
never written to disk
Hugo’s untracked readFile calls break incremental build support
Let’s examine the elephant in the room in this article:
Hugo does not track content dependencies that arise from shortcodes, and makes rigid DAG assumptions about the content dependencies it does track.
Orion’s fully tracked ssi calls
Orion natively tracks fileB.md.en‘s dependency on fileA.md.en and will rebuild it whenever fileA.md.en is altered; and dependencies are supplementally configurable per document, not simply assumed by heirarchical structure.
Orion’s Dependency graph is almost never a DAG. And it is an essential component of the build, not merely a half-backed optimization the way it is with Hugo.
For example, this webpage’s markdown source itself has a Dependencies: *.md.en header (you can see it in the above Editor screenshot of it, or by clicking on the source link where the title and author information is displayed) which is used by Orion to generate the items under the “Index” header in the footer of the page.
All of the files in this directory are similarly configured to cross-reference each other!
DAG is a gross oversimplification of the content dependency requirements in real-world use cases.
Version Control
Git and Fine-Grained ACLs
Impossible in any DVCS like git — read access to the repository implies access to its entirety, including full history. Ditto for push access: it is all-or-nothing, which is a deal-breaker in a wiki context where different repository users require granular file/directory write authorization/access controls.
Subversion
Trivial per-user integration with git/GitHub via the git-svn bridge bundled as an addon extension by every git distribution.
Footnotes
1. For an apples-to-apples comparison I ported a subset of the https://www.openoffice.org JBake source tree @apache/openoffice-org to Hugo and benchmarked it against a simple hyde based theme that just culled the body innerHTML out of the .html sources (renamed as .md files with embedded html) a’la
{{ define "main" -}}
<div class="post">
<h1>{{ .Title }}</h1>
<time datetime={{ .Date.Format "2006-01-02T15:04:05Z0700" }} class="post-date">{{ .Date.Format "Mon, Jan 2, 2006" }}</time>
{{ $matches := findRESubmatch `(?s)<body[^>]*>(.*?)</body>` .Content }}
{{ range $matches }}{{ index . 1 | safeHTML }}{{ end }}
</div>
{{ if .Site.Config.Services.Disqus.Shortname -}}
<h2>Comments</h2>
{{ template "_internal/disqus.html" . }}
{{- end }}
{{- end }}
And here is the hugo.toml file:
baseURL = 'https://openoffice.org/'
languageCode = 'en-us'
title = 'My New Hugo Site'
theme = "hyde"
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
It typically took 8-12 seconds (sometimes up to 30s) to process 10K such files. When compared to @SunStarSys/orion build ./test.sh ooo which consistently builds over 20K such files in roughly 2-3x the time, it seems there is performance parity between them on the least complex yet very large websites like https://www.OpenOffice.org.
However, Orion is capable of so much more if you need true flexibility and correct incremental build support, because we think you know what works best for your site, unlike the rest of the overhyped SSG community around Hugo.
2. Full support for fenced asy markdown blocks with sources coded in @vectorgraphics/asymptote .