Shotcut tutorial · companion page
The trick is not a filter. It is an export preset almost nobody scrolls far enough to find: GIF Animation sits second in the Stock list in the Export panel, and it turns a trimmed, captioned clip straight into a looping GIF file. Two filters do everything else.
Reading in another language? Use the translate picker in the header, or your browser’s own translate command — the Shotcut filter, control and value names are marked to stay in English so they still match what is on your screen.
Most Shotcut tutorials are about a filter. This one is about a destination. The editing is deliberately thin — reframe, caption, trim — because the payload is the preset you pick in the Export panel at the end.
Shotcut ships no square preset. Settings → Video Mode → Custom opens a dialog where you type 1080 × 1080 and save it under a name. Every meme in the video comes out of that one mode.
A widescreen clip letterboxes in a square frame and a vertical clip pillarboxes. Size, Position & Rotate is the single filter that fixes both — zoom in past 100 % and the bars are gone.
Text: Simple stacks on the same clip. It opens holding #timecode# as a placeholder, which is why the first preview shows a running timecode instead of your words.
No plugin, no command line, no third-party converter. The preset is already in the Stock branch of the Presets list — second from the top, surrounded by video codecs, which is exactly why it gets missed.
This video carries no chapter markers, so the stops below are not Ben’s — they were derived here by reading the recording frame by frame — one frame every ten seconds, plus a second pass on a five-second offset wherever a panel needed reading — and each card is anchored to the frame it came from. That sampling is still coarse: where a step happens between two frames, the card says so rather than filling the gap. Click any screencap or timestamp to play from that exact second, right here in the card.
Every number below was read off the screen in the video. Where the video never shows a value, this page says so rather than supplying a sensible-sounding one.
Shotcut has no square preset, so you build one. Settings → Video Mode → Custom opens Add Custom Video Mode pre-filled with whatever mode you are already in. Overtype Resolution to 1080 × 1080 and Aspect ratio to 1 : 1. Give it a Name and it becomes a reusable preset; leave the name blank and it applies to this project only.
The mode shown before the change is 1920 × 1080 at 16 : 9, and Settings → Video Mode has HD 1080p 23.98 fps marked as current. Only the resolution and aspect ratio are touched.
There is one video track in this whole tutorial. No stacking, no second track, no track renaming — the timeline shows Output and V1 and nothing else, in both worked examples.
A square frame will letterbox a widescreen clip and pillarbox a vertical one. Add Size, Position & Rotate and push Zoom until the bars disappear, then drag the subject where you want it. The two examples in the video pull in opposite directions and land on different numbers — there is no correct value, only a correctly filled frame.
Size mode is Fill and Rotation stays at 0.0 ° in both. Only Zoom and Position are actually worked.
A meme is a couple of seconds. Example one is trimmed from 00:00:10:13 down to 00:00:06:19; example two runs its source video.mp4 at 00:00:03:15. Length is the single biggest lever on the size of the finished file, and this format has no mercy.
The trimming itself falls between the sampled frames — the before and after are both on screen, the edit action is not.
With the clip still selected, add Text: Simple on top of the reframing filter. It opens with #timecode# already in the Text box, so your first preview shows a running timecode. Select it and type your caption over it.
The Insert field row above the text box — # (Hash sign), Timecode, Frame #, File date — is what puts those placeholders in. You are removing one, not breaking anything.
The default is Verdana with Use font size unchecked and a black Outline at Thickness 3. Both examples do the same two things: tick Use font size and choose a point size, then take Thickness to 0 for flat white text. The font colour swatch is left white and no Background is enabled.
The chooser is opened on camera only for the first caption — Verdana, Regular, 72. The second caption’s 648 is read off the font button, not seen being selected.
Both captions sit Horizontal fit Center and Vertical fit Bottom. Example one leaves the box at full frame; example two drags the on-screen rectangle in, which is what the Position and Size fields are reporting.
This is the whole tutorial in one click. Open Export, and in the Presets tree expand Stock. GIF Animation is the second entry, directly under Default and above H.264 Baseline Profile. Select it, leave From on Timeline, click Export File, and the save dialog comes up already set to gif (*.gif).
The Advanced button sits right next to Export File and is never pressed in this video. No codec, frame-rate, loop-count or palette field is ever shown — the GIF inherits the project video mode, 1080 × 1080 at 23.976024 frames per second, and everything else is whatever the stock preset carries.
Encoding takes 00:00:26 in the Jobs panel for under seven seconds of animation. And when the save dialog is reopened for the second meme, the first one is sitting in the Desktop listing behind it: funny, GIF File, 90,149 KB. Roughly 88 MB. That is the trade-off this format asks for, and it is the reason the trimming step is not optional.
No quality or compression control is offered on the preset path, so length and frame size are the only two levers you have on that number.
Read directly off the frames. Rows are highlighted where they are the point of the tutorial — the square mode, the preset, what was deliberately left untouched, and what it all weighed.
| Setting | Value | Where it lives |
|---|---|---|
| Shotcut version | 20.10.31 | Help → About Shotcut |
| Project video mode | SQUARE — 1080 × 1080, 1 : 1 | Settings → Video Mode → Custom |
| Frames/sec | 23.976024 | Add Custom Video Mode |
| Scan mode | Progressive | Add Custom Video Mode |
| Colorspace | ITU-R BT.709 | Add Custom Video Mode |
| Mode before the change | 1920 × 1080, 16 : 9 (HD 1080p 23.98 fps) | Video Mode menu |
| Track stack | V1 only — one video track, not renamed | Timeline |
| Filter 1 | Size, Position & Rotate | The clip, in both examples |
| Filter 2 | Text: Simple | Stacked after the reframe |
| Export preset | Stock → GIF Animation | Export panel, second under Default |
| Export source | From: Timeline | Export panel |
| Use hardware encoder | Unticked | Export panel |
| Advanced export options | Never opened | The Advanced button is not pressed in the video |
| Codec / loop count / palette | Never shown | Would live behind Advanced; no field is displayed |
| Save as type | gif (*.gif) | Windows Export File dialog |
| Output resolution | Inherited from the video mode — 1080 × 1080 | No export override is shown |
| Output frame rate | Inherited from the video mode — 23.976024 fps | No export override is shown |
| Encode time | 00:00:26 | Jobs panel |
| Finished file size | 90,149 KB | Desktop listing in the second Export File dialog |
| Setting | Example 1 — widescreen source | Example 2 — vertical source |
|---|---|---|
| Source clip | production ID_4586615.mp4 | video.mp4 |
| Source duration | 00:00:10:13 | 00:00:03:15 |
| Source shape | Widescreen — letterboxes in the square | Vertical — pillarboxes in the square |
| Timeline length used | 00:00:06:19 | 00:00:03:15 |
| Zoom | 180.0 % | 99.0 % |
| Size | 1944 × 1094 | 1069 × 1900 |
| Position | −432, −4 | 6, −410 |
| Size mode | Fill | Fill |
| Horizontal / Vertical fit | Center / Middle | Center / Middle |
| Rotation | 0.0 ° | 0.0 ° |
| Caption | You’re funny | Happy Birthday! |
| Font | Verdana 72 | Verdana 648 |
| Use font size | Ticked | Ticked |
| Outline thickness | 0 (from a default of 3) | 0 (from a default of 3) |
| Padding | 0 | 0 |
| Text box position | 0, 0 | 79, 111 |
| Text box size | 1080 × 1080 | 921 × 859 |
| Text alignment | Center / Bottom | Center / Bottom |
| Exported as | funny.gif — Desktop | birthday.gif — Desktop |
The title promises four minutes and the recording supports it: the first finished meme is exported and playing back at 2:50, the second at 4:20, and the remaining time is the outro. Nothing is cut away or sped up — the build really is that short, because the work is choosing one preset.
There is no narration in this tutorial. The audio is an unbroken music bed and the teaching is done purely by watching the screen — which is why this page reads the pixels for every value rather than quoting anyone. Four separate checks agree, and they are worth stating because a silent video is easy to mistake for a broken transcript:
Whisper returned nine segments across 4:48. Eight of them are the same sentence — “Thank you so much for watching this video and I’ll see you in the next one” — landing at almost exactly thirty-second intervals. That is the classic pattern a speech model produces when it is fed music, and not one word of it is in the video. None of it is reproduced below.
volumedetect reports a mean of −9.3 dB and a peak of −1.2 dB — loud and level throughout. silencedetect at −35 dB finds exactly two silences in the whole file: half a second at the very start, and the final 10.2 s tail after the music stops. There is not one speech-shaped gap anywhere in between.
The frames were read at ten-second intervals and again on a five-second offset. No instructional overlay, callout or subtitle appears at any point. The only words rendered into the video are the end cards, and they are reproduced in full below.
The video’s own metadata settles it. The subtitles field — where a manually authored caption track would sit — is empty. Some of Ben’s other silent tutorials do carry one, and on those the uploaded captions are the lesson. This one has none, so there is genuinely nothing to transcribe.
All five lines belong to the same end card, which comes up at 4:36 and holds to the end of the video. Up to that point not a single word is written on screen. Every setting on this page was read out of the interface itself — there was no other source available, and that is the honest reason the values here are pixel-read rather than quoted.