The WordPress plugin readme.txt
Every plugin in the WordPress.org directory has a readme.txt. WordPress.org builds the plugin page from it: the name, short description, tags, compatibility, and the Description, Installation, FAQ, Screenshots and Changelog tabs. This page covers the format field by field, gives you a template that passes the validator, and explains each validator message.
A readme.txt template
Copy this into readme.txt in your plugin's root folder and replace the text. As written, it passes the WordPress.org validator with no errors, warnings or notes.
=== Readme Example ===
Contributors: wordpressdotorg
Donate link: https://example.com/donate
Tags: readme, documentation, example
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
One sentence that says what the plugin does, in 150 characters or fewer, without markup.
== Description ==
What the plugin does and who it is for. This is the first thing people read on the plugin page.
* A list of features
* Written as **Markdown**
* With [links](https://example.com/) where they help
https://www.youtube.com/watch?v=aqz-KE-bpKQ
= A subheading =
Subheadings inside a section use single equals signs.
== Installation ==
1. Upload the plugin folder to `/wp-content/plugins/`, or install it from the Plugins screen.
2. Activate the plugin through the Plugins screen.
3. Open Settings → Readme Example to configure it.
== Frequently Asked Questions ==
= Does it work with multisite? =
Yes. Each question is a line wrapped in single equals signs, followed by its answer.
= Where do I report a bug? =
In the plugin's support forum on WordPress.org.
== Screenshots ==
1. The caption for screenshot-1.png in the plugin's SVN assets folder.
2. The caption for screenshot-2.png.
== Changelog ==
= 1.0.0 =
* First release.
== Upgrade Notice ==
= 1.0.0 =
First release.
The header
The file starts with the plugin name between triple equals signs, then one field per line. Field names are not case-sensitive.
=== Readme Example ===- The name shown on the plugin page. Leaving the literal text
Plugin Nameis an error. Names containing restricted terms, such asplugin,WordPressor another company's trademark, are flagged as errors. Contributors: wordpressdotorg- Comma-separated WordPress.org usernames. They are case-sensitive, and names that aren't WordPress.org users are dropped.
Donate link: https://example.com/donate- Optional. Adds a donate link to the plugin page.
Tags: forms, contact, email- Up to 5 comma-separated tags; WordPress.org ignores the rest. The tags
pluginandwordpressare always ignored. Don't use other plugins' names as tags. Requires at least: 6.5- The oldest WordPress version the plugin supports, as a number only. It can also be set in the main plugin file instead.
Tested up to: 7.1- The newest WordPress version you have tested with, as a number only (
7.1, notWP 7.1). Use the major version; minor releases count automatically. A version newer than the next WordPress release is ignored. Requires PHP: 7.4- The oldest PHP version the plugin supports, as a number only. It can also be set in the main plugin file instead.
Stable tag: 1.0.0- The plugin version users should get: the name of a folder under
/tags/in your SVN repository. Use digits and dots.trunkis not allowed for new plugins. License: GPLv2 or later- A license compatible with GPLv2 or later. A missing or unrecognized license is flagged.
License URI: https://www.gnu.org/licenses/gpl-2.0.html- Optional. A link to the license text; worth adding for less common licenses.
The version number on the download button doesn't come from the readme: WordPress.org reads it from the Version header in your main plugin file.
The short description
The first line after the header is the short description, shown under the plugin name and in search results. Keep it to 150 characters or fewer and leave out markup: WordPress.org strips HTML from it and cuts anything longer. Without one, WordPress.org uses the start of the Description section instead.
Sections
Sections start with a line in double equals signs, such as == Description ==. Markdown-style ## Description works too.
== Description ==- What the plugin does and who it is for. It becomes the main tab of the plugin page.
== Installation ==- Setup steps. Optional when installing needs nothing beyond activating the plugin.
== Frequently Asked Questions ==- Each question goes on its own line between single equals signs (
= Does it work with multisite? =), followed by its answer.== FAQ ==works too. == Screenshots ==- A numbered list of captions. Caption 1 belongs to
screenshot-1.png(or.jpg) in your SVNassetsfolder, caption 2 toscreenshot-2.png, and so on. == Changelog ==- One subheading per version (
= 1.0.1 =) with a list of changes. Keep recent releases here and move older ones to a separatechangelog.txt. == Upgrade Notice ==- One subheading per version with a sentence on why to upgrade. WordPress shows it next to the update in the Plugins screen, so keep it short.
Any other section, such as == Credits ==, appears under Other Notes. Use custom sections sparingly: people expect plugin pages to look alike.
Formatting
- Sections use a Markdown variant: lists,
**bold**,*italic*,`code`, code blocks indented by four spaces, and links written as[text](https://example.com/). - Subheadings inside a section use single equals signs:
= Subheading =. - A YouTube or Vimeo URL alone on its own line becomes an embedded video. Avoid making a video the last line of an FAQ answer.
Which readme WordPress.org reads
WordPress.org first reads trunk/readme.txt, but only for its Stable tag. If that says 1.2.3 and tags/1.2.3/ exists, the plugin page comes from tags/1.2.3/readme.txt. Editing the readme in trunk alone then changes nothing on the plugin page. To update a released readme, change it in both trunk and the current tag, and keep the Stable tag the same in both.
Validator messages and how to fix them
These are the messages the WordPress.org readme validator shows, word for word. Errors keep a readme from working properly, warnings mean WordPress.org ignored or changed something, and notes point at optional parts. WPreadme.com shows the same messages in its Issues tab as you type.
Limits at a glance
| Short description | 150 characters |
| Tags | 5 |
| Each section | 2,500 words |
| FAQ and Changelog | 5,000 words each |
| Whole file | Keep it under about 10 KB; larger readmes may cause errors. |
Sources: the WordPress.org plugin directory's readme parser and validator, which WPreadme.com runs, and How Your Readme.txt Works in the Plugin Handbook.