Get Started

A Guide to Creating Character Expression GIFs

See how one character performs across six GIF expressions, with hands-on tests of timing, size, transparency, camera changes, and loop continuity.

On November 4, OpenAI released its next-generation image model, Images 2.6. With Image 2.6, a text request in chat can directly produce a looping GIF. For creators making character reaction GIFs, the practical question is whether natural-language instructions can produce readable emotions, a consistent character, and motion that works on repeat.

How well can Image 2.6 turn one character image into six animated expressions? Let's look at the results with Arcloop. Using six original GIFs and frame-by-frame inspection, we examine the prompts, the outputs, and possible improvements.

Image 2.6 is also available on Arcloop. To continue creating in Arcloop, open the Arcloop workspace with your character reference and action description ready. The GIFs and measurements below come from our ChatGPT tests.

1. Choose the Character You Want to Animate

In ChatGPT accounts with GIF generation enabled, you can upload a still image and describe how it should move. You do not need to learn a timeline first, but you should specify what can change and what should stay the same.

Our reference shows a cat-eared character with short silver-gray hair, golden eyes, a blue-and-orange apron, a bell and orange ribbon in her hair, and a tail on the right side of the image. These features can serve as the details to preserve, while facial expressions, gestures, and tail movements can change.

This distinction makes checking the result more concrete. Raising a hand toward the face is a requested movement; losing the bell or changing the apron color may undermine character consistency. A fixed camera and composition are also constraints worth trying. They help focus the review on motion, but cannot guarantee that deformation will disappear. Check consistency at two levels: whether the character deforms within each GIF, and whether all six still look like the same character.

If you have not documented the details that should stay fixed, start with Build the Character Sheet Before You Write a Prompt. Define those visual anchors before planning changes in motion.

Original reference: a cat-eared character with short silver-gray hair, golden eyes, and a blue-and-orange apron

2. Writing Emotion Prompts and Evaluating the Results

Describe an emotion through visible actions so you have something specific to evaluate. Our goal was six separate GIFs. Here are the original prompts, translated into English:

  1. Shyly hiding her face: ears tilted back, both hands covering half her face.
  2. Angry hissing: cheeks puffed out, cat ears upright, with a mildly threatening gesture.
  3. A dismissive, tsundere-style huff: arms crossed, head turned aside, tail swishing gently.
  4. A gift for you: offering a small heart with both hands, eyes lighting up.
  5. Crying in distress: tears welling up, mouth turned down, shoulders trembling slightly.
  6. A smug wink: both hands on her hips, winking one eye once.

Shyly hiding her face: ears tilted back, both hands covering half her face. In the result, both hands gradually rise toward the mouth, the ears lower, and the cheeks blush. The gesture and expression make the shyness easy to read. When hands cover the face, also check the boundaries between the fingers and cheeks.

Shy GIF: both hands rise to cover the lower face as the ears lower

Angry hissing: cheeks puffed out, cat ears upright, with a mildly threatening gesture. The result expresses anger mainly through a frown, an open mouth, and raised hands in a threatening pose. Puffed cheeks are less prominent. The overall emotion reads clearly, but that does not mean every requested detail was followed precisely. GIFs have no sound, so the hiss must come through visually.

Angry GIF: a frown, open mouth, and raised hands

A dismissive, tsundere-style huff: arms crossed, head turned aside, tail swishing gently. Crossed arms, a turned head, and closed eyes communicate the attitude more clearly than a head turn alone. The output also adds a small puff-of-breath symbol. If you want a clean character sticker, you can ask to exclude such extra symbols in a follow-up request.

Tsundere GIF: crossed arms, head turned aside, closed eyes, and a breath symbol

A gift for you: offering a small heart with both hands, eyes lighting up. A pink heart appears in the palms and both hands extend forward, making the intended action clear. At the emotional peak, however, the character laughs with closed eyes; brightening eyes are not the main feature. The heart-offering action is there, while the eye performance differs from the request.

Heart-offering GIF: both hands hold a pink heart and extend it forward

Crying in distress: tears welling up, mouth turned down, shoulders trembling slightly. Watery eyes, drooping ears, and mouth changes communicate distress, with motion lines near the shoulders. This highlights the need to match the emotion label to the requested action. If you expect exaggerated sobbing, asking only for tears to well up may be insufficient; describe the intensity more clearly.

Crying GIF: watery eyes, drooping ears, and changes around the mouth

A smug wink: both hands on her hips, winking one eye once. Both the hands-on-hips pose and the closing of one eye are visible. The smile and stance convey smugness. This simple action is also easier to check against each part of the request.

Smug wink GIF: hands on hips, with one eye closing and opening

These results suggest that concrete gestures help distinguish emotions, while the model may still interpret facial performance in its own way. For follow-up requests, try specifying the emotion, facial change, one main action, and ending pose. Focus each revision on one mismatch rather than turning a short reaction into a complex plot.

For more ways to describe eyebrows, eyes, mouth shapes, and head position, see our anime facial expression prompt guide, then choose the details that suit your character reference.

3. Making Motion Transitions Feel More Natural

Complete the return to the starting pose before adjusting playback speed. Frame inspection shows that the original heart-offering GIF begins with hands near the chest and no heart, but ends with the hands still extended, holding the heart. The wink ends with hands on hips, while its first frame has both hands raised beside the shoulders. Both files repeat, but their starting and ending states differ. Check for a jump when playback restarts.

For the heart-offering action, you could try adding this instruction:

Begin with both hands holding a small heart at chest level. Slowly offer it forward, pause with a smile, then bring it back along the same path. End with the same hand pose, heart position, and expression as the beginning. Keep the camera and background fixed.

Having the prop present from the beginning removes one appearance-and-disappearance transition to handle. For the wink, you could keep the character's hands on her hips throughout, making the loop just a small eye-closing and eye-opening action.

If the pacing alone is wrong, you can adjust the playback speed of the GIF generated in ChatGPT. Speed changes do not automatically repair missing motion, deformed hands, or mismatched starting and ending states. Simplify the action first, then inspect the return movement.

4. How Long Can a GIF Be?

Using the heart-offering example, we generated a GIF with a 20-second playback cycle, but it contained only 16 frames, each held for 1.25 seconds. We recommend evaluating playback duration separately from motion continuity. Reaching 20 seconds in this test does not establish the maximum supported duration.

The original six GIFs had cycles of about 1.36–1.52 seconds, with eight frames each and infinite looping enabled. To explore longer cycles, we uploaded the same character reference again in ChatGPT on November 6–7, 2026, and requested heart-offering GIFs lasting 2, 10, and 20 seconds. We used the loop arrangement described above: hold the heart at the chest, offer it forward, pause with a smile, then return it to the chest. We requested a front-facing, waist-up view, a fixed camera, a white background, and no text.

We downloaded the GIFs returned by the generation interface directly, without local assembly, frame interpolation, or speed adjustments. The cycle durations below are the sums of the individual frame delays stored in each file, rather than timings taken while watching an infinitely repeating animation.

Requested durationActual cycle durationFramesDelay per frameOutput size
2 seconds2.00 seconds8250 ms439×439
10 seconds9.92 seconds16620 ms309×309
20 seconds20.00 seconds161250 ms309×309

All three files loop infinitely, with one hold, offer, and return sequence per cycle. The 10-second request came out 0.08 seconds short. We preserve that difference rather than treating the requested duration as a measurement.

The 2-second version has compact pacing and communicates the action stages clearly. In the first two frames, the heart is held at the chest; frames 3–5 show the offering and smile; frames 6–8 show the return. Each image stays on screen for a quarter of a second, so the pose changes remain visible. The first and last hand poses are similar, but the images are not identical. We cannot call it a seamless loop.

2-second test GIF: an actual 2.00-second cycle, eight frames, and 250 ms per frame

The 10-second version adds transition images, but updates more slowly. The frame count rises from eight to 16, breaking the offer, pause, and return into more stages. However, each frame also stays on screen for 0.62 seconds. Consider both changes together; twice as many frames does not necessarily mean smoother playback. This version also moves the bell and orange ribbon from the hair to the neckline, so the character details are not fully preserved.

10-second test GIF: an actual 9.92-second cycle, 16 frames, and 620 ms per frame

The 20-second version reaches the requested duration, with more noticeable pauses between images. It has the same 16-frame count as the 10-second version, but each frame remains for 1.25 seconds. The extra playback time does not add more motion images; the result feels more like a sequence of key poses. This was a separately generated file, not our slowed-down version of the 10-second output. The bell returns to the right side of the image, but the cup motif on the apron becomes a paw print, so clothing details still drift.

20-second test GIF: an actual 20.00-second cycle, 16 frames, and 1250 ms per frame

For this heart-offering reaction, we recommend using the 2-second pacing as the starting point for further work on hand poses and loop continuity. If you need a longer pause, increase it gradually instead of stretching a cycle directly to 20 seconds. For a short story with new actions unfolding over ten or more seconds, consider an animation or video workflow before deciding whether to convert the result to GIF.

We retained one output per duration and requested them sequentially in the same conversation. The 2-second prompt was shorter; the later two added character-preservation details. We did not fix output dimensions or frame counts, or run repeated trials. This is an exploratory test of one case. Changes in size and clothing cannot all be attributed to duration, and the results do not establish success rates or a universal duration limit.

5. Dimensions and Backgrounds

In our tests, requesting 512×512 or 1024×1024 did not produce files with those dimensions. White, pale pink, and genuinely transparent backgrounds all returned GIFs we could inspect. Check the downloaded file's actual dimensions, then assess edge clearance and whether the background suits its intended use. A prompt or preview size alone is not enough.

We ran four tests using the same cat-eared reference and heart-offering action. Shared instructions requested a 2-second cycle with eight frames, a fixed front-facing, waist-up view, and a hold, offer, pause, and return sequence. We asked to preserve the bell, blue-and-orange apron, cup motif, and tail, with the cat ears, hands, and tail fully inside the frame. Tests A and B changed only the requested dimensions. Tests C and D changed the background requirement from test A.

TestRequested size and backgroundActual sizeActual backgroundFile size
A512×512, solid white437×438Near-white, opaque473.4 KiB
B1024×1024, solid white439×439Near-white, opaque470.8 KiB
C512×512, original pale pink439×439Pale pink, opaque476.3 KiB
D512×512, transparent443×443Genuinely transparent434.3 KiB

All four were downloaded as GIFs with eight frames, 250 ms per frame, a 2-second cycle, and infinite looping. We did not resize, remove backgrounds, or re-encode them locally. KiB uses 1024 bytes per unit.

Check actual pixel dimensions rather than treating the requested size as the result. Neither A nor B matched its requested dimensions. Asking for 1024 did not produce a correspondingly larger image in B. These requests were not fulfilled in this test, but that does not establish approximately 439 pixels as a product-wide limit. Check file properties before using an output at a large display size. Enlarging a preview does not demonstrate additional detail.

Test A: requested 512×512 with a white background; actual heart-offering GIF is 437×438

Test B: requested 1024×1024 with a white background; actual GIF is 439×439

Inspect the composition across the whole action. Frame-by-frame inspection of these four files showed the cat ears, extended hands, and right-side tail without obvious clipping by the frame. However, the transparent version had only four pixels between the upper outline and the top edge, and a minimum of 15 pixels on the right. Nothing being cut off does not mean there is ample clearance. Check the frames where the ear tips and tail approach the edges before cropping. The transparent version is especially unsuitable for a tighter top crop.

To assess readability as a chat reaction, we also displayed test A's starting and offering frames at widths of 64 and 128 pixels. At 64 pixels, the pink heart and offering pose remain recognizable, while the gaze, fingers, and apron motif are harder to distinguish. Facial changes are clearer at 128 pixels. Prioritize whether the heart and gesture read clearly, then decide whether the face needs more emphasis. This checks reduced display sizes, not compression after sending through a chat platform.

The white and pale pink backgrounds were generated, but were not perfectly constant pixel for pixel. Both white-background outputs look close to white overall, though sampled areas are not uniformly pure white. The pale pink output retains a tone close to the reference. Mean RGB values in its upper-left 10×10-pixel area vary slightly between frames, without the background changing to another overall color. Judge the result for its intended use: overall stability may be enough for a casual reaction GIF, while fitting it precisely into a pure-white page also requires checking whether a near-white rectangle is visible at the edges.

Test C: the original pale pink background is retained; actual GIF is 439×439

The transparent background worked in this test, but the outline still needs inspection. Every frame of test D contains transparent pixels, with zero opacity in the corners. On white and dark backgrounds, the area outside the character reveals the underlying color. It is not a white background or a drawn checkerboard. By comparison, decoded frames from A, B, and C contain no transparent pixels. A transparency index in a file is not enough to call its background transparent.

Test D: genuine transparency in an actual 443×443 heart-offering GIF

During frame inspection on light and dark backgrounds, the hair, cat ears, hands, and tail displayed independently without a solid white rectangle left behind. The transparent output's pixels were either fully transparent or fully opaque, with no partially transparent transitions. Before use, check fine hair, ear tips, and tail edges on the intended page or chat background. Successful transparency does not automatically mean the edges look good on every background color.

We recorded actual dimensions, backgrounds, frame counts, and file sizes, but these do not establish success rates. The transparent file's smaller size also does not prove that transparent backgrounds always save space. We did not compare cropping, color reduction, or frame removal as compression methods. To reduce file size further, save a copy, change one setting at a time, and recheck the motion and outline.

6. Can the GIF Follow Camera-Change Instructions?

In these heart-offering tests, the camera changes were visible, and the bell's side and the same heart were largely preserved. Correct cuts, however, did not establish that framing, action continuity, and looping were all satisfactory. Check these separately, especially whether a close-up crops the action and whether a return to the waist-up view skips the return movement.

Using the same reference image, we generated three additional white-background GIFs: a gradual push-in followed by a pullback, one cut to a close-up, and a cut to a close-up followed by a cut back to the waist-up view. All three requested a 2-second cycle with eight frames and the same hold, offer, smile, and return action. Test A from section 5 serves as the existing fixed-camera reference. The three files below are the downloaded originals from this round, without local cropping, assembly, or speed changes.

TestCamera instructionActual observationFile data
1Gradually push in, then pull back to the waist-up viewThe character grows larger, then smaller; the close-up lasts through frame 5, with the pullback mainly in frames 6–8439×439, 8 frames, 2.00 seconds
2Cut to a close-up between frames 2 and 3, then hold the close-upA clear cut appears at the requested point; the ending stays close, creating a shot-size jump when the loop restarts waist-up439×439, 8 frames, 2.00 seconds
3Cut close between frames 2 and 3, then cut back waist-up between frames 6 and 7Both cuts appear; the heart is already at the chest on return, with insufficient return-motion coverage437×439, 8 frames, 2.00 seconds

All three files hold each frame for 250 ms and loop infinitely. Cut positions in the table come from frame-by-frame inspection.

Test 1: a gradual push-in looks different from a cut. The hands and heart are not the only elements getting larger; the head and upper body enlarge together, then shrink back to the waist-up view in frames 6–8. This supports describing the visible result as a push-in and pullback change in shot size. Compared with the request, the close-up lasts through frame 5 rather than clearly beginning to pull back in that frame. The ear tips also extend outside the frame in frames 3–5. With only eight frames, the steps between poses remain visible.

Test 1 GIF: the character gradually enlarges while offering the heart, then returns to a waist-up view

Test 2: one cut to a close-up works, but the loop boundary needs its own plan. Frames 1–2 show a waist-up view, and frame 3 switches directly to a tighter frontal shot. Both hands continue holding the same pink heart. We did not observe the heart disappearing, changing hands, or reappearing after the cut. The bell and orange ribbon also remain on the right side of the image.

The head and heart still change size within the close-up, so the composition is not strictly locked. In frames 4–5, the bottom of the heart is clipped, as are the ear tips. Frame 8 is still a close-up, so restarting directly at the waist-up first frame creates a clear change in shot size. This follows the test's deliberate decision not to include a return shot, rather than failing that instruction. It also means the result is not ready to serve directly as a naturally continuous looping reaction.

Test 2 GIF: a direct cut from waist-up to close-up, ending in close-up

Test 3: adding a return shot still requires checking whether the action was cut out. This output cuts close between frames 2 and 3, then back to waist-up between frames 6 and 7, matching both requested positions. On return, the bell remains on the same side, and the blue-and-orange apron and cup motif are visible again. Both hands keep holding the heart; we did not observe a second heart or an extra offering cycle.

The weakness is the return action. Frame 6 still shows the heart extended in close-up, but when frame 7 cuts back waist-up, the heart is already at the chest. Viewers can understand that it was brought back, but do not see enough of the transition. Frame 8's shot size and heart-holding pose are close to the starting state, making it easier to plan a loop than an ending that stays close. That is still insufficient to promise a seamless transition. The clipped lower heart edge and ear tips in the close-up also remain issues.

Test 3 GIF: cut close to offer the heart, then back waist-up with the heart already returned to the chest

For this case, we recommend continuing with a fixed camera, or refining test 1 with a smaller change in shot size. If a cut is necessary, use a looser close-up in the next attempt so the heart and both hands fit fully inside the frame. Specify the action states around the return cut more clearly, for example: the hands have already started moving back at the end of the close-up; after the cut to waist-up, continue that same return movement until the heart reaches the chest.

If repeated generations still fail to show the return clearly, you could prepare two shots separately and manually join them at similar action states. We did not test that editing approach, so we cannot present it as a proven fix. Each test has only one output and no fixed random seed. These findings apply to these 2-second, eight-frame samples. We verified visible changes in shot size and action state, not three-dimensional camera motion, and did not establish success rates for other camera arrangements.

With your own character reference ready, start creating in Arcloop. Begin with one expression and one main action, then use the checks in this guide to review character details, motion transitions, and the actual output file.

Share

Discover More

AI Character Voice Generator: How to Create Character Voices and Keep Them Consistent

AI Character Voice Generator: How to Create Character Voices and Keep Them Consistent

Turn a Script Into an AI Short Drama

Turn a Script Into an AI Short Drama

Create an Anime OC with AI: From Character Concept to Your First Video

Create an Anime OC with AI: From Character Concept to Your First Video

Making a Character Relationship Chart

Making a Character Relationship Chart