Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsA completed FTP upload does not guarantee that WordPress can detect the theme. The usual causes are uploading to a different WordPress installation, placing the actual theme folder one level too deep, or missing a valid root-level style.css header. Extract the package, put the real theme folder directly in the live site’s wp-content/themes directory, verify the stylesheet header, and then reload Appearance > Themes.
Antihost offers managed WordPress hosting with free migration, one-click staging and a 14-day free trial.
Why WordPress can ignore a successful FTP transfer
FTP reports whether files reached the server and whether the transfer completed. WordPress performs a separate discovery step: it scans the themes directory belonging to the installation that serves the wp-admin screen you are viewing. During that scan, it expects each candidate theme folder to contain a registration stylesheet named style.css at the folder’s top level. WordPress reads that file’s theme header to build the Themes screen.
As an Amazon Associate I earn from qualifying purchases.
Free tools Windows power users keep installed
One-click scans. No signup required.
Consequently, a transfer can be technically successful while the theme remains invisible. Common examples include uploading to a staging copy, using the wrong document root, sending the vendor’s outer package folder instead of the inner theme folder, or leaving style.css inside another directory. A thumbnail image, documentation files, or a CSS file with a different name cannot substitute for the required registration file.
Find the WordPress installation that serves your admin
The destination is not simply any folder named wp-content on the account. It must belong to the same WordPress installation whose dashboard you opened in your browser.
#1 Best Overall
- Used Book in Good Condition
- Identify the domain in wp-admin. Note the exact site address, including whether it uses a subdomain or a separate installation.
- Open the hosting file manager or FTP connection. Locate the document root serving that domain. On many hosts it is
public_html, but the name can differ. - Check for a WordPress subdirectory. If the site was installed in a folder named
wordpress, the destination ispublic_html/wordpress/wp-content/themes, notpublic_html/wp-content/themes. - Confirm the installation by its files. The correct root normally contains WordPress files such as
wp-admin,wp-includes, andwp-config.php(the configuration file may be one level above the public files on some setups). - Check for staging or duplicate copies. A similarly named directory may serve a test site rather than the production domain. Compare the domain’s document-root setting in your hosting panel if a change has no visible effect.
The final path should therefore resemble one of these patterns, depending on the installation:
public_html/wp-content/themes
public_html/wordpress/wp-content/themes
Upload to the installation serving the wp-admin instance you are inspecting; changing another copy cannot affect that Themes screen.
Extract the download and locate the real theme folder
For an FTP installation, extract the downloaded archive on your computer before transferring it. Commercial packages often contain documentation, license text, screenshots, an import file, and a second ZIP that is the actual installable theme. Uploading the entire package can create an extra directory level.
Rank #2
Open folders until you find the directory that directly contains the theme’s style.css. That directory—not the vendor’s outer package—is the one to upload. Preserve all of its internal folders and files while transferring.
For example, this package is too deeply nested:
wp-content/themes/theme-package/theme-name/style.css
WordPress scans the immediate child theme-package, does not find its registration stylesheet, and does not list the theme. The working arrangement is:
wp-content/themes/theme-name/style.css
Do not upload only the stylesheet or selected PHP files. A theme may need templates, functions, assets, block metadata, and other files in their original relative locations.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #3
Check the required folder layout
The exact files differ between classic and block themes, but the discovery rule is the same: style.css sits directly inside the theme folder.
| Theme type | Typical layout under wp-content/themes |
Recognition detail |
|---|---|---|
| Classic theme | theme-name/style.csstheme-name/index.phpadditional PHP templates and assets |
style.css contains the theme header; index.php is the conventional fallback template. |
| Block theme | theme-name/style.csstheme-name/theme.json (when supplied)theme-name/templates/index.html |
style.css still supplies registration metadata; templates/index.html is the fallback block template. |
A block theme can include additional template parts and patterns, while a classic theme can include many PHP files. Those differences do not move the registration stylesheet into a css subfolder.
Verify the root-level style.css header
WordPress reads the beginning of the theme’s style.css as metadata. At minimum, the file needs a Theme Name field in a valid theme header. A stylesheet buried in assets/css, a file named main.css, or a CSS file without the header will not register the folder as a theme.
/**
* Theme Name: Fabled Sunset
*/
Open the file in a plain-text editor and inspect its first lines. Keep the vendor’s original header unless you are intentionally developing the theme. Renaming an unrelated CSS file to style.css does not help because the metadata, not merely the filename, identifies the theme.
Recommended Free Tools
For a quick check, navigate on the server to wp-content/themes/theme-name/style.css. If that exact path does not open the stylesheet containing Theme Name, the folder depth or upload is still wrong.
Upload the theme by FTP correctly
- Extract locally. Unzip the download and, if it contains another installable ZIP, extract or open that package too.
- Select the inner theme folder. Confirm that its top level contains
style.cssand that the file has a theme header. - Open the live destination. In the FTP client, browse to the document root for the domain, then open
wp-content/themes. Include the WordPress subdirectory when the site is installed there. - Transfer the complete folder. Upload
theme-nameas a folder directly insidethemes. Do not createthemes/package/theme-name. - Wait for the queue to finish. Review the FTP client’s failed-transfer list. A connection that drops partway through can leave an incomplete theme even when some files are visible.
- Verify on the server. Browse into the remote folder and confirm the root-level stylesheet, templates, and other files are present. This also proves that you uploaded to the intended server rather than a local or staging connection.
- Reload the dashboard. In wp-admin, open Appearance > Themes. Select the theme’s details and choose Activate only after it appears.
FTP upload versus uploading a ZIP in the dashboard
| Method | What you provide | What you must verify |
|---|---|---|
| FTP | An extracted, correctly structured theme folder. | The server path, one-level folder depth, complete transfer, and root style.css. |
| WordPress dashboard | The installable theme ZIP through Appearance > Themes > Add New > Upload Theme. | That the ZIP is the actual theme package rather than a vendor bundle, and that WordPress completes installation without an error. |
The dashboard method handles extraction and placement for you, but it does not make an outer package valid. If WordPress reports that the package is missing style.css, inspect the ZIP’s top-level folders and choose the inner installable package.
Best Value
If the theme is still missing, diagnose in this order
| Symptom | Likely cause | Action |
|---|---|---|
| No new theme appears at all | Wrong WordPress installation or document root. | Compare the domain’s serving root with the FTP path and locate the matching wp-admin, wp-includes, and wp-content. |
| Folder is visible, but the theme is absent | style.css is nested, renamed, or lacks a header. |
Place the registration stylesheet directly in theme-name and confirm a Theme Name header. |
WordPress says the theme is missing style.css |
The uploaded item is an outer package or the stylesheet is in a subfolder. | Open the archive locally, find the folder that directly contains the valid stylesheet, and upload that folder or its installable ZIP. |
| Some files are missing or the theme behaves incompletely | FTP errors, interrupted queue, or an incomplete recursive transfer. | Review failed transfers, retry the entire folder, and compare remote contents with the local extracted copy. |
| Files look correct but changes do nothing | Upload went to staging, another server, or a different domain root. | Verify the FTP account, server, document-root mapping, and the URL of the wp-admin session. |
| Theme appears but cannot be used properly | Required templates or theme-specific files are missing; this is separate from discovery. | Re-upload the complete package. For a block theme, confirm templates/index.html; for a classic theme, retain its supplied PHP templates. |
Permissions and transfer checks
Do not “fix” discovery by guessing a chmod number. The official procedure does not prescribe one universal permission value for theme recognition, and hosts configure normal WordPress permissions differently. Instead, use the host’s standard WordPress permissions or support guidance, and make sure the FTP account can read the files and directories.
- Check the FTP client’s transfer log for skipped, failed, or permission-denied files.
- Make sure hidden files and nested directories were not excluded by a client filter.
- Confirm the remote folder is readable and that the stylesheet opens as plain text.
- If a security or caching layer delays the dashboard view, sign out and back in or reload the Themes screen after the file check; do not treat a browser thumbnail as proof of registration.
Appearance > Themes is the final step, not the upload destination
Once the folder is correctly placed and recognized, WordPress lists it with the other installed themes under Appearance > Themes. Open its details to confirm the name and then select Activate. Uploading a theme does not activate it automatically, and activation is separate from detection.
If it is listed but activation produces a different error, the FTP discovery problem is solved. Investigate that new message—such as a missing template, incompatible PHP requirement, or a theme-specific setup step—without moving the folder again.
Quick Recap
Quick pre-upload checklist
- The FTP connection points to the server and domain used by the wp-admin session.
- The destination is the correct installation’s
wp-content/themesdirectory. - The uploaded item is the actual theme folder, not a documentation or vendor wrapper.
theme-name/style.cssexists directly at the theme root.- The first part of
style.csscontains a validTheme Nameheader. - For a block theme,
templates/index.htmlis present; for a classic theme, supplied PHP templates remain intact. - The FTP queue completed without failed transfers.
- The theme is visible in Appearance > Themes before you attempt activation.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




