Deploy it
Unzip the export first, so the commands below run from inside the folder that contains index.html.
cd my-framer-export
git init && git add -A
git commit -m "Framer export"
git branch -M main
git remote add origin git@github.com:you/your-site.git
git push -u origin mainWithout the terminal: Repo → Settings → Pages → Source: main branch, / (root)
The .nojekyll you need
Stop GitHub running the export through Jekyll, which silently drops files and folders whose names begin with an underscore.
(empty file — its existence is the signal)Custom domain
Settings → Pages → Custom domain, plus a CNAME record at your registrar. GitHub writes a CNAME file into the repo and issues the certificate.
What it costs
Free for public repositories, including HTTPS on a custom domain. Private-repo Pages requires a paid GitHub plan.
Before you move the domain
- 1. Deploy to the host's own subdomain and open every page from the nav.
- 2. Visit a URL that does not exist and confirm you get a real 404, not a 200.
- 3. Submit any form on the site — exported forms post nowhere until you rewire them.
- 4. Only then move DNS, and keep the Framer plan active for one more cycle as a rollback.
Questions
›Can I host a Framer site on GitHub Pages for free?
Free for public repositories, including HTTPS on a custom domain. Private-repo Pages requires a paid GitHub plan.
›Do I need a build step to deploy a Framer export to GitHub Pages?
No. A Framer export is already built output, so the build command stays empty. GitHub Pages serves the files as they are.
›How do I point my own domain at GitHub Pages?
Settings → Pages → Custom domain, plus a CNAME record at your registrar. GitHub writes a CNAME file into the repo and issues the certificate.
›What usually goes wrong when deploying a Framer export to GitHub Pages?
Jekyll processing is on by default and will delete asset folders starting with an underscore — which is exactly how many exports name their asset directory. Add .nojekyll in the first commit or half your CSS will 404 with no error anywhere in the build log.