Very Good FFmpeg
How it worksPricingDocsBlog

Published Sep 12, 2026

VGFF Now Supports Over 3000 Fonts, Including All of Google Fonts

Every worker now has all of Google Fonts plus the core Microsoft-metric lookalikes installed natively. Use the font name in drawtext instead of downloading a font file first.

Every Very Good FFmpeg worker now has over 3000 fonts installed. That is the full Google Fonts catalogue plus the Liberation 2 family, which covers the core Microsoft fonts. You can name any of them directly in a drawtext filter.

Previously, text rendering meant treating the font as an input file: find a .ttf, host it somewhere, add it to input_files, and point fontfile= at inputs/whatever.ttf. That still works, and nothing about it has been deprecated. It is just no longer the only option.

What changed

font='Font Name' now resolves on the worker, with no font file to download.

Six fonts, no input files
{
  "input_files": {},
  "output_files": ["fonts.png"],
  "ffmpeg_commands": [
    "-f lavfi -i color=c=black:s=1280x720 -frames:v 1 -vf \"drawtext=font='Roboto':text='Roboto — the quick brown fox':x=50:y=60:fontsize=52:fontcolor=white,drawtext=font='Playfair Display':text='Playfair Display — 0123456789':x=50:y=160:fontsize=52:fontcolor=white,drawtext=font='Lobster':text='Lobster — handwriting style':x=50:y=260:fontsize=52:fontcolor=white,drawtext=font='Bebas Neue':text='BEBAS NEUE — CONDENSED CAPS':x=50:y=360:fontsize=52:fontcolor=white,drawtext=font='Noto Sans JP':text='Noto Sans JP — 日本語テキスト':x=50:y=460:fontsize=52:fontcolor=white,drawtext=font='Arial':text='Arial — metric alias to Arimo':x=50:y=560:fontsize=52:fontcolor=white\" -update 1 outputs/fonts.png"
  ]
}

Six different typefaces, including Japanese glyphs and a Microsoft metric alias, in one job with nothing to upload.

Six typefaces rendered by drawtext in a single job

Which fonts are available

Two sources are baked into the worker image:

  • Google Fonts, via the official google/fonts repository. This includes thousands of free-to-use fonts including 274 Noto families, so most writing systems are covered out of the box.
  • Liberation 2, via the fonts-liberation2 package. These are metric-compatible replacements for the core Microsoft fonts: Liberation Sans for Arial, Liberation Serif for Times New Roman, and Liberation Mono for Courier New. Same widths, same line breaks, no licensing problem.

The complete list of supported fonts is published at supported-fonts.txt.

The Microsoft names themselves are not in that list, because they resolve through fontconfig's metric aliasing rather than being installed fonts. Asking for Arial gets you Liberation Sans, and it works whether or not you knew that.

Font URLs still work

There is no reason to change a working job. If you are already shipping a font as an input file, keep doing it:

Font as an input file
{
  "input_files": {
    "my-input-file.mp4": "https://storage.verygoodffmpeg.com/sample.mp4",
    "font": "https://github.com/googlefonts/noto-fonts/raw/master/hinted/ttf/NotoSerif/NotoSerif-Regular.ttf"
  },
  "output_files": ["output-with-text.mp4"],
  "ffmpeg_commands": [
    "-i inputs/my-input-file.mp4 -vf \"drawtext=fontfile=inputs/font:text='Your Text Here':fontcolor=white:fontsize=48:x=(w-text_w)/2:y=h-th-40\" -c:a copy outputs/output-with-text.mp4"
  ]
}

This is still the right approach for a licensed brand font, a custom foundry font, or anything else that is not in the catalogue. fontfile= takes a path in the workspace exactly as before, and the input key is just a name, so font with no extension is fine. See Running Commands for how inputs and outputs are laid out.

What existing users need to do

Nothing.

  • Existing jobs that download fonts with fontfile= keep working unchanged.
  • Font bytes you download as an input file are still billed as processed input, the same as any other input. Fonts installed on the worker are not billed, because nothing is transferred.
  • There is no migration, because both styles are supported.

The one thing worth checking: if a job previously fell back to a default font because the requested family was missing, it may now find the real font and render differently. That is the intended behaviour, but it is a visual change.

Get started

Grab a free API key (2 GB free, no credit card), pick a name out of supported-fonts.txt, and drop it straight into a drawtext filter. The example above needs no input file, so it is a two-minute copy-paste.

Related reading

  • Sep 6, 2026

    GPU Jobs Now Run on Nvidia L4 With FFmpeg 8

    Every job routed with machine: nvidia now runs on an Nvidia L4 with a single driver image. This fixes a class of intermittent GPU job failures, and brings FFmpeg 8 to GPU workers.

  • Aug 30, 2026

    A New Recommended Way to Reference Files in FFmpeg Commands

    We are changing the style of file reference we recommend, so that the platform is more intuitive for new users. The existing style will continue to be supported indefinitely.

  • Aug 25, 2026

    Very Good FFmpeg n8n Community Node Is Live

    Run raw FFmpeg jobs from n8n workflows with the official Very Good FFmpeg community node, verified by n8n and available on n8n Cloud and self-hosted n8n.

  • Sep 6, 2026

    Best Hosted FFmpeg REST API 2026: Top Providers Compared

    Side-by-side comparison of Very Good FFmpeg, Rendi, FFmpeg API Cloud, FetchMedia, RenderIO, ffmpegapi.net, Coconut, and VideoTranscode on pricing, raw FFmpeg control, GPU support, and runtime limits.

Very Good FFmpegChecking status...
Product
  • How it works
  • Pricing
  • Comparison
  • FAQ
  • Blog
Developers
  • Documentation
  • API Reference
  • MCP Server
  • TypeScript SDK
  • Python SDK
  • N8n Node
Company
  • Contact
  • Sign in
  • Sign up
  • Terms
  • Privacy
As Seen On
  • G2
  • Product Hunt
  • GitHub
  • PyPI
  • NPM
  • Smithery
  • MCP.so
  • AlternativeTo
  • Make
  • n8n
© 2026 Very Good FFmpeg