Tutorial

A batch-download script for Mixamo (workflow tip)

10 min read

A batch-download script for Mixamo (workflow tip)

It’s 3 AM. You’ve just finished rigging a new character, and now you need dozens of animations for its various actions: walk, run, jump, idle, attack. You head over to Mixamo, find the perfect motion capture (mocap) data, and start clicking. Download. Download. Download. Each click feels like a tiny chip in your soul, a moment stolen from actual game development. This manual grind is a silent killer of solo indie dev motivation, often pushing critical tasks to the back burner.

The problem isn't the quality of Mixamo's animations—they're fantastic for getting a quick start. The problem is the sheer volume of repetitive work required to get them into your project. You need a way to automate this tedious process, to reclaim those precious hours. This guide will show you how to build a simple batch-download script that handles the heavy lifting, letting you focus on making your game great.

1.The Mixamo treadmill: Why manual downloads break your flow

Every solo developer knows the pain of repetitive tasks. Manually downloading a few animations from Mixamo is fine, but when you need a full suite of character movements, the process becomes a time sink. Clicking through pages, selecting options, and waiting for each download to complete drains your energy and your schedule. This isn't just about efficiency; it's about preserving your creative momentum.

Illustration for "The Mixamo treadmill: Why manual downloads break your flow"
The Mixamo treadmill: Why manual downloads break your flow
  • Time consumption: Minutes per animation add up to hours per character.
  • Inconsistency: Easy to forget settings like FBX format or skin options.
  • Context switching: Pulls you away from creative work like level design or coding.
  • Burnout risk: Monotonous tasks lead to developer fatigue.

a.The hidden cost of clicking: How small tasks add up

You might think, "It's just a few clicks." But consider a game with five characters, each needing twenty unique animations. That's a hundred individual downloads. Each download requires navigating the Mixamo interface, selecting parameters, and initiating the process. This micro-management can easily consume an entire workday, pushing back more impactful development tasks like implementing platformer character animation or refining combat.

b.Animation variety vs. developer burnout

The desire for rich, diverse character animation is strong, especially for indie games trying to stand out. Mixamo offers an incredible library of high-quality mocap data, making this possible. However, the manual download barrier often forces developers to compromise, reusing animations or settling for fewer options. Automating this step frees you to experiment with a much wider range of movements, enhancing your game's visual appeal without sacrificing your sanity.

2.Why you need a script: Automating the tedious

A script isn't just about saving clicks; it's about creating a repeatable, reliable pipeline for your assets. Once set up, you can feed it a list of animation IDs and let it run in the background. Imagine walking away from your computer for an hour and coming back to a folder full of ready-to-use animations. This level of automation is a superpower for small teams and solo developers, allowing for efficient asset management.

Illustration for "Why you need a script: Automating the tedious"
Why you need a script: Automating the tedious
If your walk cycle takes more than an hour, you're solving the wrong problem. Focus on systems, not individual clicks.
  • Consistency: All animations downloaded with the exact same settings (FBX, T-pose, etc.).
  • Speed: Download dozens of files concurrently or in rapid succession.
  • Scalability: Easily add new animations as your project grows.
  • Focus: Free up your mental energy for design and coding.
  • Version control: Integrate script output directly into your asset pipeline.

3.Understanding the Mixamo API (and its quirks)

Here's the rub: Mixamo doesn't offer a public API for downloading animations. Many developers assume there's a straightforward programmatic way to access their library, but that's not the case. This means we can't just send simple HTTP requests with an API key. We need a clever workaround that simulates a browser session, making Mixamo think *you* are still clicking buttons.

Illustration for "Understanding the Mixamo API (and its quirks)"
Understanding the Mixamo API (and its quirks)

a.No public API? No problem

While a dedicated API would be ideal, its absence isn't a dead end. We can still interact with the website directly by mimicking browser behavior. This involves inspecting the network requests your browser makes when you manually download an animation. The key is to capture the session information and specific download parameters, then replay them using a scripting language like Python. It's a bit like teaching your computer to click for you.

The most effective way to authenticate with Mixamo and initiate downloads programmatically is by using your session cookie. When you log into Mixamo, your browser receives a cookie that identifies your active session. This cookie acts as your digital passport, telling Mixamo you're a logged-in user. We'll extract this cookie and include it in our script's requests. This allows the script to bypass login forms and directly access download links, just as your browser would.

Quick rule:

Your session cookie is temporary. If your script stops working, your cookie likely expired and needs refreshing.

4.Setting up your environment: Tools for the job

Before we dive into the script itself, you'll need a few basic tools to get started. Don't worry, these are standard for most developers. You likely already have many of them installed. A solid environment ensures your script runs smoothly and efficiently, minimizing debugging headaches later on. This setup is a one-time investment for significant returns.

Illustration for "Setting up your environment: Tools for the job"
Setting up your environment: Tools for the job
  • Python: The scripting language we'll use (version 3.x recommended).
  • Requests library: For making HTTP requests in Python.
  • BeautifulSoup: For parsing HTML content (optional, but helpful for link discovery).
  • A modern web browser (Chrome, Firefox, Edge) with developer tools.
  • A text editor or IDE (VS Code, Sublime Text, etc.).

This is the most crucial step for authentication. Your session cookie allows the script to impersonate your browser. It's a temporary key, so you'll need to refresh it periodically. Treat your cookie like a password; don't share it publicly, especially if you're using a personal Mixamo account. This cookie is the bridge between your script and Mixamo's servers.

  1. 1Log in to Mixamo in your web browser.
  2. 2Open your browser's Developer Tools (usually F12 or Ctrl+Shift+I).
  3. 3Go to the 'Network' tab and refresh the Mixamo page.
  4. 4Look for a request to `mixamo.com` (often the main document request).
  5. 5In the request headers, find the `Cookie` header. Copy its entire value.
  6. 6Store this value safely; it will be used by your Python script.

5.The script explained: How it sniffs out downloads

Our script will perform a series of actions: first, it will visit the animation's page on Mixamo, pretending to be you. Then, it will locate the download button's underlying request, which contains the actual download URL. Finally, it will use your session cookie to fetch the FBX file and save it to your local machine. This process simulates the manual download in a programmatic way, making it highly efficient for motion capture (mocap) assets.

Illustration for "The script explained: How it sniffs out downloads"
The script explained: How it sniffs out downloads

When you click 'Download' on Mixamo, the site doesn't immediately give you the file. Instead, it makes a background request to generate a temporary download link. Our script needs to intercept this. We'll use the `requests` library to fetch the page content and `BeautifulSoup` to parse the HTML. We're looking for specific JavaScript calls or form submissions that trigger the actual file generation. This is where browser developer tools become invaluable.

b.Handling FBX format and skin options

Mixamo offers various download options: FBX for Unity, FBX for other 3D software, with or without skin. These are typically handled by POST requests with specific payload data. Your script needs to replicate this. The easiest approach is to observe the network request when you manually select your desired options and then hardcode those parameters into your script. For 2D character animation, `FBX without skin` is almost always the correct choice, as your visual assets are separate.

  • Format: Always choose FBX for game engines.
  • Skin: Select Without Skin if you're retargeting to a custom rig.
  • Keyframe Reduction: Set to None for maximum fidelity, or experiment for file size.
  • Frames Per Second: Match your game engine's target FPS (e.g., 30 or 60).

6.Step-by-step: Your first batch download

Let's put it all together. This workflow assumes you have Python installed and the `requests` and `BeautifulSoup` libraries installed (`pip install requests beautifulsoup4`). You'll create a simple Python script, populate it with your Mixamo session cookie, and define a list of animation IDs. This sequence will guide you through the practical steps to automate your Mixamo downloads, making your asset pipeline much smoother. You can find many examples of such scripts on GitHub.

Illustration for "Step-by-step: Your first batch download"
Step-by-step: Your first batch download
  1. 1Prepare your animation list: Create a text file or Python list of Mixamo animation IDs (e.g., 'Walking', 'Running').
  2. 2Get your session cookie: Follow the steps above to extract your Mixamo session cookie.
  3. 3Write the Python script: Use `requests` to simulate browsing, and `BeautifulSoup` to find download URLs.
  4. 4Define download parameters: Specify FBX format, `Without Skin`, and other settings.
  5. 5Loop and download: Iterate through your animation list, fetching and saving each FBX file.
  6. 6Error handling: Add basic checks for failed downloads or expired cookies.

7.Common pitfalls and how to dodge them

Even with a well-crafted script, you might encounter some bumps in the road. Mixamo, like any web service, can change its internal structure, or your session might expire. Anticipating these issues will save you significant debugging time and ensure your batch downloading process remains robust. Understanding these challenges is part of becoming a self-sufficient indie developer.

Illustration for "Common pitfalls and how to dodge them"
Common pitfalls and how to dodge them

a.Expired cookies and re-authentication

Your Mixamo session cookie isn't permanent. It will expire after a certain period of inactivity or if you log out. When this happens, your script will start failing with authentication errors. The fix is simple: log back into Mixamo in your browser and extract a fresh cookie. You'll then update the cookie value in your script. Consider adding a notification system to alert you when this occurs.

b.CAPTCHAs and rate limiting

Mixamo might employ CAPTCHAs or rate limiting if it detects unusual activity, like rapid-fire downloads from a script. To mitigate this, introduce delays between your download requests. A random delay of 5-15 seconds between each animation download can make your script appear more human. If a CAPTCHA appears, you'll need to manually solve it in your browser before resuming. This is a common challenge when web scraping.

  • Add delays: Use `time.sleep()` in Python between requests.
  • User-agent string: Mimic a common browser's user-agent header.
  • Error logging: Keep track of failed downloads for manual retry.
  • Small batches: Download 5-10 animations, then wait a few minutes.

Warning: Respecting Mixamo's terms

While this method is effective, always remember that you're interacting with a service that doesn't officially support this kind of automation. Use your script responsibly and avoid excessive, rapid requests that could strain their servers. The goal is to streamline your workflow, not to abuse the service. A well-behaved script is a long-lived script.

8.Integrating Mixamo animations into Charios

Once you have your batch-downloaded FBX files, the real fun begins: bringing them into your 2D game. Charios is designed precisely for this, allowing you to retarget 3D mocap data onto your 2D character rigs. You drop your layered PNGs, snap them to a fixed skeleton, and then apply your Mixamo animations. This transforms generic 3D data into expressive 2D movements effortlessly. This is how you get VTuber head-yaw from webcam or defold multiplayer character animation working in 2D.

Illustration for "Integrating Mixamo animations into Charios"
Integrating Mixamo animations into Charios

a.From FBX to 2D rig: The Charios advantage

The beauty of a tool like Charios is its ability to bridge the gap between 3D animation sources and 2D game requirements. Your downloaded FBX files contain the skeletal animation data. Charios takes this data and applies it to your 2D layered artwork, eliminating the need for complex frame-by-frame animation or expensive 3D software. It's a workflow designed for speed and flexibility, crucial for indie developers tackling tasks like a shrug emote or a nod emote.

  • Drag-and-drop FBX: Easily import your Mixamo motion files.
  • Skeleton mapping: Intuitive tools to match Mixamo bones to your 2D rig.
  • Real-time preview: See your 2D character animate with 3D mocap data instantly.
  • Export versatility: Output as GIF or a Unity-ready prefab zip.
  • Browser-native: No heavy installs, work anywhere on any device.

Automating your Mixamo downloads is more than a technical trick; it's a fundamental shift in how you approach asset creation. It frees you from the repetitive drudgery that often stifles creativity and leads to burnout. By investing a little time upfront in a simple script, you gain hours back for actual game development, allowing your characters to move with the variety and fluidity they deserve. This workflow empowers you to scale your animation efforts without scaling your workload, a true win for any solo game developer.

Don't let manual downloads slow you down. Take 30 minutes right now to experiment with extracting your Mixamo cookie and trying a basic `requests` call. Then, when you're ready to bring those animations to life in 2D, check out the Charios dashboard to see how easily you can retarget mocap data to your unique characters. Your future self (and your game) will thank you.

Charios team

We build a browser-native 2D character animation tool — drop layered PNGs onto a fixed skeleton and retarget Mixamo or BVH mocap onto the rig. Try Charios →

Published May 15, 2026

FAQ

Frequently asked

  • How can I batch download multiple animations from Mixamo without clicking each one individually?
    You can use a custom script that leverages your browser's session cookie to programmatically access and download animations from Mixamo. Since Mixamo lacks a public API, this method involves parsing the webpage to find download links and then initiating the downloads automatically. This saves significant time compared to manual clicking for dozens of animations.
  • Does Mixamo offer an official API for bulk downloading animations?
    No, Mixamo does not provide a public API for directly downloading animations in bulk. This is why developers often resort to custom scripting solutions, like the one described, which mimic browser behavior to automate the download process using session cookies.
  • Can I use the Mixamo FBX animations downloaded with this script directly in Charios for my 2D characters?
    Yes, Charios is designed to retarget 3D Mixamo animations onto your 2D rigged characters. You can import the FBX files, map the 3D skeleton to your 2D rig, and then export the animated 2D sprites or a Unity-ready prefab. This bridges the gap between readily available 3D mocap and custom 2D animation.
  • What should I do if my Mixamo batch download script stops working?
    The most common issues are expired session cookies or Mixamo implementing new anti-bot measures like CAPTCHAs. First, try re-obtaining a fresh session cookie from your browser. If that doesn't work, Mixamo might have changed its page structure, requiring an update to the script's parsing logic.
  • How do I securely obtain my Mixamo session cookie for use with a download script?
    You can usually find your session cookie in your web browser's developer tools under the 'Application' or 'Storage' tab, specifically within 'Cookies.' Copying this value allows your script to authenticate as you, but remember that these cookies expire and should be handled carefully as they grant access to your account.
  • Why doesn't Mixamo offer a built-in batch download feature if so many users need it?
    While the exact reasons aren't public, it's common for web services to limit bulk access to manage server load, prevent misuse, or encourage engagement through their web interface. Implementing and maintaining a robust public API for mass downloads also requires significant development resources.

Related