v4.0.0 RELEASE

Animate Your
Whiteboards

Enables animated GIF files, customizable path motion flows, and the complete Iconify open-source icon library directly inside your Excalidraw whiteboard canvas.

โšก INSTALL EXTENSION

* 100% Free, Secure & Open Source. Integrates directly with React imageCache.

๐Ÿ–ผ๏ธ
โž”
๐Ÿ”ฅ
๐Ÿ‘พ

โšก Core Features

v4.0 FEATURE

๐ŸŽจ Complete Iconify Library

Browse 200+ collections (Lucide, Tabler, Material, Phosphor, Font Awesome) directly via a glassmorphic sidebar panel. Star favorite icons, filter by collections or category (including native Animated SVGs), search instantly across 300,000+ icons, and drag-and-drop or click to paste SVGs. Open/close with the B shortcut.

10 MOTION STYLES

๐ŸŒŠ Line & Arrow Flows

Animate flows along paths and arrows on-demand. Choose from 10 motion styles: Particles, Marching Ants, Gradient Pulse, Ripple Wave, Packet Train, Snake Trail, Comet, Electricity, Wave, and Dual Flow. Fine-tune speed, direction, element size (1-5), spacing (20px-120px), and glow levels (None to Strong).

NATIVE PLAYBACK

๐Ÿ‘พ Real-time Playback

Watch GIFs loop directly on your board and run native SVG animations (SMIL/CSS). Independent playback switches in the extension popup dashboard let you turn GIF and SVG rendering on/off separately, with customizable speed multipliers (0.5x, 1x, 1.5x, 2x) for GIFs.

๐Ÿ•น๏ธ Interactive Demonstration Board

Interact with the simulated Excalidraw whiteboard. Turn the simulated extension **ON** and **OFF** in the popup dashboard to see the live rendering system freeze or loop.

๐ŸŽจ Excalidraw Simulated Canvas
Iconify Library
๐Ÿ“‚

Whiteboard is Empty

Spawn vector elements, drag and drop a GIF onto the board, or click preset stickers below!

Speed
Direction
Size
Spacing
Glow
ExcaliUp
v4.0.0
Excalidraw Connected

GIF Animations

Loop playback for canvas GIFs

Speed Multiplier:

SVG Playback

Native loops for animated SVGs

Flow Animations

Flow motion effects along paths

0
Active GIFs
0
Lines
Running
Status
๐Ÿ’ก
How to use: Drag and drop any .gif sticker directly onto Excalidraw. The extension decodes and injects loops automatically.

๐Ÿ‘พ Click to Spawn Pixel Stickers:

Pixel Heart inline preview
Pixel Heart
Retro Coin inline preview
Retro Coin
Mini Ghost inline preview
Mini Ghost

๐Ÿ“ Spawn Vector Elements:

โž”
Flow Arrow
โคณ
Zigzag Flow
๐ŸŒŒ

Need more animated stickers?

Check out our sister project, AstroFocus GIFs โ€” a massive library of high-quality retro pixel-art animations, game sprites, and transparent loops!

๐Ÿ”ง Loading Extension Unpacked

Since the project is hosted publicly on GitHub, follow these quick retro steps to run it locally in Chrome:

01

Get Files

Download the source code archive from the GitHub repository and extract the files to a folder on your computer.

02

Developer Mode

Open Chrome, navigate to chrome://extensions, and toggle Developer Mode ON in the top-right.

03

Load Folder

Click Load Unpacked and choose the extracted root folder. Open Excalidraw and start adding animated GIFs!

๐Ÿงฌ Hooking React Fiber

Unlike standard canvas extensions that paste overlays, Excali Up works natively with **Excalidraw's core rendering pipeline**:

  • DOM Traversal: Resolves react nodes by searching `.excalidraw__canvas.interactive` for key attributes.
  • Image Cache Overriding: Hijacks `app.imageCache.set` so that incoming GIF assets swap static image references.
  • Omggif Decoder: Computes disposal formats (e.g., restore to background or previous frames) to draw precise frame frames.
  • Immutable Versioning: Forces canvas redraws by incrementing version hashes directly in Excalidraw scene arrays.
Zero Dependencies React Native Pipeline
inject.js
// Intercept Excalidraw cache
const originalSet = imageCache.set;
imageCache.set = function(fileId, cacheEntry) {
  const res = originalSet.apply(this, arguments);
  if (cacheEntry.mimeType === 'image/gif') {
    if (!activeGifs.has(fileId)) {
      // Decode & animate via canvas
      activeGifs.set(fileId, new GifPlayer(
        fileId, cacheEntry, app
      ));
    }
  }
  return res;
};

โ“ Frequently Asked Questions

Does this work on custom Excalidraw instances?

Currently, the content script matches `https://excalidraw.com/*`. To run on self-hosted instances of Excalidraw, you can easily modify the matches array in the `manifest.json` file to include your custom domain name.

Will the exported SVG/PNG contain animations?

No, the standard Excalidraw exporter saves drawings as standard SVG code or static PNG images. The GIFs will play dynamically on your active blackboard canvas, but exports will capture the static frame.

How does performance hold up with multiple GIFs?

Excali Up optimizes memory by managing a single rendering tick per GIF element and running decoding once. If you load dozens of highly detailed GIFs, you can use the Extension Toggle Switch to pause the rendering loop and save CPU power instantly.