Theme Header Generator

Produce the style.css header block WordPress reads, for a standalone theme or a child theme, without it leaving this tab.

Runs on your deviceWordPressWorkingNo account needed

What this tool does

Theme Header Generator writes the comment block that opens style.css — the labelled lines WordPress scans to learn a theme's name, version, author, licence and text domain before it will list it on the Appearance screen. The field names are padded so every value starts in the same column, and an optional field left blank — author, either URI, the WordPress and PHP requirements, the tags — is dropped from the block rather than written out with nothing after the colon, which is what a hand-edited header usually accumulates. Five lines are written whatever you do: Theme Name, Description, Version, License and Text Domain, so an empty version box comes back as 1.0.0 rather than as a missing line.

Fill in the parent theme folder and the output becomes a child theme: a Template line naming the parent is added, and if you also ask for functions.php you get an enqueue that loads the parent's style.css first — versioned from the parent's own Version header — then declares the child stylesheet as depending on it. Tags are matched against the vocabulary the WordPress.org theme directory accepts, and an unrecognised one is still written into the header, but the summary names it so you learn about it here rather than in a review queue. The version is checked to be something WordPress can actually compare, so 1.0.0 and 1.2.0-beta.1 pass while prose is refused.

Assembling a header is string handling, and it is done here in the page. The theme name, author, URLs and description you type are joined into text by the script already loaded in this tab, with no request made while the tool runs, so none of it is uploaded and the only copy is the one in the output pane. URLs are tidied on the way in: a missing scheme becomes https:// and a trailing slash is removed.

A header is not a theme, and that is the limit worth knowing before you start. WordPress will not activate a directory holding style.css alone — a classic theme also needs index.php, a block theme needs templates/index.html, and the Themes screen shows a blank placeholder until you add screenshot.png. None of those is generated here, and neither is theme.json. Nothing is checked against your install either: the parent folder is taken on trust, Tested up to is not compared with any real WordPress release, and the text domain is derived from the theme name but cannot be measured against the directory the theme actually sits in, which is the one place it has to match. Your description is collapsed onto a single line, because the header format allows one line per field, and nothing you type is escaped for the comment it lands in — a literal */ in the description or the theme name closes the block early, and every field below it stops counting as header.

How to use it

  1. Name the theme and settle the folder. Theme name is the only required field. Leave Folder / text domain empty and it is derived from the name — Harbour Light becomes harbour-light — but it must match the directory the theme lives in, so set it by hand when they differ.
  2. Add the details the header carries. Author, Author URI, Theme URI, Requires WordPress at least, Tested up to and Requires PHP each become a line when filled in and are left out of the block entirely when skipped. Version is the exception: clear the box and 1.0.0 is written in its place.
  3. Choose a licence and the tags. GPL v2 or later is the licence the WordPress.org directory requires, with GPL v3, MIT and proprietary also available. Tags are comma separated and checked against the directory's own vocabulary.
  4. Set a parent folder for a child theme. Filling in the parent theme folder adds the Template line and switches the generated functions.php to the parent-then-child stylesheet enqueue. Leave it empty and you get a standalone theme header instead.
  5. Describe the theme, then run it. The description box is optional — left empty, the header reads "A WordPress theme." Pick style.css header only, or style.css and functions.php, which come back in one pane separated by FILE markers for you to split into the two files.

Processing & privacy

Runs on your device. Your file is processed directly in this browser.

Common use cases

Starting a theme from an empty folder

The header is the first thing WordPress reads and the easiest thing to get quietly wrong. Generating it means the Appearance screen shows the name, version and author you intended on the first upload.

Building a child theme over a parent you did not write

Template has to hold the parent's directory name rather than its display title, and the parent stylesheet has to be enqueued rather than pulled in with @import. Both come out that way here.

Preparing a submission to the WordPress.org directory

The review process turns away a GPL-incompatible licence and tags outside the accepted list. Choosing GPL v2 or later and reading the summary for unrecognised tags settles both before you submit.

Bumping the version before a release

Change the version, regenerate, and replace the block at the top of style.css so what WordPress reports on the Themes screen matches the tag you are shipping.

Questions

Is anything uploaded?
No. The header is assembled in this browser tab from the fields you fill in, and no network request is made while it runs, so the theme name, author details and URLs you type are not transmitted anywhere.
Will WordPress accept a folder containing only this style.css?
No. A classic theme also needs index.php and a block theme needs templates/index.html before WordPress will let you activate it, and the preview stays blank until screenshot.png exists. This produces the header, not the rest of the theme.
Why was one of my tags flagged?
It is not in the vocabulary the WordPress.org theme directory accepts. The tag is still written into the header — nothing is silently removed — but the summary names it, because the directory would reject a submission carrying it.
What does the parent theme folder field change?
It adds the Template line, which is what makes the output a child theme, and that line must carry the parent's folder name rather than its display name. With functions.php selected it also produces the enqueue that loads the parent stylesheet before yours.
Why was my version number refused?
WordPress compares versions numerically for updates, so the box takes one to four numbers separated by dots, with an optional suffix such as -beta.1 after them. Prose, and a leading v, are turned away here rather than written into a header where the comparison would fail later.
Does it generate theme.json or any templates?
No. It writes the style.css header and, if you ask for it, a functions.php holding the ABSPATH guard, a version constant, and either the theme supports and text domain loading for a standalone theme or the parent-first enqueue for a child. The templates, patterns and styles are yours to write.

Related tools