Paste your site's address
Your published site on *.framer.website, *.framer.app or your own domain. HTML is picked for you.
FramerHTML
Paste your Framer site's address and download it as static HTML, CSS and JavaScript: every page built as its own HTML file, with its title and social tags, the same animations and interactions, and a page for every CMS item. Upload the folder to any host.
How it works
The same steps whatever the site. This page picks HTML; the converter lets you change it.
Your published site on *.framer.website, *.framer.app or your own domain. HTML is picked for you.
Conversions take 5.9 seconds on a typical day. Free, and you check the result before paying anything.
A .zip of the built site: 74 files. Upload the folder; nothing to install.
What you get
realmehdi.com in HTML: 17 routes and 74 files. Each page is an HTML file at its URL, styled before its scripts run; the scripts then make it interactive. The README lists every page and how to put the folder on each host.
17 pages, each an HTML file at its URL with its own title, description and canonical link. Unknown paths get the site's 404.html.
The site's components, built into the pages' scripts: the variants and hover states the designer set work as they do on the published site.
Props
stringstringFiles
Desktop, Laptop and Phone stay three layouts, as media queries. The converted home page is pixel-perfect: 0.00% of pixels differ at 1440, 768 and 390.
11 font stylesheets with @font-face rules, and 17 text styles as shared classes that change size at each breakpoint.
2 of the site's own and 8 from the marketplace, as source in src/code and src/vendor. 3 run only in the browser.
44 transitions, appear effects and hovers keep their springs: 35 of them stiffness 500, damping 60, played by motion.
The code
Unedited files from realmehdi.com's HTML export, 74 files in all.
site/index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<!-- Fonts and images load from the asset CDN: connect early, as the published site does -->
<link rel="preconnect" href="https://framerusercontent.com" />
<link rel="preconnect" href="https://framerusercontent.com" crossorigin="" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="" />
<meta data-prerendered name="viewport" content="width=device-width"/><link data-prerendered rel="preload" as="image" href="https://fram…
.df-pointer-events-none, .df-pointer-events-none * { pointer-events: none !important; }
.ssr-variant { display: contents; }</style><style data-breakpoint-css="">@media(max-width: 1199px){.hidden-template-phone{display:none!impo…
var w = window;
var d = document;
var state = w.__breakpointPruner;
if (!state) {
state = w.__breakpointPruner = {
active: {},
known: {},
overrides: [],
deferred: [],
emptyWrappers: []
};
var isHidden = function(element) {
var list = element.classList;
for (var i = 0; i < list.length; i++) {
var name = list[i];
if (name.indexOf("hidden-") === 0 && state.active[name]) return true;
}
return false;
};
var isOverrideMarker = function(node, edge) {
return node && node.nodeName === "TEMPLATE" && node.hasAttribute("data-breakpoint-override-" + edge);
};
var segmentId = /S:[0-9a-z]+$/;
var targetId = /P:[0-9a-z]+$/;
var inStreamSegment = function(node) {
for (var parent = node.parentElement; parent; parent = parent.parentElement) if (parent.hidden && segmentId.test(parent.id)) return true;
return false;
};
… 1461 more lines
site/*.htmlsite/assets/README.mdImages, fonts, videosRun and deploy
Static HTML is the site, built: upload the site folder to any host that serves files, such as Netlify, Cloudflare Pages, GitHub Pages, Vercel, an S3 bucket behind a CDN or a shared server. No npm, no Node.js, no server code.
$
Only in Static HTML
The conversion builds every page for you: there is no npm install, no build step and no Node.js. Unzip the download and upload the folder.
Each page is prerendered HTML that its scripts then bring to life: animations, hover and tap effects, menus, sliders and code components work as on the published site, and links open the next page without reloading the layout it shares.
What comes with it
The pages are built from the same conversion as the Vite project: the same components, styles and content, compiled into the folder.
robots.txt · sitemap.xml
Every page keeps its title, description, canonical link and social image. robots.txt, sitemap.xml and the site's redirects come with it.
<collection>.json
Every CMS item published when you convert gets its own page. Items added later need a new conversion.
17 text styles · 11 fonts
Colour and text styles are in the CSS, and every font family gets its @font-face rules.
framerusercontent.com
They stay on Framer's CDN by default, or come into the folder when you convert with Assets in the project.
src/lib/deframer
The scripts are React, motion and the site's own code, with a small kit in place of Framer's runtime. The site doesn't depend on Framer.
npm run build
The HTML is generated. To change the site, convert it again with Vite selected (free), edit the code, and npm run build writes the same folder.
Pricing
Convert free and check the HTML result first. Pay only to download: one credit per project, credits never expire. Or pay once for the lifetime deal: unlimited conversions, and every site you verify downloads free.
Launch discount · 50% off until 8 December 2026
Pay once, then convert as many sites as you like and download every site you verify, free, for as long as Deframer runs.
Fair use: up to 100 conversions a day.
Regular price $397$197one-time
Covers sites you verify with the meta tag. Downloading without verification still uses 10 credits (up to 30 for sites over 100 pages), and site protection uses credits too.
Launch prices: 50% off. Every pack doubles in price after 15 November.
One download with site verification.
$10$20one-time
1 credit · $10.00 per credit
Five verified downloads, or save toward a direct download.
$25$50one-time
5 credits · $5.00 per creditSave 50%
For studios moving their clients' sites, with their permission.
$100$200one-time
30 credits · $3.33 per creditSave 67%
Prices in USD. Checkout by Whop, our payment provider, which adds sales tax or VAT where it applies. Credits and the lifetime deal are added as soon as you pay and aren't refundable; see the refund policy.
Compare packs on the pricing pageLimits
Plain facts before you convert.
FAQ
Limits, files and verification are in the main FAQ, credits on the pricing page.
Framer itself doesn't export HTML. Deframer converts a published Framer site and builds it into static HTML, CSS and JavaScript, which you download as a .zip and own: one HTML file per page, CMS items included, ready to upload to any host.
Anywhere that serves files: Netlify (drag the folder onto Netlify Drop), Cloudflare Pages, GitHub Pages, Vercel, an S3 bucket behind a CDN or a shared server over FTP. The host should serve about.html at /about; Netlify, Cloudflare Pages, GitHub Pages and Vercel do, and the README shows the one line Apache or nginx needs.
Yes. Each page paints styled from its HTML, then its scripts make it interactive: animations, hover and tap effects, menus, sliders and code components work as on the published site.
The files are build output, so edits to the HTML don't last once the scripts run. To change the site, convert it with Vite selected (converting again is free), edit the React code, and npm run build writes the same folder.
No Framer runtime and no Framer servers: the scripts are React, motion and the site's own code. Images, fonts and videos load from Framer's CDN unless you convert with Assets in the project, which puts them in the folder.
Converting is free. Downloading the code is for your own site, or one whose owner allows it: verify the site for a 1-credit download, or confirm you own it or have permission and download for 10 credits. See pricing.
Get started