The git-based CMS for
Nuxt projects.

Nuxt Content is a module for Nuxt that provides a simple way to manage content for your application. It allows developers to write their content in Markdown, YAML, or JSON files and then query and display it in their application.

File-based CMS
Write your content in Markdown, YML, CSV or JSON and query it in your components.
Query Builder
Query your content with a MongoDB-like API to fetch the right data at the right time.
SQLite powered
Add custom fields to your content, making it suitable for various types of projects.
Markdown with Vue
Use Vue components in Markdown files, with props, slots and nested components.
Code highlighting
Display beautiful code blocks on your website with the Shiki integration supporting VS Code themes.
Visual Editor
Let your team edit your Nuxt Content project with Nuxt Studio, our visual editor.
Navigation Generation
Customize HTML typography tags with Vue components to give your content a consistent style.
Prose Components
Nuxt Content works on all hosting providers, static, server, serverless & edge.
Deploy everywhere
Generate a structured object from your content files and display a navigation menu in minutes.

Everything you need for content management

Combine file-based simplicity with Vue component power. Build content-rich websites, from documentation pages to complex applications.

Markdown meets Vue components

We created the MDC syntax to let you use Vue components with props and slots inside your Markdown files.

Specify props with frontmatter syntax
Use components slots with #
Add any other html attributes

The Everest.

The Everest is the highest mountain in the world, standing at 8,848 meters above sea level.

Query with Type-Safety

Define your content structure with collections and query them with schema validation and full type-safety.

Create collections for similar content files
Define schema for the collection front matter
Get auto-completion in your Vue files
<script setup lang="ts">
const { data: posts } = await useAsyncData('blog', () => {
  return queryCollection('blog').all()
})
</script>

<template>
  <div>
    <h1>Blog</h1>
    <ul>
      <li v-for="post in posts" :key="post.id">
        <NuxtLink :to="post.path">{{ post.title }}</NuxtLink>
      </li>
    </ul>
  </div>
</template>

Make changes without technical skills

Edit your Nuxt Content website with Studio, our CMS platform with Notion-like Markdown editors and generated forms for YAML and JSON files. Live preview and online collaboration included.

Commit & push to GitHub with one click
Invite editors to login with Google and let them publish their changes
Edit the content in real-time with your team

Add a git-based CMS to your Nuxt project.