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 'export'
git push origin main # then connect the repo in RenderWithout the terminal: dashboard.render.com → New → Static Site → connect repo → Publish directory: .
The render.yaml you need
Pin the publish directory and add the rewrite that keeps clean URLs alive.
services:
- type: web
name: my-framer-site
runtime: static
buildCommand: ""
staticPublishPath: .
routes:
- type: rewrite
source: /*
destination: /index.htmlCustom domain
Settings → Custom Domains. Render verifies via a CNAME and issues the certificate automatically.
What it costs
Static sites are free on Render, including custom domains and TLS — the paid tiers exist for their server products.
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 Render for free?
Static sites are free on Render, including custom domains and TLS — the paid tiers exist for their server products.
›Do I need a build step to deploy a Framer export to Render?
No. A Framer export is already built output, so the build command stays empty. Render serves the files as they are.
›How do I point my own domain at Render?
Settings → Custom Domains. Render verifies via a CNAME and issues the certificate automatically.
›What usually goes wrong when deploying a Framer export to Render?
The catch-all rewrite to /index.html is right for a single-page app and wrong for a Framer export, which has a real HTML file per page. Leave it in and every URL renders the homepage. Use per-path rewrites or none at all.