Documentation sites deserve better than a repurposed blog theme. Doku is built from the ground up for software documentation, developer portals, API references and internal knowledge bases — the three-column layout, the instant search, the code blocks and the Markdown importer are the product, not add-ons.
Live demo: https://doku.bitorbit.biz
Documentation: https://doku.bitorbit.biz/docs/
Made for:
- Product and SaaS documentation
- API references and developer portals
- Open-source project docs moving off GitBook or a static site generator
- Help centers and internal knowledge bases
Why Doku
Your content is never held hostage
A documentation theme that registers its own post type ties your content to it: switch themes and the documentation disappears from the admin.
Doku doesn’t. The doc post type, taxonomies, blocks and importer all live in Doku Core, a companion plugin bundled with the theme and installed from an admin prompt. Change your mind about the design in two years and your documentation is still exactly where you left it.
And you can take it out again. Every page exports back to Markdown — callouts, tabs, tabbed code, steppers, accordions, parameter tables and diagrams included, written in the same syntax the importer reads. Import a GitBook export on Monday, export it back on Friday, and you get your pages, not a wall of HTML. Your readers get the same export from Copy as Markdown in the page actions menu on every documentation page, ready to paste into an AI assistant.
Nothing phones home
No Google Fonts. No CDN. No Algolia subscription. No external analytics.
Fonts, icons, search, diagrams and math rendering are all bundled and served from your own domain. Doku itself makes zero third-party HTTP requests — which means faster pages, no CDN outages, and one fewer conversation with your legal team about GDPR. (The one thing that can still reach out is WordPress’s own comment avatars, from Gravatar; one setting turns them off.)
Doku ships two optional Open in Claude and Open in ChatGPT links for readers who want to ask an assistant about a page. They are switched off until you switch them on, and they are ordinary links a reader chooses to click.
Search that feels instant
Full-text search across your entire documentation, powered by FlexSearch. Press Ctrl+K (or ⌘K) anywhere and start typing. Results arrive as you type, with no request to the server per keystroke. The search library loads only the first time a reader opens search, so it costs nothing on pages where nobody searches.
Built for technical content
Syntax highlighting done properly
Doku uses Shiki, which reads the same TextMate grammars as VS Code. Not a regex approximation — the real grammar, with the same colors your readers see in their editor, across more than 200 languages.
The highlighting is generated once, in the editor, and stored in the block. Your visitors never download a highlighter. There is no flash of unstyled code. And it switches between light and dark themes with the rest of the page.
Eight blocks that documentation actually needs
- Doku Enhanced Code — Shiki highlighting, copy button, filename label, line numbers, optional wrapping
- Doku Tabbed Code — Multi-language tabs that sync across the page — a reader picks Python once and every block follows
- Doku Tabs — Any content in tabs — install steps per operating system, settings per plan — synced by label the same way
- Doku Callout — Note, Tip, Warning, Danger and Info admonitions
- Doku Step Procedure — Numbered walkthroughs that accept any block inside each step
- Doku API Parameter Table — Name / Type / Required / Default / Description
- Doku Card Grid — Link cards with icons, in one to four columns
- Doku Mermaid Diagram — Flowcharts, sequence and state diagrams from plain text, recolored to match light or dark mode
Keyboard shortcuts such as Ctrl + K render as physical keys, using WordPress’s own Keyboard input format, styled for light and dark mode.
Every WordPress core block is styled to match, so tables, quotes, lists and images all look like they belong. The block color palette is the theme’s own colors, so a box you color from it follows dark mode and your accent color instead of glaring white on a dark page. Accordions are WordPress’s own Details block — native <details>/<summary>, accessible by default — drawn in the same style.
Bring your existing documentation with you
The built-in importer turns Markdown into real WordPress blocks — not a wall of HTML in a Classic block. Upload a single .md file or a .zip of a whole documentation folder.
- CommonMark and GitHub Flavored Markdown — tables, task lists, strikethrough, footnotes, autolinks, alert callouts, emoji shortcodes
- GitBook exports —
{% hint %},{% tabs %},{% stepper %},{% columns %},{% code %}, content refs, expandable sections, card tables, drawings and$$math$$all map onto the matching Doku block - Front matter — title, slug, description and tags map to the post’s title, slug, excerpt and tags
- Links between pages keep working —
[Setup](guides/setup.md)points at the imported Setup page, in whatever order the files arrive, and follows it through later slug and category changes - Each file’s folder becomes its documentation category, a whole upload can be tagged with a release version in one step, and a revised file can be imported over its existing page, which stays published and keeps the Media Library images you placed in it
- One long file, many pages — split a README or guide at each H1, or at each H1 and H2, into pages in file order, with links between its sections still pointing at the right page. Import it again after an edit and only the pages that changed are rewritten
The reading experience
- Hierarchical sidebar that opens to the page a reader is on and collapses the rest, grouped under your own section headings — give a top-level menu item no destination and it becomes the uppercase label over the links beneath it, the same shape the automatic category tree uses, which also nests each doc under its parent doc
- Sticky table of contents that tracks the reader’s position through the page as they scroll, and slides in from the side on phones
- Dark mode with a three-way header toggle — light, dark, or follow the operating system. System keeps following as the reader changes it, their choice is remembered, and the page never flashes white on load
- Breadcrumbs on docs and blog posts alike, using Yoast or Rank Math when installed, with a built-in fallback when they aren’t
- Previous / next navigation through each category, in your chosen order
- Tags at the end of each doc, each opening a page of every doc that shares it
- Browsing from every listing page — the docs index, each category, version, product and tag page, search results and the 404 page list your categories, versions, tags and products beside the docs, with counts, so readers move between them without setup
- Copy-to-clipboard anchor links on every heading
- Version dropdown for sites documenting multiple releases — in the header on desktop, in the navigation drawer on phones and tablets, with each version getting its own index page. Styled to match the rest of the header rather than falling back to the browser’s own control, in both light and dark mode
- Three-level header menus that open on hover, on tap and from the keyboard — every parent carries its own chevron button, so the dropdowns work on a touchscreen laptop as well as under a mouse, and a drawer keeps every link reachable on small screens
- A columned mega menu, built from the menu itself: nest a branch three deep and it opens as a panel of columns, each second-level item a heading over its own links, with an optional second line of description under each one and a full-width link across the foot. Shallower branches keep the ordinary dropdown, one switch in the Customizer turns the whole thing off, and a Menu style setting on each top-level item overrides both — hold one branch to plain dropdowns, or make a two-level branch a panel so its links can carry descriptions too
- “Was this page helpful?” thumbs up / down on every doc, with the results in your Docs list
- Mermaid diagrams and KaTeX math, loaded only on the pages that contain them
- A blog in the same frame as your docs — set a posts page, with a few words of your own above it, and your announcements, release notes and tutorials render as a list of articles with featured images, categories, dates and excerpts. Sticky posts lead at full width and category chips take readers straight to a topic, while the documentation archives keep their card grid. Posts read like documentation: the blog’s categories down the left, built automatically, and the post’s table of contents on the right. Each post links to the one before and after it, by date
- Print stylesheet so a page printed to PDF looks deliberate
- Responsive from three columns on desktop down to a single column on phones
Made to be customized
Everything below is set in Appearance > Customize, with a live preview and no code:
- Your brand color — one picker for light mode, one for dark. Links, active states, tags and callout tints all derive from it.
- The starting color scheme — light, dark, or whatever the visitor’s system asks for.
- Your logo — SVG included, sanitized on upload. Add a second version for dark mode, or have Doku paint a single-color mark in your accent so it follows the theme on its own.
- Content width — one setting for documentation, posts and search results, while a page’s article fills whatever its side columns leave. The sidebar, table of contents and header bar move with it, and the block editor matches whichever width applies to what you are editing.
- Widget columns on either side of your pages and beside the blog, each with widgets of its own: a page spans the full width until you add widgets to a column, and gives up only the room that column needs. WordPress’s own widgets are styled to match in light and dark, in the footer and inside an article too, so a calendar or a tag cloud never lands as the washed-out default.
- Header and page elements — a header that lines up with your content or runs the full width; the search bar, version dropdown, breadcrumbs, previous/next links, tags and rating widget each switched on or off; any page as the welcome above your documentation index; how many heading levels the table of contents lists; your own footer text, with a row of footer links beside it.
Any of it can differ on a single page. Almost every Customizer setting is also available per entry, in a box on the editor screen — Doku’s own options, but equally your site title, your logo, which menu the header shows, or a block of CSS meant for that page alone. One landing page can run the header full width, and one doc can drop its previous/next links, without the rest of the site following.
And one button undoes it all. Reset puts every Doku option back to the theme’s defaults — previewed first, and written only when you publish.
Everything deeper is a CSS custom property. There are no Sass sources to compile and no build step to fight — override a variable in a child theme and you’re done. The tokens are grouped so that the changes people actually want are small ones: every corner radius comes from three tokens, every gap between blocks in an article from one, every type size from a single set of size tokens, and both typefaces from two. Squaring the whole theme off, opening the page up, setting your interface a point larger or putting the site in your own brand’s font is a handful of lines rather than a hunt through a stylesheet.
What’s included
- The Doku theme
- The Doku Core companion plugin, bundled with the theme and installed from an admin prompt
- One-click demo import that rebuilds the live demo on your site — documentation, pages, blog posts, images, menus, widgets and Customizer settings — through the free One Click Demo Import plugin
- Complete end-user documentation covering installation, every block, the importer and troubleshooting — online, and itself built with Doku
- A maintained changelog, so you can see exactly what each update changes before you install it
- Translation-ready
.potfiles for both packages - Child theme friendly, multisite compatible
Requirements
- WordPress 7.0 or higher
- PHP 7.4 or higher
No page builder required. No subscription. No external service.
Accessibility
Doku is built to WCAG 2.1 AA, with accessibility as a constraint rather than an afterthought: semantic landmarks, a skip link, ARIA labeling on interactive controls, full keyboard navigation, visible focus states, comfortable target sizes on every control, color tokens chosen for contrast in both light and dark mode, and motion that stops for readers whose system asks it to.
Licensing
The theme and plugin code is released under the GNU General Public License v2 or later. Your purchase is covered by the Envato Regular or Extended License depending on the option chosen at checkout — see https://themeforest.net/licenses for the full terms.
Doku bundles open-source components, among them Shiki, Mermaid, KaTeX, FlexSearch, Lucide, Font Awesome Free and the DM Sans and DM Mono fonts. Each is credited with its license in the documentation’s Credits and Licenses chapter.
Support
Documentation, setup guidance and bug fixes are included. Questions and bug reports go through the item’s Support tab, with replies typically within one business day, and feature requests genuinely do shape the roadmap.
Changelog
1.0.0 — Initial release.
Full changelog: https://doku.bitorbit.biz/docs/changelog/

