Skip to content

mxy680/unframed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

unframed

Export any Framer site to static HTML with a single command.

npm version license node


Framer doesn't let you export your site. unframed fixes that.

It renders every page in headless Chrome, captures the full DOM after Framer's runtime has finished, strips the Framer badge, and writes static HTML files you can host anywhere.

The output is a pixel-perfect copy — all styles, fonts, images, and animations are preserved exactly as they appear on the live site.

Quick Start

npx unframed https://your-site.framer.website

That's it. Your site is now in ./unframed-output/.

Usage

# Export entire site (auto-discovers pages via sitemap)
npx unframed https://example.framer.website

# Custom output directory
npx unframed https://example.framer.website -o ./my-site

# Single page only
npx unframed https://example.framer.website --single-page

# Higher concurrency for large sites
npx unframed https://example.framer.website -c 5

# Debug mode
npx unframed https://example.framer.website --verbose

Options

Option Default Description
<url> Framer site URL (required)
-o, --output <dir> ./unframed-output Output directory
-c, --concurrency <n> 3 Max concurrent page renders
-t, --timeout <ms> 120000 Per-page timeout
--single-page Only convert the given URL
--viewport <WxH> 1440x1024 Browser viewport size
--verbose Enable debug logging

How It Works

URL → Discover Pages → Render in Chrome → Capture DOM → Strip Badge → Rewrite Links → Static HTML
  1. Discover — Fetches /sitemap.xml to find all pages. Falls back to crawling homepage links.
  2. Render — Opens each page in headless Chrome and waits for Framer to fully render.
  3. Capture — Grabs document.documentElement.outerHTML — the complete rendered DOM, as-is.
  4. Clean — Strips only the Framer badge and editor bar. Everything else stays untouched.
  5. Rewrite — Internal navigation links are rewritten for static file hosting.

Output

unframed-output/
├── index.html
├── about/
│   └── index.html
└── blog/
    ├── index.html
    └── my-post/
        └── index.html

Each page is a self-contained HTML file. Deploy the folder to any static host — Vercel, Netlify, Cloudflare Pages, GitHub Pages, or your own server.

Good to Know

  • Images & fonts still load from Framer's CDN — nothing is downloaded locally
  • Animations & interactions work because Framer's JavaScript is preserved
  • First run downloads Chromium (~170MB) via Puppeteer — subsequent runs are instant
  • Works with custom domains and *.framer.website URLs

Requirements

  • Node.js 18+

License

MIT

Releases

No releases published

Packages

 
 
 

Contributors