The loop has no exit, so you have to build one
The infinite loop is not a property of the GIF format itself. It came from an extension block Netscape bolted on in 1995, carrying a repeat count, where zero means forever. Zero is what essentially every encoder writes, including ours. So the last frame of your clip is followed immediately by the first, with no fade, no pause, and no mercy.
That seam is where most homemade reactions fall apart. Someone leans forward over two seconds, the clip ends, and they snap backward to their starting posture like a glitch. Two ways out. Choose in and out points where the subject is in a similar position, so the wrap reads as a gesture repeating rather than a rewind. Or turn on Bounce, which plays the clip forward then straight back inside one loop and removes the question entirely, at the cost of roughly doubling the frames. The boomerang page goes deeper on when that trick suits the footage.
Two seconds, chosen by hand, not by drag handle
The whole reaction is a change of expression, and the change is usually four or five frames long. Start one or two frames before it begins, so the reader gets a baseline to measure against, and end the moment it peaks. Held afterward, a face just looks like a photo that forgot to stop.
Which means dragging a handle with a mouse is not precise enough. In the editor the trim points nudge one frame at a time with the arrow keys, and the preview updates as you go. Numbers that hold up for people on camera:
- 1 to 3 seconds. Past three, the reader has read it twice and is waiting for you.
- 12 to 15 fps. Faces need the frames. Ten works for a cursor and looks broken on a laugh.
- 128 colors. Skin tones band ugly at 64, and there is no fixing it afterward.
- 1:1 or 4:5, cropped to the shoulders. A chat panel is narrow and a full room wastes it.
- Half speed on the peak. The per-clip speed dial goes down to 0.25x, and a slowed double take is funnier than a fast one.
Most reactions should not carry words
A reaction GIF is a gesture, and a gesture that needs a subtitle is not working. The exception is the label that adds a second layer: a face doing one thing while text names the absurd situation it is reacting to. When that is the joke, keep it to four or five words in meme style, top or bottom, no timing, so it reads before the first loop completes. If it takes longer to read than the clip takes to play, the loop is fighting the caption. The captions page covers writing them so they land.
Two clips also beat two sentences. Sequence a three-frame setup in front of the reaction and the structure does the work text was going to do.
Tenor already has forty thousand of these
Worth saying plainly, since we would rather you trusted the rest of this page. If you want a generic eye roll, a slow clap, or a man blinking, the built-in GIF picker in Slack, Discord, WhatsApp, or Messages is one tap away and has a better-lit version than you are going to shoot tonight. Use it. Nobody gives points for handmade.
Making your own earns its time in exactly three cases: the face is yours or your team's, so it means something to this specific group chat; the moment came from footage nobody else has, like your own recording or stream; or you need a running joke that will get reused for a year, which no library can supply. Outside those, the picker wins.
There is also the question of clipping a show or film you do not own. People do it constantly, and the practical risk in a group chat is essentially nil. Posting the same clip from a brand account is a different conversation with a different lawyer, and you should have it before, not after.
The person in the frame did not agree to a file upload
Reaction footage is almost always somebody's face, and usually a face that agreed to be recorded by a friend, not processed by a company. Running that through a website that wants the file on its server puts a colleague's unflattering two seconds somewhere neither of you can delete it from.
Here the clip is opened by your browser, decoded by your machine, and written back to your disk. There is no upload step to opt out of, because there is no upload step. Send the result where you like, or send it nowhere and delete it, which is a normal outcome for a reaction GIF and should be a cheap one.
Where it goes next has its own rules: chat platforms re-encode what you post, and Slack and Discord both hold caps that have shifted more than once, so check the current one rather than trusting any guide, this one included. The Slack and Discord guide has the current shape of it.