{"id":5405,"date":"2026-03-02T17:02:32","date_gmt":"2026-03-02T09:02:32","guid":{"rendered":"https:\/\/crepal.ai\/blog\/?p=5405"},"modified":"2026-03-02T17:02:35","modified_gmt":"2026-03-02T09:02:35","slug":"how-to-create-animated-videos-replit","status":"publish","type":"post","link":"https:\/\/crepal.ai\/blog\/agent\/how-to-create-animated-videos-replit\/","title":{"rendered":"How to Create Animated Videos in Replit"},"content":{"rendered":"\n<p>Hey, buddy. Dora here. That day, I was doomscrolling past yet another flashy motion graphic on X and thought, could I whip up something like that without opening After Effects? I already live inside <strong><a href=\"https:\/\/replit.com\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Replit <\/a><\/strong>most days, so I spent the afternoon seeing how far I could push it for quick animations and MP4 exports. Not sponsored, just honest results.<\/p>\n\n\n\n<p>If you&#8217;re curious about <strong>how to create animated videos in Replit<\/strong>, here&#8217;s exactly how I did it, what worked, what got on my nerves, and a few shortcuts I wish I knew an hour earlier.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"before-you-start\">Before You Start<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"free-tier-no-install\">Free tier, no install<\/h3>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"589\" data-id=\"5410\" data-src=\"https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-10-1024x589.png\" alt=\"\" class=\"wp-image-5410 lazyload\" data-srcset=\"https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-10-1024x589.png 1024w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-10-300x173.png 300w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-10-768x442.png 768w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-10-18x10.png 18w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-10.png 1051w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/589;\" \/><\/figure>\n<\/figure>\n\n\n\n<p>I tested this on <strong><a href=\"https:\/\/replit.com\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Replit&#8217;s free tier in Chrome<\/a><\/strong> on a MacBook Air (M2). No desktop installs. For simple 10\u201330 second animations, free is fine. If you start exporting 4K videos or piling on heavy libraries, you&#8217;ll feel the RAM ceiling. In that case, consider a Boosted Repl, but don&#8217;t overthink it upfront.<\/p>\n\n\n\n<p>A quick heads-up: <strong>rendering to MP4 uses CPU and disk.<\/strong> Keep an eye on your project&#8217;s storage and clean old renders if you iterate a lot.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"works-in-browser\">Works in browser<\/h3>\n\n\n\n<p>Everything runs in the browser. You can preview animations instantly in the right-side webview. When you&#8217;re ready to export, you can either capture in-browser (for quick drafts) or use server-side tools (for stable, consistent renders). I&#8217;ll show both.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-1-starting-animation-mode\">Step 1 \u2014 Starting Animation Mode<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"prompt-method\">Prompt method<\/h3>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"807\" height=\"456\" data-id=\"5409\" data-src=\"https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-9.png\" alt=\"\" class=\"wp-image-5409 lazyload\" data-srcset=\"https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-9.png 807w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-9-300x170.png 300w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-9-768x434.png 768w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-9-18x10.png 18w\" data-sizes=\"auto, (max-width: 807px) 100vw, 807px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 807px; --smush-placeholder-aspect-ratio: 807\/456;\" \/><\/figure>\n<\/figure>\n\n\n\n<p>I started by opening the <strong><a href=\"https:\/\/replit.com\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Replit AI panel <\/a><\/strong>(right sidebar) and literally typed: &#8220;Create a clean p5.js sketch with a 1920\u00d71080 canvas and a looping 10-second animation.&#8221; It generated a tidy scaffold with setup() and draw() plus a basic easing function. I didn&#8217;t expect much, but it surprised me by adding comments and a sensible frame count target.<\/p>\n\n\n\n<p>That first pass gave me a working loop with scene timing I could tweak. If you prefer CSS\/JS animations over canvas, try &#8220;Give me a pure CSS keyframe animation that reveals a headline and fades in a logo.&#8221; The AI will scaffold an HTML\/CSS\/JS trio you can run instantly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dropdown-method\">Dropdown method<\/h3>\n\n\n\n<p>If you don&#8217;t want to prompt, use the template route:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Click &#8220;Create Repl&#8221;.<\/strong><\/li>\n\n\n\n<li><strong>Choose the p5.js template (or HTML\/CSS\/JS if you&#8217;re doing DOM animations).<\/strong><\/li>\n\n\n\n<li><strong>Hit &#8220;Run&#8221; and you&#8217;ll get a live preview.<\/strong><\/li>\n<\/ul>\n\n\n\n<p>I tried manim (Python) as well, but on free resources I found browser-based (p5.js) faster to iterate. Manim is fantastic for math\/diagram animations, just expect slower renders. If you&#8217;re new, p5.js is the friendlier on-ramp.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-2-writing-a-prompt-that-works\">Step 2 \u2014 Writing a Prompt That Works<\/h2>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"547\" height=\"290\" data-id=\"5408\" data-src=\"https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-8.png\" alt=\"\" class=\"wp-image-5408 lazyload\" data-srcset=\"https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-8.png 547w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-8-300x159.png 300w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-8-18x10.png 18w\" data-sizes=\"auto, (max-width: 547px) 100vw, 547px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 547px; --smush-placeholder-aspect-ratio: 547\/290;\" \/><\/figure>\n<\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"enhance-prompt-button\">Enhance Prompt button<\/h3>\n\n\n\n<p><strong>Small thing, big win:<\/strong> in the AI panel, there&#8217;s an Enhance Prompt option (the little sparkle\/plus icon). On March 1, 2026, I tested it by pasting a messy idea, &#8220;I want soft blobs, pastel colors, slow float, 10s loop&#8221;, then clicked Enhance. It rephrased my thoughts into constraints: exact canvas size, duration, palette, and a note to make frame 0 and frame N identical for a seamless loop. The output code was cleaner, and the loop was actually\u2026 looped.<\/p>\n\n\n\n<p>If you already write detailed prompts, you might not need this. But if you&#8217;re moving fast, Enhance saved me a few back-and-forths.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"example-prompts\">Example prompts<\/h3>\n\n\n\n<p><strong>Here are three prompts that gave me reliable results:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#8220;Create a 1920\u00d71080 p5.js animation that loops every 10 seconds (600 frames at 60 fps). Use a calm pastel palette (mint, lilac, oatmeal). Animate 6 organic blob shapes with Perlin noise. Ensure frame 0 and frame 600 match for a seamless loop.&#8221;<\/li>\n\n\n\n<li>&#8220;Build an HTML\/CSS keyframe animation: a bold headline rises from 0% to 100% opacity with a subtle y-translate over 1.2s, then a logo fades in with a mask reveal. Include prefers-reduced-motion support.&#8221;<\/li>\n\n\n\n<li>&#8220;<a href=\"https:\/\/p5js.org\/reference\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">In p5.js<\/a>, animate a line grid that transitions through three color schemes (dawn, noon, dusk). Crossfade each scene over 2 seconds. Add a gentle zoom (1.03\u00d7) so there&#8217;s parallax.&#8221;<\/li>\n<\/ul>\n\n\n\n<p>Note the specifics: resolution, duration, palette, transitions. The AI responds way better to constraints than vibes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-3-iterating-through-conversation\">Step 3 \u2014 Iterating Through Conversation<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"adjusting-transitions\">Adjusting transitions<\/h3>\n\n\n\n<p>The first draft of my blob animation looked\u2026 fine. But the transitions felt linear. I asked: &#8220;Swap to easeInOutCubic and add a 300ms overshoot on scene changes.&#8221; The AI updated the timing functions and added a brief overshoot that made the motion feel more alive.<\/p>\n\n\n\n<p>If you&#8217;re not sure what easing to use, <strong>ask the AI for 3 options <\/strong>and a one-sentence reason for each. On my test, it suggested cubic for smooth loops, quint for sharper snaps, and sine for soft breathing. I kept cubic.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"changing-color-schemes\">Changing color schemes<\/h3>\n\n\n\n<p>Color is where animations go from &#8220;okay&#8221; to &#8220;I want to watch this again.&#8221; I asked for HSL-based palettes so I could tweak hue\/brightness live: &#8220;Convert colors to HSL and expose a PALETTE object so I can swap themes.&#8221; Then I tried:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dawn: hsl(18, 60%, 95%), hsl(270, 30%, 80%), hsl(200, 35%, 70%)<\/li>\n\n\n\n<li>Dusk: hsl(260, 45%, 20%), hsl(300, 35%, 30%), hsl(200, 30%, 25%)<\/li>\n<\/ul>\n\n\n\n<p>The change took seconds, and the whole vibe shifted. For brand work, I pasted hex codes from a style guide and asked the AI to balance contrast for accessibility.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"adding-logo-reveals\">Adding logo reveals<\/h3>\n\n\n\n<p>For a logo bumper, I dragged a transparent PNG into the repl&#8217;s files (I named it assets\/logo.png). Then I asked: &#8220;Add a 1.2s circular mask reveal for assets\/logo.png at the end. The logo should end at 85% opacity.&#8221; The AI used a p5 mask approach and timed it with the loop. Nice touch.<\/p>\n\n\n\n<p>One caveat:<strong> vector logos (SVG) stay crisp at any resolution.<\/strong> If you have an SVG, ask the AI to render it via createGraphics() or inline SVG in HTML mode. PNGs can look soft at 4K.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-4-exporting-your-mp4\">Step 4 \u2014 Exporting Your MP4<\/h2>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"662\" height=\"495\" data-id=\"5407\" data-src=\"https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-7.png\" alt=\"\" class=\"wp-image-5407 lazyload\" data-srcset=\"https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-7.png 662w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-7-300x224.png 300w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-7-16x12.png 16w\" data-sizes=\"auto, (max-width: 662px) 100vw, 662px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 662px; --smush-placeholder-aspect-ratio: 662\/495;\" \/><\/figure>\n<\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"resolution-and-frame-rate-options\">Resolution and frame rate options<\/h3>\n\n\n\n<p>Preview is fun, but you&#8217;ll eventually want an MP4. I tested two paths:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Quick capture (browser):<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the Canvas Capture Stream API + MediaRecorder. The AI can scaffold this if you ask: &#8220;Add a Record button that captures 1920\u00d71080 at 30 fps for 10 seconds and downloads an MP4 or WebM.&#8221;<\/li>\n\n\n\n<li>Pros: Fast, simple. Great for drafts.<\/li>\n\n\n\n<li>Cons: Timing can drift on slow laptops, and codecs vary per browser.<\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Frame-by-frame + <a href=\"https:\/\/ffmpeg.org\/documentation.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">FFmpeg<\/a> (server-side):<\/strong><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"444\" data-id=\"5406\" data-src=\"https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-6-1024x444.png\" alt=\"\" class=\"wp-image-5406 lazyload\" data-srcset=\"https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-6-1024x444.png 1024w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-6-300x130.png 300w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-6-768x333.png 768w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-6-1536x666.png 1536w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-6-18x8.png 18w, https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-6.png 1646w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/444;\" \/><\/figure>\n<\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ask the AI to export each frame as PNGs to a frames\/ folder: frames\/00001.png, frames\/00002.png, etc.<\/li>\n\n\n\n<li>Then, in the Shell, run:<\/li>\n<\/ul>\n\n\n\n<p>ffmpeg -r 30 -i frames\/%05d.png -c:v libx264 -pix_fmt yuv420p -crf 18 -vf &#8220;scale=1920:1080:flags=lanczos&#8221; out.mp4<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pros: Deterministic timing, consistent quality, stable across machines.<\/li>\n\n\n\n<li>Cons: Renders take longer and use storage.<\/li>\n<\/ul>\n\n\n\n<p>My timings (free tier, 1920\u00d71080, 300 frames at 30 fps, PNG export + FFmpeg):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Frame export: ~2.1s per frame (total ~10.5 min)<\/li>\n\n\n\n<li>FFmpeg encode: ~1.8 min<\/li>\n\n\n\n<li>Total: ~12.3 min for a clean 10s 1080p MP4<\/li>\n<\/ul>\n\n\n\n<p>If you need 4K, budget 4\u20136\u00d7 time depending on complexity. For social, 1080p at 30 fps is usually plenty.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"server-side-render-explained\">Server-side render explained<\/h3>\n\n\n\n<p>When I say &#8220;server-side,&#8221; I mean you&#8217;re letting Replit&#8217;s container do the heavy lifting. Instead of relying on your laptop&#8217;s CPU and browser, Replit runs the frame generation and FFmpeg inside the repl. This matters because:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Performance is consistent, even if your laptop is a toaster.<\/li>\n\n\n\n<li>You can close the preview tab and just watch the console logs.<\/li>\n\n\n\n<li>Your timing is frame-perfect. A 10-second loop is 300 frames at 30 fps, no dropped frames, no jitter.<\/li>\n<\/ul>\n\n\n\n<p>If you hit resource limits, use smaller batches (e.g., render 150 frames twice) or consider a Boosted Repl. Also, clean the frames\/ folder between takes. It fills up fast.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"common-beginner-mistakes\">Common Beginner Mistakes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"prompts-too-vague\">Prompts too vague<\/h3>\n\n\n\n<p>&#8220;Make it cool and vibey&#8221; is how you get a generic, forgettable loop. Instead, include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Exact canvas size (e.g., 1920\u00d71080)<\/li>\n\n\n\n<li>Duration and frame rate (e.g., 10s at 30 fps)<\/li>\n\n\n\n<li>Style constraints (e.g., pastel palette, organic blobs, soft grain)<\/li>\n\n\n\n<li>Loop requirements (frame 0 equals last frame)<\/li>\n<\/ul>\n\n\n\n<p>The difference in output quality is night and day. The AI can be your co-animator, but it needs a director.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"accepting-first-output-without-iterating\">Accepting first output without iterating<\/h3>\n\n\n\n<p>My first try looked like a nice screensaver. Usable, but not memorable. The magic came after three iterations: better easing, a slightly slower camera drift, and a color palette that actually matched my brand. Ask for small changes, test, then lock it. Two or three tight loops of feedback beats one giant rewrite.<\/p>\n\n\n\n<p>If you post to social, you&#8217;ll also want alternate crops (1:1, 9:16). Ask the AI to re-center elements and regenerate at 1080\u00d71350 or 1080\u00d71920 before encoding. It&#8217;s faster than fixing crops in post.<\/p>\n\n\n\n<p>Last thought for creators:<strong> if this becomes part of your weekly workflow (intros, bumpers, ad hooks), save your best prompts in the repo README and keep a render script handy. <\/strong>Future-you will be grateful.<\/p>\n\n\n\n<p>I&#8217;ll keep tinkering and share more builds if people want them. If you try this, DM me what you made, I love seeing strange blobs dance.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><strong>Previous post:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-crepal-content-center wp-block-embed-crepal-content-center\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"oLisnnkKpL\"><a href=\"https:\/\/crepal.ai\/blog\/agent\/replit-animated-videos-guide\/\">What Are Replit Animated Videos? (2026)<\/a><\/blockquote><iframe class=\"wp-embedded-content lazyload\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"\u300a What Are Replit Animated Videos? (2026) \u300b\u2014CrePal Content Center\" data-src=\"https:\/\/crepal.ai\/blog\/agent\/replit-animated-videos-guide\/embed\/#?secret=m28XnOqEeS#?secret=oLisnnkKpL\" data-secret=\"oLisnnkKpL\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" data-load-mode=\"1\"><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Hey, buddy. Dora here. That day, I was doomscrolling past yet another flashy motion graphic on X and thought, could I whip up something like that without opening After Effects? I already live inside Replit most days, so I spent the afternoon seeing how far I could push it for quick animations and MP4 exports. [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":5411,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_gspb_post_css":"","_uag_custom_page_level_css":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-5405","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agent"],"blocksy_meta":[],"uagb_featured_image_src":{"full":["https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-11-scaled.png",2560,1429,false],"thumbnail":["https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-11-150x150.png",150,150,true],"medium":["https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-11-300x167.png",300,167,true],"medium_large":["https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-11-768x429.png",768,429,true],"large":["https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-11-1024x572.png",1024,572,true],"1536x1536":["https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-11-1536x857.png",1536,857,true],"2048x2048":["https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-11-2048x1143.png",2048,1143,true],"trp-custom-language-flag":["https:\/\/crepal.ai\/blog\/wp-content\/uploads\/2026\/03\/image-11-18x10.png",18,10,true]},"uagb_author_info":{"display_name":"Dora","author_link":"https:\/\/crepal.ai\/blog\/author\/dora\/"},"uagb_comment_info":5,"uagb_excerpt":"Hey, buddy. Dora here. That day, I was doomscrolling past yet another flashy motion graphic on X and thought, could I whip up something like that without opening After Effects? I already live inside Replit most days, so I spent the afternoon seeing how far I could push it for quick animations and MP4 exports.&hellip;","_links":{"self":[{"href":"https:\/\/crepal.ai\/blog\/wp-json\/wp\/v2\/posts\/5405","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/crepal.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/crepal.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/crepal.ai\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/crepal.ai\/blog\/wp-json\/wp\/v2\/comments?post=5405"}],"version-history":[{"count":1,"href":"https:\/\/crepal.ai\/blog\/wp-json\/wp\/v2\/posts\/5405\/revisions"}],"predecessor-version":[{"id":5413,"href":"https:\/\/crepal.ai\/blog\/wp-json\/wp\/v2\/posts\/5405\/revisions\/5413"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/crepal.ai\/blog\/wp-json\/wp\/v2\/media\/5411"}],"wp:attachment":[{"href":"https:\/\/crepal.ai\/blog\/wp-json\/wp\/v2\/media?parent=5405"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/crepal.ai\/blog\/wp-json\/wp\/v2\/categories?post=5405"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/crepal.ai\/blog\/wp-json\/wp\/v2\/tags?post=5405"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}