Deploy it
Unzip the export first, so the commands below run from inside the folder that contains index.html.
npm i -g vercel
cd my-framer-export
vercel --prodWithout the terminal: vercel.com/new → Deploy → drag the unzipped export folder
The vercel.json you need
Force clean URLs so /about resolves to about.html, matching the paths Framer published.
{
"cleanUrls": true,
"trailingSlash": false
}Custom domain
Added under Project → Settings → Domains. Vercel issues the certificate automatically; you point an A record at 76.76.21.21 or a CNAME at cname.vercel-dns.com.
What it costs
The Hobby plan covers personal and non-commercial projects with automatic HTTPS and preview deployments. Commercial use is expected to move to a paid 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 Vercel for free?
The Hobby plan covers personal and non-commercial projects with automatic HTTPS and preview deployments. Commercial use is expected to move to a paid plan.
›Do I need a build step to deploy a Framer export to Vercel?
No. A Framer export is already built output, so the build command stays empty. Vercel serves the files as they are.
›How do I point my own domain at Vercel?
Added under Project → Settings → Domains. Vercel issues the certificate automatically; you point an A record at 76.76.21.21 or a CNAME at cname.vercel-dns.com.
›What usually goes wrong when deploying a Framer export to Vercel?
A Framer export contains .html files at the top level. Without cleanUrls, Vercel serves /about.html but returns 404 on /about — so every internal link Framer wrote breaks. Set cleanUrls before you point the domain, not after.