Tutorial

How to upload your site with FTP

Connect over FTPS, find the right folder, and upload without breaking permissions or line endings.

Ben Johnson · last checked 2026-09-21 · 4 min read

TL;DR
  • Set FTPS, not plain FTP, and connect to your subdomain on port 21 with explicit TLS.
  • Upload all site files into the public_html folder, nowhere else.
  • Name your main page index.html and put it directly in public_html.
  • Upload in binary mode only, and skip local build folders you do not need.

What you need

An FTP client and your login details. We recommend FileZilla. It is free, works on Windows, macOS and Linux, and handles FTPS correctly. You will need:

  • Your free subdomain (something.cwp.sg)
  • Your FTP username
  • Your FTP password

Set up FTPS, not plain FTP

Plain FTP sends your password in clear text over the internet. Anyone on the network between you and the server can read it. CWP free hosting does not accept plain FTP connections. You must use FTPS, which is FTP over TLS.

In FileZilla, open File > Site Manager. Create a new site. Enter your subdomain as the host. Set the encryption to Require explicit FTP over TLS. Port 21 is correct. The server will negotiate a TLS connection before sending any credentials.

If you see a certificate warning the first time you connect, check the certificate details. It is the server’s own certificate. Accept it permanently. If the login still fails, check the FTP 530 login incorrect page for the common causes.

The web root is the thing everyone gets wrong

This is the mistake that causes the most support threads. When you connect, you see a directory structure. Your files cannot go just anywhere.

The web root is named public_html. It is the folder that the web server reads from when someone visits your site. If you upload your files outside this folder, visitors will see a 403 Forbidden error. The server can see the files, but it will not serve them.

Connect with FileZilla. On the remote side, double-click public_html. You are now in the correct place. Keep FileZilla showing this folder before you start any upload.

index.html is what loads first

When a visitor goes to your subdomain, the web server looks for a file named index.html or index.php in the web root. It will load that file automatically. No other filename works for the main page.

Put index.html directly inside public_html, not in a subfolder. If you put it in a folder named my-site, the visitor would need to type yoursubdomain.cwp.sg/my-site/ to see it.

For a simple static site, your public_html should look like this:

public_html/
  index.html
  style.css
  images/
    logo.png

If your site loads but shows a 404 Not Found error, a page or asset is in the wrong place relative to the web root.

Upload in binary mode

FTP clients have two modes: binary and text (ASCII). Text mode rewrites line endings. It corrupts image files and makes them unreadable.

Set FileZilla to binary-only mode. Go to Transfer > Transfer type and select Binary. Never use Auto mode unless you understand exactly when it switches. With Binary set, you can drag your entire site folder into public_html and everything will arrive intact.

Files you can skip

Your local project folder might contain things that do not belong on the live server:

  • A local node_modules folder from a static-site generator
  • Source maps (.map files) from CSS or JS build tools
  • .git folders or .gitignore files
  • Large video files (our storage limit is 1 GB, but the 30,000 file-count limit bites harder)

You can upload just the built output. For a static site, that is often a single folder named dist or build. If you are unsure what to upload, read the guide to hosting a static website.

What to do after the upload

Once the transfer finishes, open a browser and go to your subdomain. You should see your site. If you see a directory listing instead of your page, you are missing an index.html file in the web root. If you see an error, check which error it is and follow the guidance above.

Test every page and every image link. A common mistake is uploading the local project folder itself, so your files end up at public_html/my-site/index.html instead of public_html/index.html. If that happens, move the files up one level.

Uploading with FTP is the simplest method

You now have a working site on CWP free hosting. The key points to remember are: use FTPS, put everything inside public_html, name your main page index.html, and upload in binary mode. Get those four things right and the rest is straightforward.