You can make a decal, and add individual frames of a picture and then you can have a script that play the decal frames and you got a animated gif. I think there is other ways but that what I would do.
The original, does not use a surface gui. It uses a texture and texture offsets, if you want it on a surface gui, you’d do the exact same thing done in the gui version, except you’d use heartbeat instead of render stepped (if you’re using a server script)