Build better docs,
in seconds.

Get started
pnpm create fumadocs-app
Open in StackBlitz

Runs on Next.js · React Router · TanStack Start · Waku · Astro

CoreUIContent

Fumadocs is a React documentation framework for developers, beautifully designed by Fuma Nama.

  • Brings powerful features for your docs workflows.
  • High customizability to fit your preferences.
  • Works seamlessly with any React framework, Astro, CMS, anything.
fumadocs-ui/layouts/docs
fumadocs-ui/css/neutral.css

Express more in fewer words,
with the Markdown you already know.

quick-start.mdx

Quick Start

Create your first docs site.

Installation

npm i fumadocs-ui fumadocs-core
page.tsx
import {  } from '@/lib/source';
.getP
  • getPageTree
  • getPageByHref
  • getPages
  • getPage
  • getPageByUrl
;
MDXFumadocsPageSearch
MDXFumadocsPageSearch

Always up to date. Generate content from your code,
the single source of truth.

Designed to be composable,
separated as layers.

UIFumadocs UI
CoreFumadocs Core
ContentFumadocs MDX
FrameworkNext.js
serving /docs
_
Your stack

UILayouts and components

CoreSearch, page tree, TOC and i18nfixed

ContentWhere your pages come from

FrameworkWhat your docs run on

Extend your docs with integrations,
effortlessly.

install
npx @fumadocs/cli feature search
⌘K

ZBSearch built in, or Algolia and more.

API pages and a playground from your spec.

Ask AI, answered from your docs.

Every page as Markdown for AI agents.

Localized routes, page trees and UI text.

Open Graph images for every page.

Need more control? Use Fumadocs CLI to install
and own the UI as code.

npx @fumadocs/cli customizenpx @fumadocs/cli add banner files

fumadocs-ui16.17.9

fumadocs.dev/registry

29files

my-app
breadcrumb.tsx
container.tsx
footer.tsx
toc.tsx
index.tsx
container.tsx
header.tsx
sidebar.tsx
client.tsx
index.tsx

4files

my-app
button.tsx
collapsible.tsx
banner.tsx
files.tsx
mdx.tsx
cn.ts
layout.shared.tsx
shared.ts
source.ts
localhost:3000/docs

My App

Hello World

Your first document

Welcome to the docs! You can start writing documents in /content/docs.

What is Next?

Learn more about Next.js

Learn more about Fumadocs

My App

Hello World

Your first document

Welcome to the docs! You can start writing documents in /content/docs.

What is Next?

Learn more about Next.js

Learn more about Fumadocs

import { source } from '@/lib/source';
import { DocsLayout } from 'fumadocs-ui/layouts/docs';
import { DocsLayout } from '@/layouts/docs';
import { baseOptions } from '@/lib/layout.shared';
export default function Layout({ children }: LayoutProps<'/docs'>) {
return (
<DocsLayout tree={source.getPageTree()} {...baseOptions()}>
{children}
</DocsLayout>
);
}
import { source } from '@/lib/source';
import {
DocsBody,
DocsDescription,
DocsPage,
DocsTitle,
MarkdownCopyButton,
ViewOptionsPopover,
} from 'fumadocs-ui/layouts/docs/page';
} from '@/layouts/docs/page';
import { notFound } from 'next/navigation';
export function DocsTitle({ children, className, ...props }: ComponentProps<'h1'>) {
return (
<h1 {...props} className={cn('text-[2.5em] font-semibold', className)}>
{children}
</h1>
);
}
localhost:3000/docs
Hello World

My App

Hello World

Your first document

Welcome to the docs! You can start writing documents in /content/docs.

What is Next?

Learn more about Next.js

Learn more about Fumadocs

Hello World

My App

Hello World

Your first document

Welcome to the docs! You can start writing documents in /content/docs.

What is Next?

Learn more about Next.js

Learn more about Fumadocs

import { type HTMLAttributes, useEffect, useState } from 'react';
import { X } from 'lucide-react';
import { cn } from '@/utils/cn';
import { cn } from '../lib/cn';
import { buttonVariants } from '@/components/ui/button';
import { buttonVariants } from './ui/button';
import { useTranslations } from '@fuma-translate/react';
variant === 'normal' && 'bg-fd-primary text-fd-primary-foreground',
variant === 'rainbow' && 'bg-fd-background',
!open && 'hidden',
import { cva } from 'class-variance-authority';
import { FileIcon, FolderIcon, FolderOpen } from 'lucide-react';
import { type HTMLAttributes, type ReactNode, useState } from 'react';
import { cn } from '@/utils/cn';
import { cn } from '../lib/cn';
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from './ui/collapsible';

Battle-tested,
running in production.

GitHub starsfuma-nama/fumadocs
13,517
Weekly downloadsfumadocs-core
3,268,949
Contributorsfuma-nama/fumadocs
199

Loved by the best
developers & teams.

@shadcn
You know how you end up rebuilding a full docs site every time you start a new project? Fumadocs fixes this by giving you all the right blocks that you compose together. Like headless docs to build exactly what you need.
shadcnCreator of Shadcn UI
@ssalbdivad
I'd have no shot building @arktypeio docs that looked half this good without it 😍
David BlassCreator of Arktype
@aidenybai
fumadocs is the best Next.js docs framework
Aiden BaiCreator of Million.js
@anthonyshew
Major shoutout to @fuma_nama for making fumadocs, a gorgeous documentation framework that composes beautifully into the App Router.
Anthony ShewTurbo DX at Vercel

Your docs
are 1 command away.

pnpm create fumadocs-app