Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
VGSources
Blog

Why a WordPress Theme Uploaded by FTP Doesn’t Show Up in the Admin

FTP can report a successful upload while WordPress ignores the theme. Learn how to locate the right installation, place the real theme folder one level deep, validate style.css, distinguish classic and block themes, and activate the result safely.
Length8 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

An FTP upload can finish without errors while WordPress ignores the theme. In nearly every case, the files landed in the wrong WordPress installation, the actual theme folder is hidden one level deeper than wp-content/themes, or the folder’s root style.css is missing a valid theme header. Put the real theme folder directly in the wp-content/themes directory used by the wp-admin site, verify the stylesheet structure, then reload Appearance > Themes.

What WordPress must find before it lists a theme

WordPress does not treat every uploaded folder as a theme. During its scan of the themes directory, it looks for a folder with registration metadata in a root-level file named style.css. The file must begin with a theme header that includes at least a Theme Name field. If that file is absent, buried in a subfolder, or not a valid stylesheet with a header, the folder will not appear as an available theme.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The folder also has to belong to the same WordPress installation that serves the dashboard you are viewing. A hosting account may contain a production site, a staging copy and an older installation. Uploading to a plausible-looking wp-content/themes directory is not enough if that directory belongs to another copy of WordPress.

Find the correct wp-content/themes directory

Start from the domain shown in wp-admin

Use your host’s file manager or FTP client and identify the document root for the domain whose dashboard is open. WordPress may be installed directly under public_html:

public_html/wp-content/themes

It may instead be installed in a subdirectory:

public_html/wordpress/wp-content/themes

The second path is correct only when the site’s WordPress files are actually inside public_html/wordpress. Check for familiar files and folders such as wp-admin, wp-includes, wp-config.php and wp-content in the same installation root. If you see those items in more than one place, verify which document root the domain and the current wp-admin URL use.

Rule out staging and alternate domains

Changes that have no effect are often being made to a staging site, a development subdomain or a second installation. Compare the exact domain, subdirectory and server account in the FTP connection with the address in your browser. If your host provides separate staging folders, do not assume that the folder named “wordpress” is the live one. The correct destination is the installation that serves the dashboard where you expect to activate the theme.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Extract the download and identify the real theme folder

The FTP method expects an extracted theme directory, not an untouched archive. Downloaded packages frequently contain documentation, license text, demo content and a second ZIP file. Open the package on your computer and locate the folder that directly contains style.css.

For example, a vendor package might look like this locally:

downloaded-package/        (not necessarily the theme folder)
├── documentation/
├── license.txt
└── installable-theme.zip

After extracting the installable archive, the directory you upload should resemble:

theme-name/
├── style.css
├── index.php
└── ...

Upload theme-name, not the outer package that contains it. If the package contains a second ZIP, extract that ZIP first. Preserve the internal folders and filenames while transferring; do not flatten the contents into an unrelated directory.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Correct the folder depth

WordPress expects the stylesheet immediately inside each theme’s own folder. The working server layout is:

wp-content/
└── themes/
└── theme-name/
├── style.css
├── index.php (typical classic theme)
└── ...

A common failed upload adds an extra package level:

wp-content/themes/package-name/theme-name/style.css

WordPress scans package-name as the candidate theme folder, but its root has no style.css. Move theme-name up one level so it sits directly below themes. Do not move only the stylesheet; move the complete theme directory so its templates, functions and assets remain together.

Another failed layout places the registration file inside a CSS folder:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
wp-content/themes/theme-name/css/style.css

That file may be used for visual styles, but it is not in the location WordPress scans for theme metadata. The registration stylesheet must be wp-content/themes/theme-name/style.css.

Check the root style.css and its header

Confirm you opened the right file

Open the first lines of the stylesheet located directly in the theme folder with a plain-text editor. A valid header can be as small as:

/*
Theme Name: Fabled Sunset
*/

WordPress reads this header when it scans available themes. A CSS file elsewhere in the package, a minified asset or a file with a different purpose is not a substitute. Do not rename an arbitrary stylesheet to style.css; it must be the theme’s registration stylesheet and contain the metadata header.

Look for filename and transfer problems

  • Confirm the filename is exactly style.css, not style.css.txt. Some desktop systems hide known extensions.
  • Check capitalization if the server uses a case-sensitive filesystem. Style.css and style.css are not always equivalent.
  • Make sure the file is not zero bytes or truncated. Reopen it through the FTP client or hosting file manager and inspect the beginning.
  • Use a plain-text editor rather than a word processor, which can insert formatting characters that corrupt the header.

Classic themes and block themes have different template layouts

Theme type Recognition requirement Typical template structure
Classic Root-level style.css with a valid theme header index.php and other PHP templates
Block Root-level style.css with a valid theme header templates/index.html as the fallback template; often also theme.json

Block themes add a structural requirement: templates/index.html is the fallback template in the block-template system. The presence of that file does not replace style.css; WordPress still uses the stylesheet and its header to recognize the theme. Conversely, a classic theme normally includes index.php. If a block theme lacks its fallback template, it may be recognized but fail to render correctly, so check both registration and template structure.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Upload the theme with FTP, step by step

  1. Download and extract locally. Unpack the supplied archive and, if necessary, the installable ZIP inside it. Stop when you find the folder containing a root-level style.css.
  2. Connect to the live installation. In the FTP client, open the document root for the domain shown in wp-admin. Locate the matching wp-content/themes directory, including any WordPress subdirectory in the path.
  3. Check the destination before copying. Verify that wp-admin, wp-includes and wp-content belong to the same installation. Do not upload into a similarly named staging or backup folder.
  4. Transfer the complete theme folder. Upload theme-name directly beneath wp-content/themes. Do not upload the outer package and do not put the theme folder inside another newly created folder.
  5. Wait for the queue to finish. Review the FTP client’s transfer log for failed or skipped files. A directory listing can appear before all files have completed.
  6. Inspect the remote layout. Open the uploaded folder and confirm that style.css is immediately inside it. For a block theme, also check templates/index.html; for a classic theme, check for the expected PHP templates.
  7. Return to the dashboard. In wp-admin, open Appearance > Themes. WordPress should list the folder with the name read from its header.
  8. Activate only after checking details. Select the theme’s details, review the name and information, then choose Activate. Uploading makes a theme available; it does not automatically switch the site to it.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

If the theme is still missing, isolate the failure

The folder is present but no theme card appears

  • Recheck that the folder is directly under wp-content/themes, with no package directory above it.
  • Open the root style.css and confirm it contains a Theme Name header.
  • Check that the file is named exactly style.css and is readable, non-empty and complete.
  • Confirm that the FTP connection points to the installation serving the current wp-admin session.

WordPress reports that the theme is missing style.css

That message usually means WordPress cannot find the stylesheet at the expected root location, not that a CSS file is absent somewhere in the archive. Move the actual theme folder up to wp-content/themes and place its registration stylesheet directly inside it. If the file is already there, inspect its name, capitalization and transfer integrity, then verify the header.

The theme appears but looks broken

Recognition and rendering are separate checks. A theme can be listed because its metadata is valid while still missing templates, images, JavaScript or block files. Compare the remote folder with the extracted local copy, review the FTP transfer log, and re-upload missing files. For a block theme, specifically verify templates/index.html; for a classic theme, verify index.php and the theme’s other PHP files.

The upload completed but the old list remains

Return to Appearance > Themes and reload the page after the transfer has fully finished. If it still does not change, clear the browser’s cached page, sign out and back in, and then repeat the path and header checks. The most important test is not whether the FTP client said “success”; it is whether the correct live installation contains the correctly structured folder.

FTP upload versus installing a ZIP in the dashboard

Method What you provide Where the work happens Main failure point
FTP An extracted theme folder Your computer and the server’s wp-content/themes directory Wrong installation, extra folder depth or incomplete transfer
Dashboard upload An installable theme ZIP WordPress performs the extraction and installation Wrong ZIP, upload limits or an archive containing an extra package level

Use the dashboard’s theme uploader when you have a correctly packaged installable ZIP and your hosting limits allow it. FTP is useful when the dashboard uploader rejects a large archive or when you need direct control over the destination, but it makes folder placement and transfer verification your responsibility. Neither method activates a theme merely by copying files; activation remains a separate action in Appearance > Themes.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Permissions, staging and other cautions

When the folder structure and header are correct, check whether all files reached the server and whether you uploaded to the live site rather than a staging copy. The official WordPress procedure does not prescribe one universal permission number for theme discovery. Do not guess a chmod value simply because a theme is absent. Use the host’s normal WordPress permissions or its support guidance, and avoid making broad writable changes that weaken the site.

A thumbnail such as screenshot.png affects the visual preview in the Themes screen, but it is not the registration requirement. Missing thumbnails can explain an unattractive or blank preview, not an otherwise invisible theme. The decisive checks are the installation path, folder depth, root stylesheet and valid header.

What to verify before activating

  • The domain and wp-admin instance match the FTP document root.
  • The theme folder is one level below wp-content/themes.
  • style.css is directly inside that folder and includes Theme Name.
  • The complete transfer finished without failed files.
  • Classic themes contain the expected PHP templates; block themes include templates/index.html.
  • You have a backup or a tested way to return to the previous theme if the new one causes a layout or compatibility problem.

Once those checks pass, reload Appearance > Themes, open the theme details and activate it. If WordPress still cannot see it, repeat the path comparison from the domain outward; a successful FTP status is evidence of transfer, not evidence that the files reached the installation WordPress is scanning.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Leave a Reply

Your email address will not be published. Required fields are marked *

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.