Lifetime deal: $197 $397Unlimited conversionsLaunch discount, 50% off until 8 December 2026Ends 8 December 2026

Get it

FramerNuxt

Framer to Nuxt. Nuxt runs it, React draws it.

Paste your Framer site's address and get a Nuxt 4 project in TypeScript: Nuxt owns the routes, each page's head, the server and the deployment, and the pages are the converted React components, with the same animations, interactions, CMS and forms. Every page is prerendered.

Your published site on *.framer.website, *.framer.app or your own domain.

  • Free to convert
  • No card to start
  • Nuxt picked for you
  • 5.9 secondsAverage conversion
  • 236Sites converted
  • 100%TypeScript code

How it works

Three steps, one Nuxt project

The same steps whatever the site. This page picks Nuxt; the converter lets you change it.

  1. 01

    Paste your site's address

    Your published site on *.framer.website, *.framer.app or your own domain. Nuxt is picked for you.

  2. 02

    Convert in seconds

    Conversions take 5.9 seconds on a typical day. Free, and you check the result before paying anything.

  3. 03

    Download and run it

    A .zip of your Nuxt project in TypeScript, 292 files. Unzip, install, run. Nothing from Framer inside.

What you get

A Nuxt project with the site in React

realmehdi.com in Nuxt: 17 routes and 292 files. app/pages holds one .vue page per URL with its tags; React renders what's inside it. The React components are the same as in every other framework.

  • Every page, a route

    17 routes in app/pages, each a .vue page with its head that sets its own title, description and canonical URL. Unknown paths get the site's 404.

  • Components with typed props

    35 components, each a .tsx file with typed props and its own CSS module, keeping the variants and hover states the designer set.

    Props

    variant?
    answer?
    string
    question?
    string

    Files

    • faq-acordian.tsx300
    • faq-acordian.module.css211
  • Breakpoints kept

    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.

  • Fonts and text styles

    11 font stylesheets with @font-face rules, and 17 text styles as shared classes that change size at each breakpoint.

  • Code components come along

    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.

  • Motion keeps its timing

    44 transitions, appear effects and hovers keep their springs: 35 of them stiffness 500, damping 60, played by motion.

The code

Read every line. It's plain Nuxt.

Unedited files from realmehdi.com's Nuxt export, 292 files in all.

app/pages/index.vue

<script setup lang="ts">
// The page's title, description and social image; React renders
// the page itself (src/routes/index.tsx, in app/components/ReactSite.vue).
import { usePageHead, type Head } from "~/site/head";

const head: Head = {
  meta: [
    {
      title: "Mehdi Hassan Portfolio",
    },
    {
      property: "og:title",
      content: "Mehdi Hassan Portfolio",
    },
    {
      property: "og:description",
      content:
        "Helping startups design & develop breathtaking products & websites. 🌟 Expert in copywriting, design, & development.",
    },
    {
      property: "og:url",
      content: "https://mehdihassan.framer.website/",
    },
    {
      property: "og:image",
      content: "https://framerusercontent.com/assets/h1lpVwE2dPBKzvByiXOr3ANSFDA.jpg",
    },
    {
      property: "og:type",
      content: "website",
    },
    {
      name: "twitter:card",
      content: "summary_large_image",
    },
    {
      name: "twitter:title",
      content: "Mehdi Hassan Portfolio",
    },
    {
      name: "twitter:description",
      content:
        "Helping startups design & develop breathtaking products & websites. 🌟 Expert in copywriting, design, & development.",
    },
    {
      name: "twitter:image",
      content: "https://framerusercontent.com/assets/h1lpVwE2dPBKzvByiXOr3ANSFDA.jpg",
    },
  ],
  links: [
    {
      rel: "canonical",
      href: "https://mehdihassan.framer.website/",
    },
  ],
};

usePageHead(head);
</script>

<template>
  <!-- The page renders in app/components/ReactSite.vue. -->
  <slot />
</template>

localhost:3000 390

The home page this file renders, from the converted build at 390 wide
tsc --noEmit · 292 files · 0 errors
app/pages/**.vue
One per URL, its tags set with usePageHead; a CMS route's items take theirs from its .heads.json table.
app/components/ReactSite.vue
The bridge: the server renders the URL's React page into the document, and the browser keeps one React root across navigations.
server/api/forms/<form>.ts
One Nitro endpoint per native form, POST only.
nuxt.config.ts
Vite's React plugin for the converted modules, their @/ aliases, the pages Nitro prerenders and the site's redirects.

Run and deploy

Unzip, install, run. Nothing from Framer.

nuxt build writes a Node.js server to .output/ that runs on Node.js 22.22.3, 24.15 or later: any Node.js host, a container or your own server. npm run generate writes a static site to .output/public for a host that only serves files.

realmehdi-com · Nuxt

$

Only in Nuxt

Nuxt around the site

  • nuxt 4.6.2

    Nuxt's routes, head and server

    Each URL is a Nuxt page with its own tags, the forms are Nitro endpoints, and the site's redirects are Nuxt route rules. Add new pages, components and server routes in Vue and Nitro, beside the site.

  • nuxt 4.6.2

    The layout stays

    A link navigates with Nuxt's router and React's root stays mounted: the layout template two pages share keeps what it holds, such as an open menu or a navigation bar collapsed on scroll.

The same in every framework

One project, every framework

Next.js, TanStack Start, Astro, React Router, Vite, Nuxt and Static HTML exports share everything below. Only the routes, the document, the server and the build differ.

  • 35 components · 17 pages

    Pages and components

    Pages, layout templates and design components are React components in src/views, src/layouts and src/components, each with its CSS module. Components keep the designer's folders, variants and hover states.

  • 17 text styles · 11 fonts

    Styles and fonts

    Colour styles become CSS variables in src/styles, shared text styles become classes, and every font family gets its @font-face rules.

  • <collection>.json

    CMS content

    Each Framer CMS collection becomes a schema (src/cms/<collection>.ts) and its records as JSON (src/cms/<collection>.json).

  • api/forms/<form>

    Forms

    Native Framer forms post to the project's own API route, with a rate limit, a honeypot and field checks, and deliver submissions to webhooks you set in environment variables. A Vite site, which has no server, posts them to a form service.

  • 44 effects on motion

    Animations

    Animations and interactions run on motion, the open-source animation library. No Framer runtime: a small, readable kit in src/lib/deframer replaces it.

  • robots.txt · sitemap.xml

    SEO files

    Every page keeps its title, description and social image. The site's redirects, robots.txt and sitemap.xml come with it, and a README lists every route.

Pricing

Free to convert, one credit to download

Convert free and check the Nuxt 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

Lifetime deal

Verified sites

Pay once, then convert as many sites as you like and download every site you verify, free, for as long as Deframer runs.

  • Unlimited conversions and verified downloads, for life
  • Next.js, TanStack Start, Astro, React Router, Vite, Nuxt or static HTML
  • Priority in the conversion queue

Fair use: up to 100 conversions a day.

Regular price $397$197one-time

$197 until 8 December 2026, 23:59 UTC. Then $397.Ends 8 December 2026

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.

  • Single

    One download with site verification.

    $10$20one-time

    1 credit · $10.00 per credit

  • Starter

    Most popular

    Five verified downloads, or save toward a direct download.

    $25$50one-time

    5 credits · $5.00 per creditSave 50%

  • Studio

    For studios moving their clients' sites, with their permission.

    $100$200one-time

    30 credits · $3.33 per creditSave 67%

  • Free to convert
  • Credits never expire
  • The whole project as one .zip
  • You own your site's code

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 page

Limits

What to expect

Plain facts before you convert.

  • The result is close to the original but not guaranteed to be identical. Check every page, in the compare view when a live preview is available or by running the project.
  • Code components and third-party embeds stay as the site's own code: they come across as source, not rewritten.
  • Very large sites may not fit a conversion. Keeping images, fonts and videos on Framer's CDN (the default) makes the download much smaller.
  • The converted pages stay React components inside Nuxt. They aren't rewritten as Vue.
  • A split test ships its tested page's original version only: the Nuxt project doesn't pick a variant per visitor yet.

FAQ

Framer to Nuxt, answered

Limits, files and verification are in the main FAQ, credits on the pricing page.

Can I convert a Framer site to Nuxt?

Yes. Deframer converts a published Framer site into a Nuxt 4 project written in TypeScript, which you download as a .zip and own. Nuxt runs the routes, each page's head, the server and the forms; every page is prerendered and looks and moves as published.

Is the site converted to Vue?

No. The pages are the converted React components, the same as in every other framework, rendered by React inside Nuxt. That keeps the design, animations and interactions as published. New pages and components can be written in Vue beside them.

Where do page titles and descriptions go?

In each page's .vue file under app/pages, through usePageHead, or its .heads.json table for CMS items; the site's own tags are in app/site/head.ts.

Where can I host it?

npm run build writes a Node.js server to .output/; npm start runs it on any Node.js host. For a host that only serves files, npm run generate writes a static site instead, or choose Vite.

What does it cost?

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

Your site. Your Nuxt code.

  1. Convert
  2. Download
  3. Deploy anywhere