Blog

Introducing Lift 2.0: AI Chat and Code Translation

Lift can now explain extracted code and translate it into React, Vue, Svelte, or Tailwind CSS. Here's what we built and why it changes everything.

Lift14 May, 2026Product

When I shipped the first version of Lift, the pitch was simple: point at something on a website, click, get the code. It worked. But almost immediately I ran into the same frustration that probably inspired you to look at Lift in the first place: "I have the code... now what do I actually do with it?"

Extracted code from a live site is messy. Styles are deeply nested, class names are auto-generated gibberish, and the markup is optimized for the browser, not for a human trying to read it. I'd paste it into my editor and spend the next 20 minutes squinting at the screen, trying to figure out what I was even looking at. It was honestly demoralizing.

I kept hitting this wall while prototyping. I'd extract a navigation bar from a site I loved, get a wall of CSS, and still have no idea which properties were doing the actual layout work versus which were inherited noise. Lift got you the code, but understanding it and actually adapting it? That was entirely on you. And that felt like a failure on my part.

AI Chat and Code Translation: Two Features, One Mission

So I built two things: AI Chat and Code Translation. Both are designed to close the gap between extracting code and actually using it in your project. Together, they turn Lift from a copy tool into something that genuinely helps you learn and build faster.

AI Chat lets you ask questions about extracted code directly inside the extension panel. "What does this CSS grid do?" or "Why is this element positioned absolutely?" Lift gives you a plain-language explanation using the actual code as context. It's not a general-purpose chatbot. It only knows about the code you're looking at, which honestly makes it way more useful than pasting into ChatGPT and hoping for the best.

You can also ask follow-up questions. "How would I make this responsive?" or "What would break if I removed this overflow rule?" The conversation stays scoped to your extraction, so the answers remain grounded in what's actually on screen rather than drifting into generic advice that doesn't help anyone.

How HTML to React, Vue, and Tailwind Translation Works

Code Translation converts raw HTML/CSS/JS into framework-specific components. Select React, and you get a proper JSX component with scoped styles. Select Tailwind, and Lift rewrites your CSS into utility classes. Select Vue or Svelte, and you get single-file components with the conventions those frameworks expect. It's not a find-and-replace. The translation engine restructures the code to match how each framework actually works.

The translation pipeline works in three stages. First, Lift parses the extracted markup into an abstract syntax tree, normalizing browser-specific quirks and resolving computed styles back to their authored equivalents where possible. Second, it maps CSS properties to the target framework's idioms, converting pixel values to rem units, collapsing shorthand properties, and identifying utility class equivalents. Third, it assembles the final component with proper imports, scoped styles, and framework-specific patterns like React's className or Vue's scoped style blocks.

I spent a lot of time on the Tailwind translation specifically, and honestly, it was one of the hardest parts to get right. Mapping arbitrary CSS to utility classes isn't straightforward. You can't just look up each property in a table. Tailwind uses a specific set of design tokens, and a 17px font size doesn't map cleanly to any of them. Lift makes intelligent approximations, uses arbitrary value syntax where needed, and leaves comments when a translation is lossy so you know exactly where to review.

What We Deliberately Chose Not to Build

I deliberately didn't build automatic code insertion, the feature where Lift would push translated code directly into your project. It sounds convenient on paper, but in my own experience, extracted code almost always needs human review. Class names might conflict. The component might need props. The styles might need to adapt to your existing design system. Auto-insertion would create a false sense of completeness, and I didn't want that.

Instead, Lift copies the translated code to your clipboard with one click. You paste it where it belongs, review it in context, and adjust as needed. It removes the tedious work without removing the judgment calls that actually matter.

Pricing and Plan Limits for AI Features

Both features are available on every plan, with usage limits that scale. Free users get 10 AI chats and 3 translations per month, which is enough to try it out and see if it fits your workflow. Pro users get unlimited translations and 100 AI chats. Team plans include shared usage pools so the whole team can benefit without individual seat management headaches.

What's Coming Next for Lift

We're still iterating on both features. The translation engine doesn't handle every edge case perfectly yet. Complex CSS Grid layouts and heavily nested media queries can produce suboptimal output. The AI responses can occasionally miss context when dealing with very large extractions that exceed our context window. We know, and we're actively working on it.

On the roadmap: support for Angular and Solid translations, smarter handling of responsive breakpoints during translation, and the ability to provide your own Tailwind config so translations use your project's design tokens instead of defaults. We'll keep improving both, and we're tracking known limitations in our public changelog. I'm genuinely excited about where this is heading.