# Mintlify vs Htmlpress

> Self-hosted open-source site builder vs hosted commercial docs SaaS.

[Mintlify](https://mintlify.com) is a commercial docs platform. Content is authored in MDX in a Git repository; Mintlify hosts the rendered site, search, and analytics. Pricing is per-editor, with a free tier for open-source projects.

## At a glance

| Axis               | Htmlpress                                             | Mintlify                                                       |
| ------------------ | ----------------------------------------------------- | -------------------------------------------------------------- |
| Language / runtime | Rust (single binary, no runtime)                      | Author in MDX; runtime is Mintlify's hosted stack (not public) |
| UI framework       | None (plain HTML + CSS, `htmlpress-*` web components) | React (per Mintlify's docs)                                    |
| Build tool         | htmlpress binary                                      | Mintlify CLI (preview) + hosted build                          |
| Content format     | HTML and Markdown pages                               | Markdown + MDX                                                 |
| License            | MIT, self-hosted                                      | Proprietary, hosted-only                                       |
| Output model       | Prerendered static                                    | Hosted on Mintlify infrastructure                              |

## Architecture

htmlpress is one Rust binary, installed from npm (`gethtmlpress`), PyPI or crates.io. It wraps each HTML page in one layout with a navigation and a theme; there is no bundler, no UI framework and no plugin API. Every built-in file — the layout, the styles, the scripts and each component — can be escaped: a file at the same path under `.htmlpress/` replaces it. The source and the output are both yours.

Mintlify is a hosted SaaS. You commit MDX + a `mint.json` config to a Git repo; Mintlify pulls it on push, builds, and serves the result from `<your-subdomain>.mintlify.app` or a custom domain. The build pipeline and runtime are managed and not user-installable.

Content layout is unconstrained on the htmlpress side: it scans by glob (`include`/`exclude` in `htmlpress.yaml`, every `.html` file by default), and a page's URL follows its file path below the glob's base, so `docs/**/*.html` serves `docs/guide.html` at `/guide/`. There's no required `docs/` folder. The navigation is built from the folders and each page's `<meta name="order">`; a folder's `index.html` names its group. Mintlify expects the file tree to match the `navigation` block in `mint.json`; routes mirror file paths under the configured content root.

## Content surface

Mintlify accepts Markdown + MDX with frontmatter and component embedding. It ships a fixed set of components (`<Card>`, `<Accordion>`, `<Tabs>`, `<Steps>`, …) that authors compose in MDX. You don't write your own React components for the docs UI — you use Mintlify's primitives.

htmlpress pages are plain semantic HTML, styled by the theme from the elements themselves. Richer blocks are `htmlpress-*` custom elements (`htmlpress-callout`, `htmlpress-tabs`, `htmlpress-filetree`, `htmlpress-cards`, …), whose CSS and JS are linked only on pages that use the tag. A project adds its own tag with `.htmlpress/components/<name>/<name>.html`, which replaces the tag at build time. The built-in ones (`htmlpress-cards` + `htmlpress-card`, `htmlpress-tabs`, `htmlpress-filetree`) produce the same kind of UI and can each be escaped.

Mintlify's `mint.json` configures navigation, branding, and integrations in one declarative file. htmlpress uses `htmlpress.yaml` for site-level settings and each page's `<head>` for its own.

## Feature matrix

| Capability                  | Htmlpress                                                   | Mintlify                   |
| --------------------------- | ----------------------------------------------------------- | -------------------------- |
| Versioning                  | Partial (a section or a deploy per version)                 | Yes (built-in)             |
| Internationalization (i18n) | Yes (translations, language picker, 7 bundled UI languages) | Yes (built-in)             |
| Search                      | Yes (built-in, client-side)                                 | Yes (built-in, AI-powered) |
| AI chat / agents            | No (agent files: `llms.txt`, Markdown copies, skills)       | Yes (built-in)             |
| Analytics                   | No (bring your own via `head` scripts)                      | Yes (built-in dashboard)   |
| OpenAPI rendering           | No                                                          | Yes (built-in)             |
| Blog                        | No                                                          | Yes (changelog/news pages) |
| Sitemap                     | Yes (with `site` set)                                       | Yes                        |
| RSS                         | No                                                          | Yes (changelog feeds)      |
| Themes                      | Escapes in `.htmlpress/` + `--htmlpress-*` tokens           | Theming via `mint.json`    |
| Custom routes               | Any `.html` file; extra layouts in `.htmlpress/layouts/`    | No (content-only)          |
| Self-host                   | Yes                                                         | No                         |

## Output & deployment

htmlpress writes every page to static HTML in `.htmlpress/build/`, along with `robots.txt`, a `sitemap.xml` when `site` is set, a Markdown copy of each page, `llms.txt` and the agent skills under `.well-known/agent-skills/`. The `base` key serves the site under a sub-path. See [Deployment](/deployment/) for host guides.

Mintlify deploys are handled by Mintlify. You don't build or host the output yourself; the platform serves the rendered site from its CDN and provisions TLS, domains, and previews. Disconnecting from Mintlify means re-authoring or migrating the content elsewhere.

## See also

- [Authoring](/authoring/) — htmlpress' HTML surface.
- [Customization](/customization/) — htmlpress' config keys and escapes.
- [Comparison](/comparison/) — back to the index.
