all tutorials
watch on youtube ↗

Shotcut tutorial · companion page

Shine on Text, with Two Filters

One line of text, duplicated onto a second track. The lower copy is greyed to #686868; the upper copy keeps its white and gets Mask: Simple Shape, whose Horizontal value is keyframed across the clip. A narrow bright band sweeps through the letters. That is the whole build.

Ben Espanto 1:56 runtime uploaded 25 March 2021 14,577 views 339 likes

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.

0:00
runtime
0
filters
0
video tracks
0
keyframes
0
frames sampled
what you are building

Two filters, and the second one is nearly on its defaults

The title promises two filters and it means it. Nothing is imported, no footage is involved, and there is no glow, blur or blend mode anywhere. The shine is one text layer showing through a moving hole in another.

01

The same text, twice

Text: Simple on a transparent clip, then copied onto a second track. The two copies sit at identical Position and Size values, so they line up exactly. Stacking is what makes the effect possible.

02

One is grey, one is white

The lower copy on V1 is recoloured to #686868. The upper copy on V2 keeps the default white. Nothing looks different yet, because the white one is covering the grey one completely.

03

Mask: Simple Shape cuts a slot

Added to the upper clip on its defaults — Overwrite, Rectangle, 20.00 % softness. Everything outside a small rectangle is cut away, so the grey below shows through around it and the white survives only inside it.

04

One parameter is animated

Only Horizontal carries keyframes: 8.23 % at the head of the clip, 84.42 % at the tail. Vertical, Width and Height never move. Two keyframes on one slider is the entire animation.

frame by frame

The whole tutorial, eleven stops

This video carries no chapter markers. The stops below were derived from the screencaps themselves and are named by this page, not by the video. Frames were sampled once every 10 seconds, which over 1:56 gives only twelve of them — thin coverage for a build this quick. Where a step falls between two frames the card says so rather than pretending a frame shows it. Click any screencap or timestamp to play from that exact second, right here in the card.

0:00
FRAME 01 · 0:00

The text dialog is the whole source

Nothing is imported. Open OtherText opens a dialog with one empty box, a Background color... button already reading transparent, and a line of small print: text attributes are available in the Filters panel after clicking OK. That is the point — the dialog only takes the words, and every setting on this page is set afterwards.

The timeline behind it already carries two empty video tracks, V1 and V2. Both are needed before the end.

0:10
FRAME 02 · 0:10

Everything the text filter gives you

Clicking OK creates a clip named transparent carrying a single Text: Simple filter, and the panel underneath is where the look is decided. The player shows the text box as a draggable rectangle you can size directly.

text Text goes herefont Verdana Bold 60use font size onoutline thickness 3padding 0position 0, 447size 1920 x 270horizontal fit Centervertical fit Top
0:20
FRAME 03 · 0:20

One clip, dropped on the lower track

The text is dragged out of the preview and onto V1, the lower of the two tracks. The drag tooltip reads +00:01:01 = 00:00:02:21, so the clip lands about two and a half seconds long. The source itself opened at 04:00:00:01 — a text clip has no natural length, so you trim it to whatever the shine should take.

0:30
FRAME 04 · 0:30

A copy goes on the track above

The clip is copied and pasted onto V2. There are now two identical pieces of text stacked exactly on top of each other, which is why nothing looks different in the player yet. Position now reads 0, 405 rather than the 0, 447 of ten seconds earlier; the block was nudged up while it was being placed, and that adjustment is not itself in any sampled frame.

tracks V1 and V2project length 00:00:04:12position 0, 405
0:40
FRAME 05 · 0:40

The lower copy is greyed

With V1 as the current track, the Font swatch on its Text: Simple filter opens the colour dialog. The value chosen is #686868 — a flat mid grey, R 104, G 104, B 104, with alpha left at 255. This is the only colour decision in the entire build, and it is what the shine will be seen against.

html #686868rgb 104, 104, 104hsv 0, 0, 104alpha 255
0:50
FRAME 06 · 0:50

Grey underneath, white on top

The two layers now differ: V1 holds grey text, V2 still holds the original white. Because they sit in the same place at the same size, the picture reads as one piece of grey text — V2 is covering V1 completely. Making the white one visible only in a narrow strip is the entire remaining problem, and the + button in the Filters panel is where it gets solved.

1:00
FRAME 07 · 1:00

The second filter, on its defaults

Mask: Simple Shape is added to the V2 clip, underneath Text: Simple in the filter list. It arrives on its defaults and those defaults are already almost the effect: a rectangle in the middle of the frame, everything outside it cut away, so the grey of V1 shows through around it. In the player the word goes is bright white and the rest of the line has gone grey.

operation Overwriteshape Rectanglehorizontal 50.00 %vertical 50.00 %width 10.00 %height 10.00 %rotation 0.0 degsoftness 20.00 %
1:10
FRAME 08 · 1:10

Narrow the band, move it left

Two sliders do all the shaping. Width drops from 10.00 % to 4.76 %, which makes the revealed band about half as wide — roughly one letter across at this text size. Horizontal drops to 13.42 %, which walks the band over to the left-hand edge of the words, where the sweep will start.

Softness stays at its default 20.00 %. That is what keeps the edges of the band from looking like a cut-out rectangle; it is why the result reads as a highlight rather than a window.

horizontal 13.42 %width 4.76 %softness 20.00 %, untouched
1:20
FRAME 09 · 1:20

The first keyframe, at the head of the clip

The playhead goes to the very start of the clip and the stopwatch beside Horizontal is clicked. That one click turns Horizontal into an animated parameter and writes a keyframe where the playhead is standing. The panel switches from Timeline to Keyframes, which now shows a Mask: Simple Shape clip with a Horizontal track beneath it.

The starting value in this frame is 8.23 %, a little further left than the 13.42 % of ten seconds earlier. Only Horizontal carries a stopwatch that is lit; Vertical, Width and Height stay static.

keyframed parameter Horizontalvalue at clip start 8.23 %other parameters not keyframed
1:30
FRAME 10 · 1:30

The second keyframe, past the end of the text

The playhead moves to the tail of the clip and Horizontal is dragged up to 84.42 %. Typing or dragging a new value while the stopwatch is already on writes the second keyframe automatically; there is no separate command.

84.42 % puts the band beyond the right-hand end of the words rather than on them, which is deliberate — the shine has to leave the text, not stop inside it. That is why the player looks like plain grey text in this frame: at the end of the clip the white band is off the letters entirely.

value at clip end 84.42 %keyframes 2sweep 8.23 %84.42 %
1:50
FRAME 12 · 1:50

Done, in under two minutes

The last twenty seconds are scrubbing: the playhead is dragged back and forth across the clip and the value in the Horizontal field follows it — 80.43 % at 1:40, 84.42 % at 1:50. Watching the number move with the playhead is the confirmation that the animation took.

Nothing is exported. The video ends on the working project, which is fair for a two-minute tip — the effect either sweeps or it does not, and you can see which in the player.

build it yourself

Six steps, about two minutes

Every number below was read off the pixels, not out of the subtitle track. The subtitles give the order of the steps and they agree with the frames throughout; they never state a value, so none is taken from them.

STEP 01

Make the text

Open OtherText. Type your line into the box and leave Background color... on transparent. Click OK — the clip appears in the player with a Text: Simple filter already on it, and that filter panel is where the rest of the look is set.

source transparent filter Text: Simple background colour transparent
The Shotcut Text: Simple filter panel with Font Verdana Bold 60, Outline thickness 3, Position 0 comma 447 and Size 1920 by 270
0:10 · the panel that appears after OKVerdana Bold 60, outline thickness 3, size 1920 x 270

Verdana Bold 60 is the font in this recording and Use font size is ticked, so the size travels with the font rather than being derived from the box. None of it is load-bearing: change the font and you still have the effect.

STEP 02

Drop it on V1 and size it

Drag the text out of the preview onto the lower video track. Trim the clip to however long the shine should take — in this recording it lands at 00:00:02:21, with the project reading 00:00:04:12. Position and size the text box the way you want it now, before there are two of them to keep in step.

track V1 clip length 00:00:02:21 position 0, 405 size 1920 x 270

The panel reads 0, 447 at 0:10 and 0, 405 by 0:30. The nudge happens between two sampled frames, so the exact moment is not on this page. Whichever value you use, both copies must end up on the same one.

STEP 03

Copy it onto V2

Copy the clip and paste it on the track above. The two copies must sit at the same start time and the same Position and Size, or the shine will not line up with the letters it is supposed to be crossing. The player will look unchanged, which is correct.

tracks V1 and V2 copies 2, identical
STEP 04

Grey the lower copy

Select the clip on V1, open its Text: Simple filter and click the Font colour swatch. Set #686868. Leave the copy on V2 white.

colour #686868 rgb 104, 104, 104 alpha 255 applied to V1
The Shotcut colour dialog with a grey swatch, Red Green and Blue all 104 and the HTML field reading hash 686868
0:40 · #686868R 104, G 104, B 104, alpha 255

The grey is the contrast, so it is the one aesthetic choice worth playing with. Push it darker and the shine reads as a hard glint; bring it closer to white and the sweep becomes a soft sheen.

STEP 05

Add Mask: Simple Shape to the upper copy

Select the clip on V2, press + in Filters and add Mask: Simple Shape. Leave Operation on Overwrite, Shape on Rectangle, Height on 10.00 % and Softness on 20.00 %. Then change exactly two things: pull Width down to about 4.76 % so the band is roughly one letter wide, and drag Horizontal over to the left of the words.

operation Overwrite shape Rectangle width 4.76 % height 10.00 % vertical 50.00 % rotation 0.0 deg softness 20.00 %
The Mask: Simple Shape panel on its defaults with Operation Overwrite, Shape Rectangle, Horizontal and Vertical 50 percent, Width and Height 10 percent and Softness 20 percent
1:00 · the filter as it arrives — already cutting a slot, and the word goes is the only white left

Softness is why this looks like a highlight instead of a rectangle sliding over the text. It is on its default here, so it is easy to miss — but set it to 0 % and the effect falls apart into a visible sliding box.

STEP 06

Keyframe Horizontal across the clip

Put the playhead at the very start of the clip and click the stopwatch beside Horizontal. That writes the first keyframe. Move the playhead to the end of the clip and drag Horizontal up past the right-hand end of the words — the second keyframe is written by the edit itself. In this recording the pair are 8.23 % and 84.42 %.

keyframed parameter Horizontal keyframe 1 8.23 %, head of the clip keyframe 2 84.42 %, tail of the clip keyframes 2
The Shotcut Keyframes panel showing a Mask: Simple Shape clip with a Horizontal parameter track carrying keyframes at both ends
1:20 · the Keyframes panel — one Horizontal track under Mask: Simple Shape, a marker at each end of the clip

Both values matter for the same reason: the band has to start and finish off the letters. Starting inside the words makes the shine appear from nowhere; stopping inside them leaves a bright patch parked on the text when the clip ends.

The keyframe interpolation menu is never opened in this video, so this page does not claim a value for it. Nothing is exported either — the tutorial ends on the working project.

settings reference

Every value that was actually on screen

Read directly off the frames. Where the video never showed a value, the row says so rather than filling in a plausible one.

Project and clips
SettingValueWhere it lives
Shotcut versionNever shownHelp → About Shotcut is not opened in this video, and the title bar carries no version
Source cliptransparentOpen OtherText
Clip length00:00:02:21Drag tooltip at 0:20
Project length00:00:04:12Player readout
TracksV1, V2Timeline — grey copy on V1, white copy plus the mask on V2
Project video modeNever shownThe Video Mode dialog is not opened
Filter 1Text: SimpleOn both clips
Filter 2Mask: Simple ShapeOn the V2 clip only, below Text: Simple in the list
ExportNot shownThe video ends on the working project
Text: Simple
SettingValueWhere it lives
TextText goes hereText: Simple panel
FontVerdana Bold 60Text: Simple panel → Font button
Use font sizeonText: Simple panel
Text colour, V2 copywhiteFont swatch, left on its default
Text colour, V1 copy#686868Font swatch → colour dialog
Text colour, RGB104, 104, 104Colour dialog
Alpha channel255Colour dialog
Outline colourblackText: Simple panel, default
Outline thickness3Text: Simple panel, default
Background padding0Text: Simple panel, default
Position, at 0:100, 447Text: Simple panel
Position, from 0:30 on0, 405Text: Simple panel
Size1920 x 270Text: Simple panel
Horizontal fitCenterText: Simple panel
Vertical fitTopText: Simple panel
Mask: Simple Shape — the shine
SettingValueWhere it lives
OperationOverwriteDefault, not changed
ShapeRectangleDefault, not changed
Horizontal, on adding50.00 %Default
Horizontal, keyframe 18.23 %Head of the clip
Horizontal, keyframe 284.42 %Tail of the clip
Vertical50.00 %Default, not changed
Width, on adding10.00 %Default
Width, as built4.76 %Mask: Simple Shape panel
Height10.00 %Default, not changed
Rotation0.0 degDefault, not changed
Softness20.00 %Default, not changed — and load-bearing
Keyframed parameterHorizontalKeyframes panel
Keyframe count2Keyframes panel
Keyframe interpolationNever shownThe keyframe context menu is not opened

Four rows are highlighted because they are the effect: the two text colours that create the contrast, and the two Horizontal keyframes that move the band through it. Softness is marked too, for the opposite reason — it is never touched, so it is easy to overlook, and it is the difference between a shine and a sliding rectangle.

on-screen text

Nobody speaks in this one, and the video says so

There is no narration. The audio is a continuous music bed for the full 1:56, and the teaching is done entirely by the subtitle track — which is what the “(With Subtitles)” in the title refers to. The first caption states it outright. All twenty are reproduced below, verbatim and in order; that is genuinely every word in the video.

+ every caption, in full 20 captions · 1:56
0:00

This video has no audio. It’s just an experiment I decided to share

0:02

Go to OPEN OTHER > TEXT

0:04

Type your text in the box

0:10

Click OK

0:11

Position your text box

0:17

Drag the text from the preview screen into the first track of the timeline

0:20

Size it the way you want

0:26

Copy or CTRL+C

0:29

Paste the copy on the second track

0:34

Change the color of the bottom text to a lighter version, like a gray color

0:45

Now, the top text is white and the bottom text is gray

0:51

Go to FILTER > Mask Simple Shape

1:02

Set the width of the shine

1:07

Position the shine with the Horizontal measurement to the left

1:12

Move the cursor to the very beginning of the timeline

1:19

Add a keyframe by clicking the timer icon

1:21

Move the cursor to the end of the clip

1:24

Then move the horizontal measurement so the shine goes beyond the end of the text

1:29

That’s it!

1:37

Your text now has shine!

These are a caption track Ben wrote and uploaded, not text burned into the picture — nothing is printed over the interface in any of the twelve sampled frames, and the captions appear only when subtitles are switched on in the player. A machine transcription of the audio returns eight segments across the whole 1:56: four of them the word “Music” and four the phrase “Thank you for watching this video”, which is the filler a speech model emits over music with no voice in it. The audio measures as one unbroken bed — -12.0 dB mean, -0.0 dB peak, and not one silent stretch anywhere in the file, let alone a speech-shaped gap. There is nothing to transcribe, so the captions above stand in place of a transcript. They give the order of the steps and they agree with the frames throughout, but they never state a number, so every value on this page came from the pixels.