FH Shorts ships word level editing
Since its July launch, FH Shorts has rebuilt captions, editing and hook selection around one idea: show the creator exactly what they are getting before they spend a render on it.
FH Shorts launched in July alongside FOTOhub's $8.6M raise, serving a base
that stood at 750,000 users across more than 40 countries at the time, with
a straightforward promise: point it at long form video and get back short
form clips ready for TikTok, Reels and YouTube Shorts.
The pipeline worked. What became obvious within weeks of real usage was
that the pipeline was not the hard part. Creators were not frustrated by
the transcription or the reframing or the render. They were frustrated by
uncertainty. They would pick a clip, choose a caption style, hit render,
wait, and then discover that the captions sat over the speaker's face, or
that the opening three seconds were a throat clear and a conjunction, or
that the clip they thought ran twenty two seconds actually ran twenty six.
Every one of those discoveries cost a render to make.
So three of the core stages got rebuilt: captions, editing, and the
opening hook. All three changes serve the same principle. A creator should
be able to see exactly what they are going to get before they spend
anything finding out.
Recut: strike a word from the transcript and the video loses it
The largest change is a new way of editing that works the way editors
already think about spoken content, which is as text.
FH Shorts now presents the clip's full transcript as an editable surface.
Click a filler word, an "um", a trailing "so", a stray "like", and it
disappears from the video itself, not merely from the caption line
underneath. The clip gets shorter. The audio closes over the gap. This is
word level editing driven by the transcript, and for talking head content
it is dramatically faster than scrubbing a timeline looking for a
waveform dip.
The engineering underneath it is what makes it trustworthy. The planner
that computes a preview and the planner that computes the final render are
the same code, deliberately written as a pure function with no video
processing and no database access inside it. That is why the duration
displayed before rendering is the duration that comes out, rather than an
approximation that drifts. There is no second implementation to disagree
with the first.
The cut rules are where most of the quality lives, because naive word
removal sounds terrible. Cut boundaries never land inside a word that is
being kept, which is the difference between a clean edit and a clipped
consonant. Removals widen outward into the surrounding silence rather than
slicing at the exact word boundary, because human speech does not start
and stop on frame edges. And leftover islands shorter than 150
milliseconds get absorbed instead of preserved, since a fragment that
short is an artifact rather than a syllable anyone intended to keep.
Recut runs as two passes at different points in the pipeline. It applies
once after diarization and translation during the caption stage, and again
during the render stage, where it also remaps B roll placement and the
audio track so that secondary footage and sound stay aligned to speech
that has moved.
In the editor, the interaction is direct. Words appear on the timeline.
Click to strike one out. Double click to hear the audio around it before
committing, which matters when deciding whether a pause was clutter or
emphasis. Likely filler words arrive pre underlined, so a creator opening a
new clip has a suggested starting point rather than a wall of undifferentiated
text. And the running duration updates as words come out, which means the
decision about whether a clip fits a placement gets made during editing
rather than after a render.
Captions rebuilt as a document, with fonts that are actually licensed
Captions used to be static subtitle strings burned onto the frame. That
model cannot express much, and it showed.
They are now a full caption document that owns word timing, emphasis and
layout as structured data. Because the document knows which word is being
spoken when, and which words carry emphasis, it can animate per word
rather than per line. And because layout is part of the document rather
than a fixed screen position, caption lines get placed against the subject
the reframe engine already located in the frame. Text stops covering
faces mid scene, which was the single most common complaint about the
original implementation.
Ten presets ship out of the box, each modeled on a look creators already
recognize: Hormozi, MrBeast, Lex Fridman, Ali Abdaal, TikTok Viral,
Podcast, Karaoke, News, Cinematic and Gaming. These are not ten color
swatches on one template. They differ in weight, timing, emphasis
behavior, positioning and how aggressively they animate, because a
punch per word style built for retention and a restrained lower third
built for a long form interview are solving different problems.
Behind the presets are 56 licensed font families. That number is smaller
than it could have been, and the reason is worth stating plainly: Impact,
which is the font most associated with this style of caption, is not
included, because it cannot be licensed for this use. Shipping it anyway
would have been easy and would have quietly handed every customer a
licensing problem inside commercial content. The catalogue is what can
actually be licensed, and the presets are designed around that constraint
rather than pretending it does not exist.
Translation carries the caption document into another language while
preserving the original word timing, rather than regenerating subtitles
from scratch and losing the emphasis and rhythm the original edit
established. For anyone publishing the same clip across language markets,
that is the difference between a localized version and a version that
merely has the right words in it.
The emoji layer, animated properly
Running alongside captions is an animated emoji layer, and it got the same
treatment as the fonts: real assets instead of whatever the system
happened to have installed.
The pool is 540 individual emoji across five visual sets, with Fluent 3D as
the default. Each one animates as a 24 frame sequence rather than
appearing and sitting still. On entry, over 240 milliseconds, it overshoots
to 1.18 times its final size, wobbles through eleven degrees of decaying
rotation, and lands with a burst ring and seven sparks. It holds for 1.15
seconds with a subtle 3.5 percent bob so it does not read as a frozen
sticker, then exits over 190 milliseconds.
Those numbers are in the article because they are also in the browser. The
editor preview runs the same motion constants as the renderer, so the
animation a creator approves is the animation that ships.
There is also a quality accounting change that matters more than it
sounds. When the pipeline cannot serve an emoji from the primary pool and
has to fall back, to a CDN copy or ultimately to a 72 pixel bitmap, that
degradation is counted as a health metric rather than silently shipping a
softer looking frame. Silent quality loss is the kind of defect that
survives for months because nobody can point at it. Counted quality loss
gets fixed.
A hook engine that scores openings before spending a render on them
The first three seconds decide whether a short gets watched. FH Shorts now
treats the opening as its own engineering problem.
The system generates ten hook variants drawn from documented opening
archetypes, structures like a curiosity gap or a pattern break, and then
ranks them deterministically, without a language model call in the scoring
path at all. Four signals count in favor: how quickly the line reads at a
glance, whether it opens a loop the viewer wants closed, how concrete the
wording is, and whether it addresses the viewer directly in second person.
Three count against, and they are the openers that reliably kill retention:
leading fillers, opening conjunctions, and back references to context the
viewer does not have because they just arrived.
Scoring without a model call is a deliberate choice. It makes ranking
instant, free, and identical every time, which means a creator comparing
two hooks is comparing the hooks rather than the weather inside a model.
The hook is rewritten as an overlay while the original audio stays
untouched, so a stronger opening does not require refilming or redubbing
anything. The panel also sets up an A/B test automatically, with diverse
archetype arms and the original line kept as the control, and it always
carries the metric the test should be judged on rather than leaving that
to be reconstructed later.
The fallback behavior is worth noting because it reflects a general
principle in how this was built. If FOTOhub's language layer is
unreachable, the hook engine does not invent lines. It extracts real
sentences from the clip's own transcript instead. A degraded hook engine
returns something the speaker actually said. It does not put words in
their mouth.
Thumbnails were addressed in the same pass: covers are generated as real
thumbnails chosen from the clip rather than defaulting to frame zero,
which on a talking head clip is very often a half blink.
Score breakdown: why a clip scored the way it did
Clip selection has always been the part of FH Shorts that felt like a
black box. The pipeline analyzes a long video, proposes candidates, and
scores them. Previously that produced a number.
Now every rendered clip carries a full score breakdown: measured hook
strength, retention signals derived from the edit itself, a suggested
title, and suggested hashtags generated from the actual content. The
breakdown is measurement recorded at the time of analysis, which means it
can explain a score after the fact instead of asserting one.
That breakdown flows into the webhook payload FH Shorts sends to partners,
so teams piping clips into their own publishing tooling receive the
reasoning alongside the asset. If an automated workflow is deciding which
of nine clips to schedule, it now has something to decide with.
The editor's progress display was rebuilt to match. Eight visible stages,
each with its own live status: import, transcribe, detect, AI clip select,
reframe, captions, audio, render. When a job is slow, a creator can see
which stage owns the delay.
What the full flow feels like now
The shape of the pipeline has not changed. Bring in a long form video by
URL or upload. FH Shorts ingests it, transcribes it, separates speakers,
detects scenes, and proposes clip candidates scored for short form
potential. The creator picks the ones worth working on.
What changed is how much shaping happens before any render is paid for.
Choose a reframe mode, whether that is automatic face tracking, a center
crop, a dynamic pan or a Ken Burns move. Choose one of the ten caption
presets and see it animate in the browser. Look at the hook score, and if
the opening is weak, take a better ranked variant. Open the transcript and
strike the words that were never worth keeping, watching the duration fall
as you go. Toggle emoji, enhance the audio, add music. Then render, once,
knowing what is coming, and export at 9:16 for the main placement or 1:1
and 16:9 for everywhere else, with an MP4 and an SRT on the way out and
the finished clip saved to the FOTOhub library.
What this changes for different kinds of creators
A podcaster with a weekly two hour episode was already the core use case,
and the difference now is throughput per episode. Instead of accepting the
three clips the pipeline liked most and publishing them as rendered, the
same episode yields clips that have been tightened word by word, opened
with a scored hook, and captioned in a style that suits the show, without
the four render attempts that used to be the cost of getting there.
An agency running short form for multiple clients gets consistency and
auditability. Caption presets keep a client's look stable across everyone
on the team, the score breakdown gives a defensible answer when a client
asks why one clip was chosen over another, and webhooks push finished
assets into whatever scheduling stack the agency already runs.
An educator or a B2B team publishing talking head explainers benefits most
from Recut and translation. Explainer content is dense with hedges and
restarts that are natural in speech and fatal in a thirty second clip, and
removing them by clicking text is a fundamentally different task from
finding them in a waveform. Then the caption document carries the tightened
edit into another language with its timing intact.
A creator publishing across markets stops treating localization as a
separate production. One edit, one caption document, several languages, the
same emphasis and rhythm in each.
What it costs
FH Shorts bills per stage, and each stage is a flat charge per call rather
than a rate against the length of the source video. A two hour episode
costs the same to transcribe as a ten minute one, which is the pricing
detail that matters most if the material sitting in your archive is long:
- Ingest: about $0.11
- Transcribe: about $0.11
- Scene detection: about $0.16
- Clip generation: about $0.27
- Captions: about $0.11
- Reframe: about $0.16
- Render: about $0.27
A full pass from import through to a rendered clip, calling every stage
individually, totals roughly $1.18. Running the same pipeline through the
single agent call instead prices at about $0.80, because it is billed as one
operation rather than seven. Prices are shown in USD.
None of the new editing tools add a fee at render time. Recut, the caption
presets, the emoji layer and hook scoring change what gets rendered, not
what rendering costs. What they change economically is the number of
attempts, because the previous workflow's real expense was rendering three
times to get one clip right.
Available now
Everything described here is already live in the FH Shorts editor at
/fh/shorts. There is no new plan tier, nothing to enable and nothing to
migrate. Open a project that is already in progress and the transcript
editor, the caption presets, the hook panel and the score breakdown are
simply there.
If you have a long form library sitting unused because clipping it by hand
was never going to happen, this is the version of FH Shorts worth starting
with.