Read the complete FFmpeg guide
FFmpeg Subtitle Generator Logo
Online Visualizer & Config Generator

FFmpeg Subtitle Style Generator

Interactively design, preview, and generate ASS style parameters for FFmpeg subtitle hardcoding across portrait (9:16) and landscape (16:9) aspect ratios.

Portrait (9:16)

Portrait video preview canvas

Landscape (16:9)

Landscape video preview canvas

        

What is the FFmpeg Subtitle Style Generator?

When burning (hardcoding) subtitles into video streams using FFmpeg's subtitles filter, formatting plain SubRip (.srt) files requires constructing complex force_style parameters based on the Advanced SubStation Alpha (ASS) specifications.

Writing these syntax parameters manually in a terminal often leads to time-consuming trial and error. You have to re-encode test clips repeatedly just to verify if font scaling, line height, background opacity, or vertical positioning looks correct across different video aspect ratios.

This tool provides a real-time visual simulator for both vertical videos (Shorts, Reels, TikTok) and traditional horizontal formats. It translates standard Web styling inputs into technically precise ASS color hexes and filter syntax ready to paste straight into your terminal or automated media encoding pipeline.

How FFmpeg Subtitle Styling Works

FFmpeg renders text subtitles onto video frames using the libavfilter library, specifically utilizing libass under the hood for subtitle rasterization.

When you pass an .srt file to FFmpeg via -vf "subtitles=file.srt", plain text lacks embedded styling metadata. The force_style parameter acts as an inline override array that dynamically builds a temporary ASS style header during the filtering graph evaluation.

-vf "subtitles='input.srt':force_style='FontName=Arial,FontSize=22,PrimaryColour=&H00FFFFFF&,BorderStyle=3'"

It is important to note that force_style does not modify your original subtitle file on disk. Instead, it instructs the FFmpeg filter graph to override specific rendering attributes in memory during the frame drawing phase.

Understanding the Generated Command

The generated command constructed by this tool follows standard FFmpeg CLI conventions for filter processing:

ffmpeg -i input.mp4 -vf "subtitles='YOUR_SUBS_FILE.srt':force_style='FontName=Arial,FontSize=22,PrimaryColour=&H00FFFFFF&,OutlineColour=&H00000000&,BackColour=&H19000000&,Bold=1,Italic=0,BorderStyle=3,Outline=3,Shadow=2,MarginV=80,Alignment=2'" -c:a copy output.mp4
-i input.mp4

Specifies the source media file containing the video track.

-vf "subtitles=..."

Invokes the video filter pipeline and attaches the designated SRT subtitle file.

force_style='...'

Applies comma-separated ASS formatting directives to override subtitle typography and layout.

-c:a copy

Directly copies the audio stream without re-encoding, preserving audio quality and saving processing time.

Subtitle Style Parameters Reference

The configurator controls the following primary ASS subtitle attributes:

Font & Size

FontName sets the typeface family installed on the encoding host. FontSize specifies the point size relative to the frame height.

PrimaryColour

Represents the main text color formatted in ASS hexadecimal order: &HAARRGGBB& (Alpha, Blue, Green, Red).

BackColour & Opacity

Defines background box or shadow color. ASS alpha ranges from 00 (fully opaque) to FF (fully transparent).

BorderStyle

Setting BorderStyle=3 creates an opaque bounding background box behind text, whereas 1 creates an outline border.

Alignment

Uses standard numeric keypad mapping: 2 for Bottom-Center, 8 for Top-Center, 5 for Middle-Center, etc.

MarginV

Defines vertical padding in pixels from the top or bottom edge depending on the selected alignment orientation.

Common Use Cases

Frequently Asked Questions

What subtitle formats support advanced styling in FFmpeg?

Advanced SubStation Alpha (ASS/SSA) natively supports complete typography and positional styling. When using plain SRT files, FFmpeg's subtitles filter converts SRT cues into ASS structures internally, allowing force_style overrides to function.

Does this online tool render or upload my video?

No. This tool operates entirely client-side in your web browser. It provides a CSS-based visual simulation of subtitle styling and generates the corresponding CLI command text. No media files are ever uploaded or processed on our servers.

Why does the color code in the generated command look different from CSS hex?

Web colors use #RRGGBB format. ASS styling notation uses &HAABBGGRR& where alpha (transparency) comes first, followed by Blue, Green, and Red channel bytes in reverse order.

Why does ASS opacity work opposite to CSS opacity?

In standard CSS, an opacity of 1.0 represents 100% opacity, and 0.0 is completely transparent. In ASS notation, 00 alpha represents complete opacity, while FF (255) represents 100% transparency.

What happens if the requested font is missing on my server?

If the system running FFmpeg does not have the specified FontName installed, fontconfig / libass will automatically fall back to a default system font (such as Sans or DejaVu Sans).

Want to understand what happens under the hood?

Learn more about demuxing, libavfilter graph architecture, and codec handling in our technical guide.

Read the FFmpeg Developer Guide →