Where do I upload my website files?
Into the public_html folder, and nowhere else, if you want visitors to actually see what you have uploaded.
Your website files belong in a folder called public_html. That folder is the web root — the specific place on your hosting account that a browser actually reaches when someone visits your domain. Files stored anywhere else on the account exist and take up space, but they are never served to a visitor, no matter how correctly they are named or formatted.
Finding public_html
Connect to your hosting account with an FTP client, or open the file manager in your control panel. Either way, you will see a short list of folders at the top level of the account. Look for one named exactly public_html — on the vast majority of hosting accounts it is created automatically and is already there before you upload anything.
The account's top-level folder and public_html are not the same thing, even though they can look similar in a file listing. If you upload a file to the very top level instead of into public_html, it is saved to your account but will not appear on your website. This is the single most common reason a new site owner says an upload "did not work" when it actually did — it just went to the wrong place.
What goes inside it
Everything a visitor's browser needs to load your site: your homepage file (usually named index.html or index.php), every other page, your images, your CSS and JavaScript, and — if you are running an application such as WordPress — its entire folder structure. If your site was installed for you through your control panel, this is already set up correctly and you generally only need public_html for adding extra files afterwards.
What if I have more than one domain?
If your account hosts a single domain, everything for that domain goes directly inside public_html. If you have added other domains to the same account, each additional one usually gets its own subfolder — your control panel names it for you when you add the domain, and the same rule applies inside that subfolder as applies inside public_html itself.
Checking it landed in the right place
After uploading, visit your domain in a browser, using a private or incognito window so you are not shown a cached version of an older page. If the new file does not appear, reconnect with your FTP client, open public_html, and confirm the file is actually inside it and not sitting one level up. Our guide to why an uploaded file is not showing covers the other reasons this can happen, including permissions and browser caching.
If you have never connected to your account before, connecting with FTP covers getting into the account in the first place, using the host, username and port shown in your own control panel.
Related reading
It is the one folder on your hosting account that visitors can actually reach. Everything your site shows has to live inside it.
How to connect to your hosting with FTPA plain walkthrough of connecting to your hosting account with an FTP client, from finding your login details to seeing your files on the server.
How to upload your first websiteTwo ways to get your files onto your hosting account, which folder they belong in, and how to tell the upload actually worked.
FTP, FTPS and SFTP: which to useThree protocols with confusingly similar names, one of which sends your password in the open. Here is what actually separates them.