Logo

MonoCalc

/

YouTube Description Template Generator

Social Media
Nothing here is saved
Templates and values are not saved — use Download or Copy share link before you leave. There is no account and no server behind this page.
Picking a skeleton replaces what is in the editor. Editing anything switches this to Custom.
Empty on purpose. The figure could not be read from YouTube Help when this tool was built, so type the number the page in front of you gives.
Also empty on purpose: where YouTube shows “…more” could not be verified and it differs between the website and the mobile app. Open a video, see where the description is cut, and type that number.

Sections

Text

19 characters

Chapters

1 chapter read by the chapter module — they survive a parse, render and re-parse unchanged.

Only 1 chapter — the configured minimum is 3.

Conditions as checked on 2026-09-04. YouTube Help

20 characters

Links
Waiting

Line still holds an unfilled placeholder.

33 characters

Text

36 characters

Link handling

Values

Under the video

[[ video_summary ]] Chapters 00:00 Intro [[ link_label ]] - [[ link_url ]] [[ channel_name ]] [[ channel_url ]]

114 characters

No limit set — limit not set

Summary

19

Chapters

20

Links

33

Channel

36

Blank lines between sections: 6

Copy and download are held back

5 placeholders still need values:

The share link keeps everything after the # — browsers never send that to a server. Long URLs still get truncated by chat apps, so the link is switched off past 1800 characters of payload; this one is 884.

About This Tool

YouTube Description Template Generator – Assemble the Same Description Twice

Most channels write the same description over and over. The summary changes, the chapter list changes, one or two links change, and everything else — the channel name, the subscribe address, the line that says which episode this is — is retyped from memory every time. A YouTube description template generator exists to turn that repetition into structure: write the shape once, fill in the handful of values that actually differ, and let the assembly happen on its own.

Placeholders, and the rule about them

Anywhere you type {{name}} in a section body, the tool creates a labelled input for it. Names use letters, digits and underscores, they are case-sensitive, and spacing inside the braces is ignored, so {{ guest }} and {{guest}} are the same variable. Write a backslash in front — \{{guest}} — and the braces are printed literally instead, which is how you put the syntax itself in a description.

The rule that shapes the whole interface is that a raw {{token}} must never reach your clipboard. A placeholder with no value is listed by name, drawn in the preview as a highlighted [[ name ]] marker, and the copy and download buttons stay disabled until it is filled. If you want the blanks left empty on purpose there is a switch for that, and the warnings stay on screen after you flip it.

Sections, including three that know something

A description here is an ordered list of sections you can reorder, switch off and add to. Their titles are labels for the editor only — nothing is printed that you did not type into a body. Three kinds carry extra behaviour. A chapters section hands its lines to the same module the chapter timestamp tool uses, so the timestamps are parsed, re-serialised and checked by one implementation rather than two, and whatever that module reports is shown to you word for word. A links section validates every address, refusing anything that is not http or https, and can append campaign parameters through the shared UTM builder. A disclosure section ships deliberately empty, with links to YouTube’s and the FTC’s own pages, because sponsorship and affiliate obligations vary by platform and by jurisdiction and are not something a calculator should draft for you.

The fold, drawn rather than described

The payoff is the mockup beside the editor: your description as a panel, with a dashed rule across it marking where the collapsed part begins and everything below it dimmed. Chapter lines and valid link lines appear in the link colour, the way YouTube renders them. Under the mockup, a stacked bar shows each section’s share of the total character count, so a block that alone consumes the budget is obvious at a glance rather than after arithmetic.

Two numbers you type yourself
The description character limit and the fold position are both empty until you enter them. Neither figure could be read from YouTube’s own documentation in this build, and the fold in particular differs between the website and the mobile app, so the tool shows no number it has not checked. Open a video page, look at where “…more” appears, and type what you see.

Counting that matches what a reader sees

Characters are counted as grapheme clusters with a pinned locale, so a flag, a family emoji or an accented letter counts as one character and the same text counts identically on every machine. Counts appear per section and for the whole description, because the per-section figure is the one that tells you which block to cut.

Nothing is stored, so take it with you

This is a static page with no account and no server behind it. Your template and values live in the tab and disappear when you close it. Three exits are provided: Download .json writes the template and the variables to a file that the upload control reads back later; Copy share link packs the same data into the fragment after the #, which browsers never transmit, and is disabled when the payload grows long enough that a chat app might truncate it; and Download .txt saves the finished description. A CSV of the section breakdown is there too, with every cell neutralised so a section title beginning with = is read by a spreadsheet as text and not as a formula.

A shared link is data, not a promise
A link somebody sends you carries a template in its fragment. It is checked field by field before anything is loaded, and a payload that does not match the expected shape is refused with a notice rather than half-applied — but treat the content of a stranger’s template the way you would treat any text they sent you.

What it will not tell you

The tool counts, assembles and flags. It has no view on how a description should be written, how long it should run or what belongs above the fold, and it makes no claim about what any of that does for a video. Those are questions about YouTube’s product and your audience; this page only makes sure that what you paste is the thing you meant to write.

Frequently Asked Questions

Is the YouTube Description Template Generator free?

Yes, YouTube Description Template Generator is totally free :)

Can I use the YouTube Description Template Generator offline?

Yes, you can install the webapp as PWA.

Is it safe to use YouTube Description Template Generator?

Yes, any data related to YouTube Description Template Generator only stored in your browser (if storage required). You can simply clear browser cache to clear all the stored data. We do not store any data on server.

How does this description template generator work?

You pick or write a template made of ordered sections, and anywhere you type {{name}} the tool creates a labelled input for it. Fill those inputs and the sections are assembled into one description you can copy or download. Everything happens in your browser: there is no account, no YouTube connection and no upload of anything you type.

Are my templates saved?

No. Templates and values live in the page for as long as the tab is open and are gone when you leave, because there is no server here to store them on. Use Download .json to keep a copy and Upload .json to bring it back, or Copy share link, which packs the same data into the part of the URL after the # that browsers never send to a server.

What happens if I leave a placeholder empty?

It is listed as unresolved, drawn in the preview as a highlighted [[ name ]] marker, and the Copy and Download buttons stay disabled until you either fill it in or switch on "Leave blanks empty". A raw {{token}} is never written into the output silently, which is the one failure this tool is built to prevent.

How are the characters counted?

As grapheme clusters through the shared counting module, with the segmenter locale pinned, so an emoji or an accented letter counts as one character rather than several and the same text counts the same on every machine. Counts are shown per section as well as for the whole description, since a per-section count is what tells you which block to cut.

Why is the character limit field empty instead of pre-filled?

Because the limit is a fact about somebody else's product, and this build could not reach YouTube's own help page to read it. Rather than ship a widely repeated number next to a source link nobody opened, the field is left for you to type from the documentation in front of you; the same applies to the fold position, which differs between the website and the mobile app.

What does this tool not do?

It does not write your description, check it against YouTube, or take any view on how a description should be structured or how long it should be — it counts, assembles and flags. Chapter lines are parsed and re-serialised by the chapter module, addresses are validated by the URL module and campaign tags are built by the UTM module, so what you see is those modules' own results rather than a second opinion invented here.