WordPress readme.txt Generator
Fill in your plugin details and get a valid readme.txt to download. Supports every field WordPress.org expects. Paste in an existing file to edit it, or start from scratch.
No login required Instant download Import existing files
Plugin info
Press Enter or comma to add. Backspace to remove last. Max 5 tags.
Metadata
WordPress.org slugs of required plugins, comma-separated. Added in WP 6.5.
Sections
FAQ
No FAQ entries yet.
Changelog
Upgrade Notices
No upgrade notices.
Screenshots
No screenshots.
Custom Sections
No custom sections. Add sections like Other Notes or Privacy Policy.
Plugin Name is required before downloading.
=== Plugin Name === Requires at least: 6.0 Tested up to: 6.7 Stable tag: 1.0.0 Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Short description. == Changelog == = 1.0.0 = * Initial release.
About the format
About the WordPress readme.txt format
The Plugin Directory pulls everything it shows visitors directly from your readme.txt: description, screenshots, changelog, FAQ, version requirements, all of it. WordPress.org
validates the format on submission, so a missing required field or a malformed header will
get your plugin rejected. The Plugin Handbook covers the full spec, but the short version: short descriptions cap at 150 characters, you
get 5 tags, and upgrade notices top out at 300 characters.
The format itself isn't complicated. A header block starting with === Plugin Name === holds key-value fields like Stable tag and Tested up to. Below that, a plain-text short description, then named sections using == markers. Individual FAQ entries and changelog versions use single = markers
inside those sections.
API
Generate readmes programmatically
The generator is also available as a REST API, useful for CI/CD pipelines, AI coding
assistants, and scripts that need a valid readme.txt without opening a browser. Send a JSON body, get plain text back.
/api/tools/readme-generatorRequest body (JSON)
{
"pluginName": "My Plugin",
"shortDesc": "A short description under 150 chars",
"stableTag": "1.0.0",
"requiresAtLeast": "6.0",
"testedUpTo": "6.7",
"license": "GPLv2 or later",
"licenseURI": "https://www.gnu.org/licenses/gpl-2.0.html",
"tags": ["woocommerce", "forms"],
"contributors": "your-wp-username",
"description": "Full description here. Markdown supported.",
"installation": "1. Upload\n2. Activate",
"changelog": [
{ "version": "1.0.0", "entries": "* Initial release." }
],
"faqs": [
{ "q": "How do I configure it?", "a": "Go to Settings." }
]
}text/plain=== My Plugin === Requires at least: 6.0 Tested up to: 6.7 Stable tag: 1.0.0 License: GPLv2 or later License URI: https://www.gnu.org/... A short description under 150 chars == Description == Full description here...
Notes
-
pluginNameis the only required field - No authentication required. Public endpoint.
- All fields are optional except
pluginName; omitted fields are skipped in the output - Supports all fields:
customSections,requiresPlugins,screenshots, and more
FAQ
Common questions
It's how WordPress.org knows what your plugin is. The Plugin Directory reads the readme.txt to build your listing: name, description, screenshots, changelog, everything users see before installing. Get the format wrong and your submission gets rejected before anyone looks at your code.
The header needs: plugin name (in the === Name === format), Requires at least, Tested up to, Stable tag, License, and License URI. Right after the header you need a short description, plain text, 150 characters or fewer. Everything else (Description, Installation, FAQ, Changelog) is optional but expected if you want a complete listing.
It's the version WordPress.org serves when someone hits Update. It needs to match a tag in your SVN repo. Push version 1.2.0, and you need both Stable tag: 1.2.0 in the readme and a 1.2.0 tag in your repository. Setting it to "trunk" works but means users always get your latest untagged code, which most production plugins avoid.
150 characters max. It's the one-liner that shows up in search results and plugin cards in wp-admin. WordPress.org will truncate anything longer, so you want to land within the limit yourself rather than have it cut off mid-sentence.
Five. WordPress.org ignores anything past the fifth tag, so pick carefully. Use terms people actually search for ('contact form', 'woocommerce', 'seo') rather than brand names or vague descriptors.
Ready to ship your plugin?
Your readme is sorted. AutomagicWP handles the rest: push a release once and every connected site updates on its own, no wp-admin required.