How to create animated GIF files in Figma using TinyImage
Follow along with this step by step Figma tutorial video.
Steps
- Install TinyImage from Figma community plugins if needed, then open it from Plugins > TinyImage Compressor.
- Make sure the layers you want to animate have at least one export setting such as JPG, PNG, or SVG so they appear in TinyImage.
- Select the image or SVG exports you want to use as frames, then click Create GIF.
- Adjust the GIF settings such as quality, time per frame, playback count, image fit, size, transparency, background color, and dithering.
- Use Update Preview to refresh the animation and check the result.
- When the preview looks right, click Export to GIF and save the animated file.
- Repeat the process with different selected layers or settings if you want another GIF.

Published
Used in this video
TinyImage
ćæć¤ćć¼
Shrink Figma exports by up to 95%.
Compress JPG, PNG, SVG, WebP, AVIF, GIF, MP4, and PDF exports from Figma by up to 95%.
521k+ installs
Video Transcript
Today, weāre going to be looking at how to create and export animated GIFs from Figma using the TinyImage Figma plugin. This functionality is not built into Figma, so weāre going to use a plugin called TinyImage to make this happen for us.
If you havenāt already installed it, you can go to the Figma icon in the top menu bar and go down to ācommunityā; then click on āpluginsā; then what you want to do is search for ātinyimageā up in the search bar up hereand just hit the āenterā key and youāll see it pop right up. This is the TinyImage compressor plugin, I already have it installed but if you donāt have it installed, youāll be able to click the āinstallā button over here on the right, and once youāve clicked āinstall: itāll look like that, and itāll say that itās installed and then youāre good to go back to your Figma file.
Back in our Figma file, weāve just got a few very simple layers here so weāve got four image layers and three frames and three SVG frames. The first thing weāre going to do is run the Figma plugin, so you can right-click anywhere, go down to āpluginsā and then go to āTinyImage Compressorā and left click on that. As soon as it loads, you should see some images. If you donāt see any images, it means that you havenāt added any image exports onto your layers. If I click on any of my layers here and then go over to the right hand side, youāll see under the āexport settingsā that Iāve added a few export settings already, so if you havenāt done that, you can click on your layers that you want to include into this animated GIF that weāre going to make, and just make sure theyāve got at least one export setting on those layers; JPG is fine, PNG is fine, or SVG - anything you want to add really, just to make them show up in this list here.
Iāve already done this, and you can see here Iāve got a bunch of exports that I can that I can see and use. What Iām going to do, is Iām going to select a few of these photos; Iām going to select four, and it doesnāt really matter which export setting you select, all that matters is these are the frames that weāre going to add into our animated GIF. Once youāve selected the images that you want to create an animated GIF from, you can go up here, and instead of clicking the normal āCompressā button that you might use quite a lot for other formats, weāre going to use this middle button called āCreate GIFā. You can you can set the quality beforehand if you want to do that, so Iām just going to bump this up to 95. Once youāre happy with that you can click on this āCreate GIFā button and what thatās going to do is itās going to take the selected images that youāve just specified in the select panel before we clicked the button, and itās going to add those into this little preview here. This preview is just looking through the four frames that weāve already selected before clicking the button and itās giving us a real-time preview of that what that will look like if we were to export this to an animated GIF.
Letās dive into a few of the settings that we have some control over. The first one would be the ātime per frameā; this is a slider that we can move up and down at the moment itās set on 0.5 seconds, which means that each of your four frames are going to show for half a second before it moves on to the next one. If we want to increase that and slow it down a little bit, we can set the time per frame to be something more like 1 second. If you want to see that change reflected you can click on this āUpdate Previewā button down here, and what thatās going to do is just refresh that preview with our settings that weāve just changed. Now you can see it has slowed down the animation instead of going and from 0.5 seconds per frame, weāre now doing 1 second per frame; so every 1 second itās going to switch through these four, and you can see here itās set to playback as āinfiniteā which means that that will just keep going on forever, itās never going to stop. If we did want to change that, we can uncheck this āinfiniteā check box and we now have access to this input number here. We can actually change this to say loop it one time, if I set it to ā1ā and then click āUpdate Previewā, letās just let it play through. Thatās done one play through, and you can see it stopped on our last frame here; so itās gone through these stops. We can change that we can make it make it play through 3 times, so thatās basically going through these four frames, itās going to do that, and itās going to repeat it 3 times, so we can change that.
The other thing that we can do is (weāll get to this in a second), but at the moment itās being set to have a transparent background, so thatās why we can see this little gap at the top and the bottom here, because weāve got the size set to be square; itās set to 512x512, and that means that weāve got this little bit of space up here, and thatās why the transparency is showing through. Thereās a couple of things we can do here, we can either change the image fit. At the moment, itās set to ācontainā, which means that itās actually not going to crop any of the image data at all, itās just going to center position the image and shrink it down far enough so that none of the image gets cut, and anything that it doesnāt fill up itās just going to be left kind of blank. We can actually change that, and make it go to ācoverā; and if we change it to ācoverā, youāll see that itāll still be square, but the images will be automatically made to fit. Thatās thatās how it works, and you can see some artifacts popping up here; the reason for that is, we do not need transparency for this particular GIF, so Iām going to turn transparency off and update that; now you can see those artifacts have disappeared, so itās just left with the images without any transparency.
If we do switch it back to contain for a moment, Iām just going to show you one more thing you can do. Because weāve turned the transparency off, you can see that the the gaps here which are showing because weāve changed it back to ācontainā, theyāre set to white, and thatās because down here weāre setting the background color to be white for anything that shows through. If we wanted to change that, we can actually do that by just changing the HEX value down here ,so if I change it to black and update the preview, those gaps there are now going to be black. You can change that to any HEX value that you like, and anything thatās showing through because youāve set it to contain will automatically be made to be the same color as the the preference youāve set down here.
We can also change the image size as well, so if we did want to kind of shrink down that height a little bit, we can change that from 500 down to 400, and youāll see itās shrunk that down here. If we go down further and make it 300, you can see whatās happened here is now that the width is actually greater than the the height, youāve got bars on the side now, so thatās what it does, because weāve got it set to ācontainā, itās just going to keep containing the image based on whatever dimensions you specifified. If we want to change that again to ācoverā, we can do that, and this time it fills up those gaps.
The other thing that we havenāt looked at yet is image dithering; āditheringā is essentially a way to smooth out the colors inside of a GIF. By default, itās set to āNoneā, but we have a bunch of options here which we can change to make the dithering a bit different. This is going to be a little bit of trial and error, as certain dithering works better for different types of images. You can really just play around with it and see which one makes the most sense for the images that youāre using; in this case Iām going to use the āAtkinsonā dithering and just save that.
When youāre happy with this preview, you can go ahead and click on this āExport to GIFā button in the bottom right down here. If I click on that, itās going to grab those frames and turn them into an animated GIF. If I save this and open it, you can see here that itās exported it exactly the way that we we saw it in the preview; so weāve got these four frames looping at one frame per second, the dimensions are 512 by 300, and because itās being set to ācoverā, thereās no gaps whatsoever and and the dithering option that we selected looks really nice, itās very smooth, we canāt see any artifacts, canāt see any nasty pixel blurring, and overall itās just looking really good. Even at quality 95, itās actually saved out at a reasonable file size, weāve got 488 kilobytes for this animated GIF, and Iād say itās itās actually turned out quite well.
If we want to create another one, Iām going to open up TinyImage once more; and because weāve already run the Figma plugin, if you want to access it really quickly, you can get to it from this shortcut in the right-hand column. Underneath the āpluginā heading, youāll see āTinyImageā pop-up and itās a little milk bottle icon. The reason I have two is because one of them is my development version, but your one will look like this. Okay, in this case Iām going to do something a little bit different, and instead of selecting these photos, Iām going to select these little SVGs, all these transparent ones. If I select these, Iāll just do three of them, Iāll just bump the quality up for the sake of it, and Iām going click on āCreate GIFā one more time. This is loading up a new preview, and again itās inheriting the settings that we saved before; so you can see here weāve got the ācoverā setting selected, the image dithering from before is selected, the background color we selected and the timings that we selected are all in there, and the playback count. The size is updated every time, as it basically takes the dimensions of the first layer that youāve selected and itāll pre-populate those inputs down here, and thatās just to make it easier to have a bit of a baseline size so you donāt have to click back and forth and figure out roughly what those image dimensions are going to be. Thatās how it sets it up.
Thereās a few things we can do here, because weāre using layers that have no background or have transparent backgrounds, itās immediately filling in that transparency area with our background color down here. Again, we can change that if we wanted to, make it a white background; we just changed the HEX value and now itās a white background; so that would be perfect if youāre using this GIF on a website or something that already has a white background and you do will get a great result there. Iām actually going to going to do that now, if I just update this a little bit, Iāll set it to playback āinfiniteā and if I āExport to GIFā; weāve got that setup now. If I open that up, you can see there itās just itās really crisp, thereās no artifacts, no blurring, no anything at all; and that oneās come out at 89 kilobytes. Bear in mind, this is at 100 percent quality, so even at 100 percent, the file sizes are very reasonable.
Iām going to get out of that and relaunch TinyImage again, because Iām going to show you how to do a transparent export. Once again, weāll keep our 3 layers selected and click āCreate GIFā. This time, instead of having the white background, letās say for some reason the background on my website might need transparency, so Iām going to make the image transparent. Iām going to update the preview, and what youāll notice is the background is gone, but thereās these weird artifacts around the image; the reason for that is because we still have the image dithering set to this āAtkinsonā setting. That setting is really good for if we were using photos like in the last example, they looked really smooth with that particular setting, but in this case we donāt want to be doing that, as thereās nothing really to blend into. In this case, Iām actually going to turn dithering off and Iām going to refresh the preview and youāll see now that blac outline and artifact has completely disappeared, and weāre left with just the smooth image outlines in the transparent GIF, and Iām fairly happy with that. We can actually change the size down here if weād like, so we can make this 1000x1000 and I can set that to ācontainā. I think theyāre all square anyway, but thatās all good; in this case, Iām going to make this one a little bit faster and see what that looks like. Okay, Iām quite happy with this, so weāve got a fairly fast animation happening, itās going on forever (set to āinfiniteā), Iāve got a transparent background set at 1000x1000 pixels with no image dithering because thatās working really well for the transparency; and weāve set it to ācontainā, so we know that all the pixels are going to be added to the square no matter what.
Once again, Iām just going to click āExport to GIFā, and itās going to merge those for me into an animated GIF. It may take a little bit longer because itās a bit bigger 1000x1000 pixels, but still pretty quick. Iām just going to save that and open that up; and there we go so, you can see it saved it out at 1000x1000. Because these are vector layers the quality is really sharp, really nice and if we would just do this in a retina fashion on our website, we could actually shrink that down to 500x500, so that would that would basically make it an @2x kind of animated GIF and that just looks incredibly sharp when you when you kind of have the dimensions as well. Thatās a really good trick if you want extra sharp animated GIFs, you can export them at double the size that you actually want to use them at, and then have that size on your website using CSS and youāll get really crisp GIFs and GIF animations. Thatās actually come out really small, too. The last one that we did we had the white background and saved out at 500x500, but the transparent version at 1000x1000 has actually come out much smaller, so itās quite interesting to note as well if you are wondering why those two have come out differently, itās because of the transparency.
So, thatās thatās a pretty good overview of how to export compressed animated GIFs from Figma using TinyImage. You can actually play around with this slider a little bit more; youāre not going to see huge amounts of differences between these different qualities for GIFs in particular, but you will get a little bit of difference. If you do want to play around with file sizes, I would encourage you just to mess about with some of these maybe at the extremes to get a bit of an idea of what those size difference is going to be, but for the most part you can you can still get away with fairly high settings and and have fairly small file sizes as well.
Thatās a fairly comprehensive overview of all the different settings you can use, and the different ways you can go about creating GIFs directly from Figma or compressing GIFs using TinyImage. Thank you again for watching; if youāve been following along with these Figma tutorials, I hope theyāve been helpful. If you have any requests or questions please just reach out to me directly, Iām always trying to make these plugins (like this GIF Figma plugin) better, and feedback from people like you definitely makes it improve a lot faster when I know what kind of things and workflow issues that people are having. Until next time, I hope that youāve enjoyed the video and weāll see you soon!

Adam Brock
Founder & CEO of Hypermatic


