Wiki.js vs BookStack: Choosing a Self-Hosted Wiki

Compare Wiki.js and BookStack on content structure, editors, permissions, and project maintenance to pick the right self-hosted wiki for your team.

TL;DR

  • BookStack organizes content into shelves, books, chapters, and pages. Wiki.js gives you a flexible tree you organize yourself.
  • BookStack releases updates on a regular schedule you can plan around. Wiki.js still gets security fixes, but new features are on hold while version 3 is being built.
  • Pick BookStack for handbooks, SOPs, and onboarding material that can be split into clear sections.
  • Pick Wiki.js for large technical documentation that keeps growing in different directions, or if you don't use MySQL.
  • Neither one supports real-time collaborative editing, which is a needed feature when more than one person writes at the same time.

If you're comparing Wiki.js and BookStack, you've already decided that your documentation is going to live on infrastructure you control rather than in somebody else's cloud. Now, the question we have to answer is: how do you want your content organized?

So, in this post, we'll be comparing Wiki.js and BookStack. Both are open source, both run on your own server, and both handle the core job of storing pages, controlling who sees them, and letting people search.

The two look similar enough that it's tempting to pick either one and move on. But picking the wrong fit for your team shows up months later, when your documentation is a mess because everyone gave up on keeping it organized.

Property

Wiki.js

BookStack

Content structure

Flexible tree, depth you choose

Shelves, books, chapters, pages

Editors

Markdown, visual, AsciiDoc, raw HTML

Visual, and markdown with live preview

Stack

Node.js

PHP with Laravel

Database

PostgreSQL, MySQL, MariaDB, MS SQL Server, or SQLite

MySQL or MariaDB

License

AGPL

MIT

Two people editing one page

No

No

Release schedule

2.x maintenance, version 3 in alpha

Regular calendar releases

What's the main difference between Wiki.js and BookStack?

The feature lists overlap a lot, so the main difference is who's responsible for keeping your documentation organized.

BookStack decides the layout for you. There's one way to arrange content, you work inside it, and the tool keeps things in order whether or not anyone's paying attention. Wiki.js gives you a blank canvas instead, and trusts your team to build a structure and stick to it.

That single difference drives almost everything else below, so keep that in mind as you read.

How BookStack organizes content

Shelves, books, chapters, and pages

BookStack borrows its whole model from physical books, and its four levels work top to bottom:

  • Shelf holds a group of related books
  • Book holds chapters, and covers one subject
  • Chapter holds pages, and groups them by topic
  • Page is where you write

Anyone who's picked up a manual understands this in about four seconds, with no training and no wiki experience needed. You do get some flexibility within those four levels. Chapters are optional, so if a book is short you can put pages straight into it without dividing them into chapters first. A single book can also appear on more than one shelf, which lets the same content show up in a couple of places without duplicating it. Adding a book to a new shelf doesn't remove it from any others.

What you get is a system that stays tidy without anyone maintaining it, because someone new to the team can work out where a page belongs without asking anyone. BookStack can also sort books for you automatically, using rules an admin sets up once, such as alphabetical or by date created.

What happens when your content doesn't fit

Most times, this structure won't work if your documentation is deeper than four levels. Shelf holds book, book holds chapter, chapter holds page, and nothing goes below a page. If your content needs a fifth level, BookStack has nowhere to put it.

There's also the case where a page belongs in three different places at once. You can copy it into all three, but it's usually better to put it in one place and link to it from the others. And once a book gets too big, your only option is to split it into more books, because you can't add another level underneath to spread things out.

Who BookStack suits

BookStack is a strong fit when you're documenting:

  • Employee handbooks and policy manuals
  • Standard operating procedures and departmental processes
  • Onboarding paths that people work through in order
  • Runbooks with clear, separable scopes

It works well when your team has different levels of technical skill and nobody has time to keep the wiki organized.

How Wiki.js organizes content

How pages and paths work

Wiki.js takes the opposite approach. Every page lives at a path you choose, and you can go as deep as you want. Nothing has to sit above a page, and there's no limit on how many levels you use.

You don't create folders in Wiki.js. You create a page at the path you want, like /universe/planets/earth. Wiki.js reads that path and understands the page "earth" sits under "planets," which sits under "universe."

Wiki.js also gives you tags, which you attach to a page. So, a page about your onboarding checklist might be tagged onboarding, hr, and new-hire. Readers can then browse by tag and combine them, which helps when a page fits into several groups. It can only sit at one path, but it can carry as many tags as you want.

What flexibility costs you

Wiki.js won't keep your structure tidy for you, and that job is yours.

Nothing in Wiki.js stops two people from filing similar pages in completely different branches. Nothing flags it when the structure starts drifting, and nothing corrects it afterward. The quality of your navigation ends up being a direct reflection of how disciplined your authors are, which means somebody has to care about information architecture and keep caring about it as the team grows.

Here's a small example of what maintaining it yourself looks like. If you create a page at /universe/planets/earth, Wiki.js shows breadcrumbs at the top of the page for each level. But if nobody created a page at /universe/planets, that breadcrumb link goes nowhere. The tool infers the level, but it doesn't build you a page for it.

Teams that have that person do well with Wiki.js, but teams that assume the tool will handle it tend to end up with a search box and not much else.

Who Wiki.js suits

Wiki.js works well when you've got:

  • Large technical documentation that won't split neatly into separate manuals
  • Internal engineering documentation where pages link heavily to each other
  • Content that keeps growing in new directions
  • Someone willing to own how it's all arranged

Editing experience

BookStack

  • Two editors: One where you type and format directly, the way you would in a word processor, and a markdown editor with live preview.
  • Draw.io built in: You can create and edit diagrams without leaving the page.
  • Paragraph links: You can link straight to a specific paragraph, which helps when you need to point someone at one line in a long procedure.

Wiki.js

  • Four editors: Markdown, a visual editor that works like a word processor, AsciiDoc, and raw HTML for anything the other three can't handle.
  • Switch editors via the Convert action: Moves a page from one editor to another after it's been written.
  • Nothing gets lost in the switch: Wiki.js saves a copy first, so if some formatting doesn't survive, the old version is still in the page history.

What neither BookStack nor Wiki.js does

Neither tool is built for two people editing the same page at once. If it happens, someone's work gets overwritten and you have to correct it. For a small team writing at different times, this is a non-issue. But for a team that runs documentation sprints, or does live editing in a meeting, or has several people maintaining the same runbook, it turns into a daily inconvenience.

Permissions and authentication

 

Wiki.js

BookStack

Permission scope

Global permissions per group, plus page rules matched against paths

Role-based, inherited down the shelf, book, chapter, and page chain

Authentication

Email and password, social logins including Google, GitHub, and Discord, plus Azure AD, LDAP, and SAML, with optional MFA

SAML2, LDAP, and social login providers

Version history

Yes

Yes

Typical fit

Direct control over individual pages

Permissions that follow how your content is arranged

In BookStack, permissions follow the same structure as your content, so locking down a book locks down everything inside it. This works well when your books line up with your teams, since giving the HR team access to the HR book is one action. It gets harder when they don't line up. If a book holds pages that different teams should see separately, you either split the book or set access on those pages one by one.

Wiki.js works the other way around. Permissions belong to groups, and each group has two layers. Global permissions decide what a group can do, such as viewing pages or uploading files, while page rules decide where those permissions apply. So you can give the accounting team access to everything under /accounting. Wiki.js checks global permissions first, so a page rule can only apply a permission the group already has. Turning something on in a page rule won't work if it's switched off globally.

Two letter paths like /hr and /it are already taken by language codes, so those teams need longer folder names.

Both tools keep version history on pages, so you can see what changed and restore an earlier version when someone overwrites something they shouldn't have.

How much work is each one to run?

BookStack runs on PHP and Laravel, which is the same setup behind a huge number of web applications. If anyone on your team has hosted a PHP site before, nothing here will surprise them.

Wiki.js runs on Node.js and works with more databases, which helps if you've standardized on something other than MySQL. It does ask for more setup before you can start writing. You'll need a database created in advance, and Wiki.js needs its own subdomain, since it can't run in a subfolder of a site you already have. One important thing to note: version 3 narrows database support to PostgreSQL only, so that database flexibility belongs to the 2.x line you'd be installing today.

Getting either one installed isn't the hard part, but keeping it running is. So the cheaper choice is usually whichever one your team already knows how to look after.

Which project is more actively maintained?

Both are maintained, but only one is shipping new features you can use today.

 

Wiki.js

BookStack

Current stable release

2.5.314, released 1 May 2026

26.05.4, released 24 August 2026

Last feature release

2.5 line, with feature work now going into version 3

26.05, released 28 May 2026

Next major version

Version 3 has been in alpha since October 2022, with no announced release date

Not applicable, features ship on a calendar

Security patches

Issued against 2.x

Issued regularly, most recently in August 2026

Wiki.js is still being worked on, and a release landed in May 2026. But if you install Wiki.js today, you're installing the 2.x line. New features are going into version 3 instead, which has been in alpha since 2022, and there's no announced date for its release.

BookStack works differently. It ships new versions regularly, with feature releases and security patches arriving on a schedule you can plan around.

If you're choosing software for a team that'll still be using it in five years, or you have to justify the choice to someone who asks about vendor risk, that difference in predictability is a legitimate input. It isn't a knockout argument against Wiki.js, and plenty of organizations run 2.x happily. It's a fact you should have before you commit rather than after.

BookStack or Wiki.js, which should you choose?

Start with answering one question:

Does what you're documenting break into separate pieces with obvious names, like an onboarding guide, a security policy, or a set of team procedures?

Or is it a big web of pages that all link to each other, where the boundaries between topics are not clear or straightforward?

If your content type is the first, a fixed structure will help you. If it's the second, a fixed structure will make workflow inefficient.

If this describes you

Pick

You're documenting handbooks, SOPs, and onboarding that split into clear sections

BookStack

Your writers aren't technical and the structure needs to hold itself together

BookStack

A predictable release schedule matters to your procurement process

BookStack

You've got large technical documentation where everything links to everything

Wiki.js

You use a database other than MySQL

Wiki.js

Your team already runs Node.js infrastructure

Wiki.js

If you still haven't made a decision, answer this last question. Who's going to be responsible for keeping the documentation organized a year from now? If you can name that person and they want the job, Wiki.js will work well for your team. But if you can't name them, take the tool that does the organizing for you.

If you're still looking for more criteria for evaluating documentation platforms, our buyer's checklist for choosing a wiki tool walks through permissions, hosting, security, and data export in more detail.

What if you need real-time collaboration?

Both tools above are strong at what they do, but neither handles two people editing a page at the same time.

That's the gap Docmost was built around.

  • Real-time editing: Several people can work on the same page at once, with no page locking and no conflicting versions to merge afterward.
  • Spaces: Content is organized by team, project, or department, each with its own permissions, so structure follows how your organization is arranged.
  • Diagramming built in: Draw.io, Excalidraw, and Mermaid, without leaving the page.
  • Comments and version history: Pages support inline comments, and you can see what changed and restore an earlier version.
  • Imports: Markdown and HTML, plus dedicated importers for Confluence and Notion.

Like the two tools above, Docmost is open source and self-hosted, which means three things for you. Your data never leaves infrastructure you control. You define your own compliance posture, covering access controls, encryption, and retention, rather than inheriting whatever a vendor decided. And hosting, backups, upgrades, and security patching become your IT team's responsibility.

If you want the direct feature-by-feature view, see how Docmost compares to BookStack. You can also browse our roundup of the best open source knowledge base software for a wider set of options.

Frequently asked questions

  1. Can BookStack handle a large knowledge base? 

Usually yes, and it depends more on how your content is arranged than on how much of it you have. BookStack handles thousands of pages without trouble, as long as they split into books cleanly. The problem is depth rather than size, so if your content needs five or six levels you'll spend time reorganizing it to fit the four levels BookStack gives you.

  1. Is Wiki.js still being maintained? 

Yes. The 2.x line still gets maintenance and security releases, and version 2.5.314 came out in May 2026. New features are going into version 3 instead, which has been in alpha since October 2022. There's no release date for it, because the beta depends on version 3 catching up with everything 2.x can already do.

  1. Can you migrate content from Wiki.js to BookStack? 

Yes, but not with a single button. Both tools work with markdown, so the usual route is exporting your Wiki.js content and importing it into BookStack. You'll have to rebuild the structure by hand, because a flexible tree has to become shelves, books, and chapters, and you'll need to fix internal links after the move.

  1. Which one is better for public-facing documentation? 

BookStack, in most cases. Its structure gives outside readers navigation they can follow without being told how, and you can make the whole site public or just parts of it. Wiki.js works fine for public docs too, but you'll be designing the reader's route yourself instead of getting it from the structure.

  1. Can BookStack import from Confluence? 

Not automatically. BookStack says it has no built-in way to move content across from Confluence, though its REST API can automate parts of the job. Community-built importers exist, but they're separate projects rather than something BookStack maintains.

  1. Can Wiki.js import from Confluence? 

Not yet. It isn't supported in 2.x, and it sits on the roadmap for version 3. The usual workaround is exporting your Confluence space as HTML, converting it to markdown, then using the local file system storage option to import everything at once.

Get your team on the same page

If the tools above would leave your writers waiting their turn on the same page, check out Docmost. It's free to self-host, and you can have it running on your own server.

Try Docmost and see how it fits your team, or contact sales if you'd like to talk through a self-hosted deployment.