Animation and keyframes

Turn any Studio page into a short animation by posing its layers across a series of frames, then export it as MP4, WebM, GIF, animated SVG or Lottie. Bitgrain fills in the motion between poses for you, with the easing you choose for each step.

Animation in the Studio is pose based. You don't draw curves on a graph. You set up the page the way it should look at one moment, add a frame, move things to where they should be next, and Bitgrain tweens between the two. It is the same idea as keyframes in a video tool, but you work directly on the canvas.

Switching to animate mode

The top bar has a Design / Animate switch. Click Animate and a timeline bar opens along the bottom of the Studio.

Each page has its own timeline. A multi-page project can have some animated pages and some still ones.

Click Design, or the X (Close animation) at the right of the timeline bar, to go back to normal editing. Your frames are kept.

The timeline bar

The top row of the bar holds playback and export:

ControlWhat it does
Play / PausePlays the animation on the canvas from the playhead.
LoopToggles looping. When on, the animation returns to the first frame and repeats.
ScrubberDrag along it to move the playhead. Tick marks show where each frame starts.
Time readoutThe playhead position in seconds.
ExportOpens the export panel.
XCloses the timeline.

The second row shows the page name and a strip of frame thumbnails. Each thumbnail is a small live preview of that frame's pose. The first one is labelled Base, the rest are numbered. The dashed + tile at the end (Add frame) adds a new frame.

The third row holds the timing settings for the selected frame, and the fps setting for the page.

How frames work

The base frame

The Base frame is your design as it looks in Design mode. Every animation starts from it. When a new timeline is created it contains only the base frame, so nothing moves yet.

Adding a frame

Click + (Add frame). The new frame starts as a copy of the last frame's pose, becomes the selected frame, and the playhead jumps to it. A hint appears at the bottom right: move elements to pose this frame.

Posing a frame

With a numbered frame selected, anything you change on an animatable property is stored for that frame only. Drag a layer to a new spot, rotate it, fade it, recolor it or resize it, and the base design is left untouched.

Properties that can't be animated (for example the words inside a text layer) are changed on the layer itself, so the change shows in every frame.

Selecting and deleting frames

Click a thumbnail to select that frame. The playhead jumps to the moment the frame is reached. Hover over a numbered thumbnail and click the small X to delete it. The base frame can't be deleted.

What you can animate

Almost every visual property of a layer can change from frame to frame.

GroupPropertiesHow it moves
Position and sizex, y, width, height, rotationSmooth tween
Appearanceopacity, corner radius, stroke widthSmooth tween
Typefont size, letter spacing, line heightSmooth tween
Auto layoutgap, paddingSmooth tween
Draw-onthe Draw-on percentage of vector and ink layersSmooth tween
Colorsfill, stroke, stroke color, text colorSmooth color blend
Effectsimage filters, Bitgrain effect settings, torn edge, tape, text effects, gradient textNumbers and colors inside them tween, other settings switch
Vector pathsthe anchor points and handles of a vector shapeSmooth morph
Choicesdash style, line cap, line join, layout mode, alignment, distribution, text alignment, image fit, text transformSwitch at the end of the step
On and offvisibility, wrapSwitch at the end of the step

A few details worth knowing:

Timing and easing

Each frame has two timing settings, shown when it is selected:

The base frame shows Loop back instead of Duration. It sets how long the return from the last frame to the base takes when looping is on.

EasingFeel
LinearConstant speed. Mechanical, good for scrolling text.
Ease inStarts slow, finishes fast.
Ease outStarts fast, settles gently. Good for things arriving on screen.
Ease in outSlow at both ends. The default for new frames.
SpringOvershoots the target slightly, then settles back. Gives a small bounce.
HoldNo motion during the step, then a jump to the new pose at the end. Use it for pauses and hard cuts.

Tip: To make something sit still for a moment, add a frame, change nothing, and give it a duration. That frame acts as a pause.

Frame rate and looping

The total length of the animation is the sum of every frame's duration, plus Loop back when looping is on.

Exporting an animation

Click Export in the timeline bar. The Export animation panel opens.

FormatBest forNotes
MP4Social posts, messaging appsBest quality and widest support. Has a Quality setting: Low, Medium, High or Ultra.
WebMWebsitesSmaller file for the web.
GIFAnywhere a looping image is neededLimited to 256 colors, so gradients and grain can band.
SVGWeb pages that need crisp vector motionAnimates movement and opacity only.
LottieApps and sites using a Lottie playerVector JSON with full motion, color and easing. Saves as .json.

For MP4, WebM and GIF you can also choose a Resolution of 1x, 2x, 3x or 4x. The panel shows the output size in pixels next to the dropdown.

Click Export followed by the format name. The button shows progress as a percentage while frames are rendered, and the file downloads when it's done. Click Done to close the panel.

Things to know:

Plan limits

On the free plan, MP4, WebM and GIF exports carry the Bitgrain watermark and are scaled down so the long edge is at most 1500 pixels, whatever resolution you pick. Pro removes both limits. See plans and pricing for the full comparison.

Playing animations in presentations

Animated pages play automatically when you present your project. See presentation mode.

A quick first animation

  1. Make a square page with a title and a shape.
  2. Click Animate. You are on the Base frame.
  3. Move the title just below the bottom edge of the page and set its opacity to 0%.
  4. Click +. On frame 2, drag the title up to its final spot and set its opacity back to 100%.
  5. Set frame 2's easing to Ease out and its duration to 800.
  6. Click + again and leave frame 3 unchanged with a duration of 1500, as a pause.
  7. Press play, then export as MP4.

More documentation