How to Install a WordPress Theme: 3 Ways, Tested in 2026
There are three reliable ways to install a WordPress theme: from the free theme directory inside your dashboard, by uploading a ZIP file, or by copying the theme folder over FTP. We ran all three again on a fresh WordPress 7.1.3 site on 21 October 2026, broke the upload on purpose to capture the real error messages, and took the screenshots below.
- Tested on WordPress 7.1.3, PHP 8.3
- 8,710 free themes in the directory on 21 Oct 2026
- Themes used: Kadence, Astra 4.14.1
On this page
Before you start
You need an account with the Administrator role. Not sure which role you have? If there's no Appearance menu in your dashboard, you're not an admin: editors and authors don't see the Themes screen at all. Three situations change the steps:
- WordPress Multisite: only a network admin can install themes, from Network Admin → Themes. Site admins can then activate the themes the network enables for them. See the Multisite docs.
- WordPress.com: the hosted service at wordpress.com only lets you upload your own theme on plans that support plugins. On other plans you choose from its own theme list.
- Managed hosts: some hosts disable theme uploads on staging or lock file edits. If the Upload Theme button is missing, ask the host before trying FTP.
Here's the starting point on a fresh install: Appearance → Themes lists what's installed, with the active theme first.

1. Install from the WordPress theme directory
Is the theme free? Then this is the quickest method. It works for any theme listed on WordPress.org, and you won't leave your dashboard.
- Log in at yoursite.com/wp-admin.
- Go to Appearance → Themes and click Add Theme. Older guides call this button “Add New”; it was renamed.
- Browse the Popular, Latest or Block Themes tabs, or type a name into Search Themes.
- Hover over the theme card and click Install.
- When the card turns green with “Installed”, click Activate, or Live Preview to look first.



Will installing a theme change your live site? No. Only Activate does. That makes it safe to install two or three candidates and compare them with Live Preview first. If you're still choosing, our best free Elementor themes and WordPress blog themes lists are a good place to start.
2. Upload a theme ZIP (premium themes)
Bought a premium theme, or got one from a developer's site as a ZIP file? This is the method for you, and you don't need FTP.
- Download the theme ZIP. On ThemeForest, pick Installable WordPress file only in the Download menu, not “All files & documentation”.
- Go to Appearance → Themes → Add Theme and click Upload Theme at the top.
- Click Choose file, select the ZIP, and click Install Now.
- Wait for “Theme installed successfully.”, then click Activate.


Upload errors we reproduced, and the fixes
Did the upload fail? Most failed theme installs come down to the wrong file or a theme that's already there. We triggered both on purpose, so the messages below are exactly what WordPress 7.1.3 shows you. They aren't paraphrased.
“The package could not be installed. The theme is missing the style.css stylesheet.”
We zipped a folder the way many marketplaces ship their full download: documentation, licensing files and the real theme ZIP nested inside. WordPress unpacked it, couldn't find a style.css at the top level, and stopped.

Fix: open the download on your computer and look for a smaller ZIP named after the theme, usually in the root or a “theme” folder. That inner ZIP's the one to upload. Every WordPress theme must have a style.css with a theme header at its root, as the theme handbook explains. If you only have a folder, zip the folder itself, not its contents one level down.
“Destination folder already exists.” and “This theme is already installed.”
Uploading a theme that's already on the site doesn't fail outright anymore. WordPress shows the installed and uploaded versions side by side and lets you replace one with the other. That's also the easiest way to update a premium theme by hand.

Fix: check the Version row. If the uploaded one is newer, back up and click Replace installed with uploaded. If it's the same or older, click Cancel and go back.
“The link you followed has expired.”
This one usually means the file is bigger than the server's upload limit (upload_max_filesize or post_max_size in PHP). WordPress shows your limit as “Maximum upload file size” on the media upload screen at /wp-admin/media-new.php. Ask your host to raise it, or you'll need FTP below. What surprised us in testing: our limit was 2 GB, and we still got this exact message once, because we switched from localhost to 127.0.0.1 mid upload and the login cookie no longer matched. So if the file is small, log out, log back in on the site's real address, and try again.
Install fails in the theme directory with a download error
Method 1 needs your server to reach WordPress.org. Behind a strict firewall, or on a local machine without internet, the Install button fails with a download error. You'll have to download the ZIP from the theme's WordPress.org page and use Method 2 instead.
3. Install via FTP
When is FTP worth the extra steps? When uploads are blocked, the ZIP is over the upload limit, or the dashboard won't load at all.
- Unzip the theme on your computer. You'll get one folder, for example
astra/, withstyle.cssdirectly inside it. - Connect with an FTP client such as FileZilla, using the SFTP or FTP details from your host.
- Open
wp-content/themes/. You'll see one folder per installed theme. - Upload the whole theme folder there.
- In the dashboard, go to Appearance → Themes and click Activate on the new theme.
wp-content/
└── themes/
├── astra/
│ ├── style.css ← must sit here, not one level deeper
│ ├── functions.php
│ └── ...
├── kadence/
└── twentytwentyfive/
Theme not showing up on the Themes screen after uploading? The folder is almost always nested one level too deep, like themes/astra/astra/style.css. Move the inner folder up.
Bonus: one command with WP-CLI
If your host gives you SSH access with WP-CLI, a directory theme is one line, and a ZIP works the same way:
wp theme install kadence --activate wp theme install ./astra.zip --activate
Managing several sites? It's the fastest option, and it reports the same errors as the dashboard.
Installing a theme on localhost
Is it any different on a local site? Not really: the steps are the same as Methods 1 and 2. Our test site ran on WordPress Playground through its command line tool (npx @wp-playground/cli server), which doesn't need any PHP or database setup. Local works well too. Two things differ from a hosted site: Method 1 needs internet access from your machine, and if you open the site on two addresses, like localhost and 127.0.0.1, you'll get logged out mid upload, as we did.
After you install
- Keep the old theme until the new one's worked for a few days. Deleting it is permanent, activating it again is one click.
- Block themes such as Twenty Twenty-Five are styled under Appearance → Editor. Classic themes such as Astra use Appearance → Customize.
- Did your menu disappear? Check the menu, widgets and homepage settings. Your posts, pages and media stay, but theme specific settings don't carry over.
- Import starter templates only if you need them, and preferably on a fresh site, since demo imports add pages and images.
- Open a few pages on a phone before calling it done.
Want to choose more carefully next time? Our list of 20 WordPress themes for beginners and intermediate users and our guide to WordPress theme marketplaces cover where good themes come from.
How we tested: a fresh WordPress 7.1.3 site on PHP 8.3, 21 October 2026. Kadence installed from the directory, Astra 4.14.1 uploaded as a ZIP from its WordPress.org page, and a package without style.css built by hand to trigger the error. Screenshots are uncropped except for resizing.
More WordPress how-tos
Guides, theme picks, and plugin reviews to help you build a better site. All on WP Team X.
Browse WordPress guides