How-to

How to copy an animation from any website

Two ways to copy an animation from a website: read it by hand in Chrome DevTools, or capture its keyframes, timing and easing with the Capture Motion extension.

· 6 min read

You see a card that lifts just right, a menu that unfolds with a nice overshoot, or a hero line that staggers in. You want the same feel in your own product. The question is how to get the real numbers out of the page instead of guessing them from a screen recording.

There are two ways to do it. The manual way uses Chrome DevTools and works well for simple CSS. The fast way uses the Capture Motion extension, which records every animated property while the animation plays. This guide covers both, and where each one stops working.

What you are actually copying

An animation is a small set of data. To rebuild one, you need:

The HTML and the images are the least useful part. Copying the markup of a page rarely gives you the motion, because the motion often lives in a stylesheet rule you cannot see until a class is added, or in JavaScript.

The manual way: Chrome DevTools

For animations built with CSS keyframes or transitions, DevTools has everything you need. It just takes a few panels and some patience.

  1. Open DevTools on the element. Right-click the animated element and choose Inspect. The Elements panel opens with the node selected.
  2. Open the Animations panel. Click the three-dot menu (Customize and control DevTools), then More tools > Animations. You can also press Cmd+Shift+P (Ctrl+Shift+P on Windows), type "Animations" and pick Show Animations.
  3. Trigger the animation. The panel records animations as they start. Reload the page, scroll, or click whatever starts the motion. Each burst of animations appears as a group at the top of the panel.
  4. Slow it down. Set the playback speed to 25% or 10% and replay the group. Now you can see the order things move in and how far each one travels.
  5. Read the timing. Click a group. Each animated element gets a row with a bar for its delay and duration. Click the node name on a row to select it in the Elements panel.
  6. Find the rules in Styles. In Elements > Styles, look for the animation or transition declaration on the node. Click the animation name to jump to its @keyframes rule, and click the small curve icon next to any easing value to open the easing editor.
  7. Write it down. Copy the @keyframes block and the shorthand into your own stylesheet, then repeat for every element in the group.

For a single fade-in, this takes two minutes. You end up with something like this:

@keyframes card-in {
  from { opacity: 0; transform: translateY(24px) scale(.98); }
  to   { opacity: 1; transform: none; }
}

.card {
  animation: card-in 520ms cubic-bezier(.22, 1, .36, 1) both;
}
.card:nth-child(2) { animation-delay: 60ms; }
.card:nth-child(3) { animation-delay: 120ms; }

If you prefer the console, document.getAnimations() lists every running CSS animation, CSS transition and Web Animation on the page, with its keyframes and timing. Our guide to inspecting CSS animations in Chrome DevTools shows a snippet that prints all of it in one go.

Where the manual way breaks down

DevTools is honest about what the browser knows. The trouble is that a lot of modern motion is not something the browser sees as an animation.

How the animation is builtVisible in the Animations panel?What you see instead
CSS @keyframesYesName, timing, keyframes
CSS transitionsYesProperty, duration, easing
Web Animations API (element.animate())YesKeyframes and timing, often without a readable name
GSAP and other JavaScript tween librariesNoInline style values flickering in the Elements panel
LottieNoAn SVG or canvas being redrawn every frame

Three other things make it slow even when the animation is plain CSS:

The fast way: Capture Motion

Capture Motion is a Chrome extension that records an animation while it plays and turns it into data. It reads the keyframes, durations, delays and easing of every animated property, and it works with CSS transitions and keyframes, the Web Animations API, GSAP and Lottie.

  1. Install the extension from the Chrome Web Store and pin it to the toolbar.
  2. Open the page with the animation you want and start Capture Motion from the toolbar.
  3. Pick the element. Hover the page and click the element, or its container if several children animate together.
  4. Play the animation. Trigger it the way a visitor would. For hover animations, the extension sets a real :hover state through the Chrome DevTools Protocol, which is attached only during the capture.
  5. Preview the result. The capture replays in the extension so you can check it matches what you saw. Capture and preview need no account.
  6. Take the code. The popup shows the capture as code in CSS, React and GSAP tabs (plus Lottie when the source is Lottie). With a free account, click Copy on the tab you need, or download a self-contained HTML and CSS file.
  7. Or send it on. The main Capture Motion button copies the capture as JSON; paste it into the Capture Motion Figma plugin and it is rebuilt as a Figma Motion timeline. Copy for LLM copies the same JSON with a ready-made instruction for ChatGPT or Claude.
Privacy: captures stay in your browser unless you choose to save them.

If the next step is code, animation to code explains what each export contains. If the next step is design, see how to import a website animation into Figma.

Which way should you use?

Be honest about the size of the job.

Doing a few by hand first is worth it either way. Once you have read a dozen easing curves in the Styles pane, you start to see why some motion feels expensive and some feels cheap.

Respect the site you are copying from

Studying how a site moves is how most motion designers learn. Taking its assets is different. A few ground rules:

If you only need a common pattern, such as an animated avatar stack or a slide to confirm button, the Capture Motion gallery has ready animated components you can customize and export without copying anyone.

Questions

Can I copy an animation from any website?

You can read the motion of almost any animation, because the browser has to know its timing to play it. CSS and Web Animations are easy to read in DevTools. GSAP, Lottie and other JavaScript-driven motion need a tool that records it while it plays.

Is it legal to copy a website animation?

Timing, easing and the general idea of a motion are not usually protected, but a site's images, illustrations, Lottie files, fonts and code can be. Learn from the motion, rebuild it with your own assets, and check the licence before reusing anything else.

Why does the Animations panel show nothing for some animations?

The Animations panel only records CSS animations, CSS transitions and Web Animations API animations. Libraries like GSAP change inline styles on every frame from JavaScript, so there is no animation object for DevTools to show.

Do I need an account to use Capture Motion?

No account is needed to capture and preview an animation. A free account is needed to copy or download the export.