In tailwind 4 you only need to do the following. Install the plugin

npm install -D @tailwindcss/typography

enable it in global.css (assuming you are using default next configuration withapp router):

@import "tailwindcss";
@plugin '@tailwindcss/typography';

Github issue dicussing this

Answer from Iaroslav Sobolev on Stack Overflow
🌐
GitHub
github.com › tailwindlabs › tailwindcss-typography
GitHub - tailwindlabs/tailwindcss-typography: Beautiful typographic defaults for HTML you don't control. · GitHub
The official Tailwind CSS Typography plugin provides a set of prose classes you can use to add beautiful typographic defaults to any vanilla HTML you don’t control, like HTML rendered from Markdown, or pulled from a CMS.
Starred by 6.3K users
Forked by 316 users
Languages   JavaScript
Top answer
1 of 2
12

In tailwind 4 you only need to do the following. Install the plugin

npm install -D @tailwindcss/typography

enable it in global.css (assuming you are using default next configuration withapp router):

@import "tailwindcss";
@plugin '@tailwindcss/typography';

Github issue dicussing this

2 of 2
4

Update (configure without tailwind.config.js)

I just based it on an answer written by someone else. I quickly put together a v4 reproduction in the Play environment without a config file by new @utility directive:

  • Tailwind Play Reproduction
@import "tailwindcss";
@plugin "@tailwindcss/typography";

@utility prose-pink {
  @apply prose;
  & > * {
    --tw-prose-body: var(--color-pink-800);
    --tw-prose-headings: var(--color-pink-900);
  }
}

With this, I produce exactly the same result that the documentation recommends using a config file for:

  • Adding custom color theme for Typography

Plugin

Starting from TailwindCSS v4, a CSS-first configuration approach is preferred. Therefore, all plugins should be integrated with TailwindCSS using the @plugin directive. Following the Typography documentation:

  • New CSS-first configuration option in v4 - StackOverflow
  • @plugin directive - TailwindCSS v4 Docs
  • Typography Installation - GitHub Readme
npm install -D @tailwindcss/typography
@import "tailwindcss";
@plugin "@tailwindcss/typography";

Configuration

In CSS-first mode, you have the option to change the default prose class name when declaring the plugin:

@import "tailwindcss";
@plugin "@tailwindcss/typography" {
  className: wysiwyg; /* changed from prose to wysiwyg */
}

In TailwindCSS v3, however, the legacy JavaScript-based configuration (tailwind.config.js) allowed for custom configuration as well.

You can still do this using the @config directive.

  • @config directive - TailwindCSS v4 Docs
  • Adding custom color themes to Typography - GitHub Readme
  • Customizing the CSS to Typography - GitHub Readme
@import "tailwindcss";
@plugin "@tailwindcss/typography";
@config "./relative/path/to/tailwind.config.js";
/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    extend: {
      typography: () => ({
        // ...
      }),
    },
  },
}

Contrary to the documentation, by completely omitting the JavaScript-based configuration, you still have the option to customize the prose utility like this:

  • Typography upgrade to TailwindCSS v4 - @ErwannRousseau's code snippet - GitHub
@import "tailwindcss";
@plugin "@tailwindcss/typography";

@utility prose {
  --tw-prose-body: var(--color-primary);
  --tw-prose-headings: var(--color-primary);
  --tw-prose-bold: var(--color-primary);
  --tw-prose-quote-borders: var(--color-slate-300);
  --tw-prose-quotes: var(--color-muted-foreground);
  --tw-prose-code: var(--color-primary);

  code {
    &::before,
    &::after {
      display: none;
    }
    text-wrap: nowrap;
  }

  blockquote {
    font-weight: 400;
  }
}
Discussions

V0, Tailwind 4, Next 16, the perfect storm for typography
Blog Example with Tailwind Typography Plugin 🔗 Links Live Demo: https://v0-blog-example-with-tailwind.vercel.app v0 Chat: https://v0.app/chat/blog-example-with-tailwind-rtlwUkTR2Pc GitHub Repository: https://github.com/headline-design/v0-blog-example-with-tailwind 🤯 The Wild Workaround ... More on community.vercel.com
🌐 community.vercel.com
0
1
October 24, 2025
How to Configure Font Styles with @theme in Tailwind CSS v4 - Stack Overflow
Communities for your favorite technologies. Explore all Collectives · Stack Overflow for Teams is now called Stack Internal. Bring the best of human thought and AI automation together at your work More on stackoverflow.com
🌐 stackoverflow.com
Tailwind v4 plugin configuration: how to override 65ch max-width in Tailwind CSS Typography - Stack Overflow
I am facing the exact same issue as the one described in Override 65ch max-width in Tailwind CSS Typography, only in the recently published v4 of Tailwind CSS. This new version has fully changed the More on stackoverflow.com
🌐 stackoverflow.com
Tailwind v4 Typography Plugin + Custom Colors, not working?
And where did you define what value —color-brand-x00 has? Did you apply the prose class somewhere? More on reddit.com
🌐 r/tailwindcss
6
2
August 6, 2025
🌐
LogRocket
blog.logrocket.com › home › how to use the tailwind typography plugin
How to use the Tailwind Typography plugin - LogRocket Blog
May 8, 2025 - It applies a well-balanced set of typographic defaults to the child elements of any container it’s applied to, therefore automatically styling elements like paragraphs, headings, lists, blockquotes, and tables to look polished and readable right out of the box. Think of the plugin as a pre-defined style for content you don’t directly control, such as blog posts, documentation pages, or Markdown-rendered content, without sacrificing Tailwind’s core utility-first styling approach or disabling its base styles.
🌐
Vercel Community
community.vercel.com › v0
V0, Tailwind 4, Next 16, the perfect storm for typography - v0 - Vercel Community
October 24, 2025 - Blog Example with Tailwind Typography ... Repository: https://github.com/headline-design/v0-blog-example-with-tailwind 🤯 The Wild Workaround ......
🌐
DEV Community
dev.to › gridou › announcing-tw-prose-a-css-only-typography-plugin-for-tailwind-css-v4-o8j
Announcing `tw-prose`: A CSS-Only Typography Plugin for Tailwind CSS v4 - DEV Community
September 11, 2025 - I'am excited to introduce tw-prose — a CSS-only implementation of the Tailwind Typography plugin built specifically for Tailwind CSS v4.
Find elsewhere
🌐
Tailwind CSS
v1.tailwindcss.com › docs › typography-plugin
@tailwindcss/typography - Tailwind CSS
A first-party plugin for providing beautiful typographic defaults. The @tailwindcss/typography plugin adds a set of customizable prose classes that you can use to add beautiful typographic defaults to any vanilla HTML, like the output you'd ...
🌐
GitHub
github.com › tailwindlabs › tailwindcss › discussions › 15904
How do I configure tailwind typography in v4 · tailwindlabs/tailwindcss · Discussion #15904
What's the standard way to configure this plugin now that it is built in? This is my config that I want to use. typography: { DEFAULT: { css: { maxWidth: false, h1: { marginTop: false }, h2: { marg...
Author   tailwindlabs
🌐
Flowbite
flowbite.com › docs › components › typography
Tailwind CSS Typography - Flowbite
Use the typography plugin from Flowbite to apply styles to all inline elements like headings, paragraphs, lists, and images using a single format class
Top answer
1 of 1
2

As per the readme for the typography plugin, you shouldn't need to modify the configuration:

Overriding max-width

Each size modifier comes with a baked in max-width designed to keep the content as readable as possible. This isn't always what you want though, and sometimes you'll want the content to just fill the width of its container.

In those cases, all you need to do is add max-w-none to your content to override the embedded max-width:

<div class="grid grid-cols-4">
  <div class="col-span-1">
    <!-- ... -->
  </div>
  <div class="col-span-3">
    <article class="prose max-w-none">{{ markdown }}</article>
  </div>
</div>

Otherwise, if you still want to override the max width for all prose instances. You can do that via JavaScript configuration. As per the readme, configuration is done via a tailwind.config.js file:

Adding custom color themes

To customize the color theme beyond simple CSS overrides, you can use the JavaScript based theme API. To do that, use the @config directive:

@import "tailwindcss";
@plugin "@tailwindcss/typography";
@config "./tailwind.config.js";

You can then create your own color theme by adding a new tailwind.config.js file with the typography section and providing your colors under the css key:

[…]

Customizing the CSS

If you want to customize the raw CSS generated by this plugin, first follow the steps from adding custom color themes to set up a JavaScript based configuration API and then add your overrides under the typography key in the theme section of your tailwind.config.js file:

/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    extend: {
      typography: {
        DEFAULT: {
          css: {
            color: '#333',
            a: {
              color: '#3182ce',
              '&:hover': {
                color: '#2c5282',
              },
            },
          },
        },
      },
    },
  },
}

So you could do something like:

@import "tailwindcss";
@plugin "@tailwindcss/typography";
@config "./tailwind.config.js"; /* Path to `tailwind.config.js` file relative to this CSS file. */
/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    extend: {
      typography: {
        DEFAULT: {
          css: {
            maxWidth: 'none',
          },
        },
      },
    },
  },
}
🌐
SW Habitation
swhabitation.com › blogs › tailwind-css-typography-plugin-nextjs
How to use the TailwindCSS Typography Plugin with Next.js?
January 24, 2025 - Learn how to integrate Tailwind CSS Typography into your Next.js project to create beautifully styled content. Step-by-step guide for beginners.
🌐
Pagedone
pagedone.io › docs › typography
Tailwind CSS Typography | Pagedone
In Tailwind CSS, typography encompasses the styles and utility classes associated with text and font management.
🌐
Tailkits
tailkits.com › blog
Tailwind Typography Plugin Guide | Tailkits
October 12, 2025 - Add the plugin: @plugin "@tailwindcss/typography"; (v4) or plugins: [require("@tailwindcss/typography")] (v3).
🌐
Reddit
reddit.com › r/tailwindcss › tailwind v4 typography plugin + custom colors, not working?
r/tailwindcss on Reddit: Tailwind v4 Typography Plugin + Custom Colors, not working?
August 6, 2025 -

Typography plugin is working, but want custom color theme, so following this:

https://github.com/tailwindlabs/tailwindcss-typography?tab=readme-ov-file#adding-custom-color-themes

I did exactly this, except replace everything with "brand" instead of "pink".

Still default colors.

🌐
Reddit
reddit.com › r/tailwindcss › tailwind 4 font and text handling
r/tailwindcss on Reddit: Tailwind 4 font and text handling
February 12, 2025 -

I'm really confused on how the font and text work in Tailwind 4.

According to the docs, "Use the --font-* theme variables to customize the font family utilities in your project:"

@theme { --font-hello: "Oswald", "sans-serif"; }

Then it's used as:

<div class="font-hello"> <!-- ... --> </div>

Now, how in the world would I then set the font-weight to this "custom" font? According to the docs custom font-weights are defined like this:

@theme { --font-weight-hello: 900; }

And used as:

<div class="font-hello"> <!-- ... --> </div>

But this will not work as the "--font-hello" class override any properties for the "font-hello" class. If I however remove the "--font-hello" from the theme then the "--font-weight-hello" works and the "font-hello" class has the font-weight property.

I really feel like some of the things in v4 is a mess. Of course it could be me but its not that intutive to create custom classes in nice and structred way. This is also true regadring the "text" properties.

In this case, according to the docs, I would expect to be able to write the theme like this:

@theme { --font-body: "Some Font"; --font-weight-body: 700; }

And then used as below, with both the font-family and the font-weight properties within the "font-body" class, but this does not work because they conflict with each other.

<div class="font-body"> <!-- ... --> </div>