YouTube's exact watermark rules, the three display options and the related banner and profile picture sizes on one page.
3 min read
The YouTube branding watermark size rule is short: a square image of at least 150 x 150 pixels and less than 1 MB. You add it in YouTube Studio under Customization, then Profile, choose when it shows (the whole video, from a custom start time, or the last 15 seconds), and click Publish.
YouTube Help gives exactly two rules for the video watermark:
That is the whole list. The help page gives no exact maximum in pixels and no file-type list for the watermark itself. Our own advice: the watermark shows small in the corner of the player, so a simple logo or icon reads better than text.
You set it once there rather than on each upload.
YouTube offers three display times:
The last 15 seconds overlaps the stretch where end screens usually run, so check your end screen layout does not crowd that corner.
YouTube Help says the watermark shows in landscape view on computers and mobile devices, and is not clickable on mobile. It does not show on custom chromeless YouTube players or in Adobe Flash.
The common reasons:
YouTube Help points to the Subscription source report in YouTube Analytics for watermark metrics.
The same help page lists the other branding images:
What is the maximum file size for a YouTube watermark? Less than 1 MB.
Does the watermark have to be square? Yes. YouTube Help says it must be a square image.
Can I show the watermark only at the end? Yes. The End of video option shows it for the last 15 seconds.
Lab evidence
Checked on 18 Oct 2026 against YouTube Help's 'Manage your channel branding' page (computer version). Watermark, banner and profile picture sizes are quoted exactly as published there; design advice is labelled as our own. No fresh hands-on upload test in YouTube Studio was done for this post, and menu names may differ slightly between Studio versions.
Explore the product
YouTubers who want research, titles, thumbnails and scheduling in one workflow
We ran three typescript-eslint presets on a real open-source TypeScript library and counted every finding and second. The jump to strict was smaller than the jump to type-aware linting, and the findings themselves tell you whether your team is ready.
Summary4 Nov 20267 min read
Both cut a string at a separator, but they fail in different ways. We ran them on Python 3.13.5 to show where partition() is safer and where split() is the right tool.
Summary2 Nov 20263 min read
What changes when you swap sort() for toSorted(), with a real 1-million-item Node.js benchmark and the support table.
Summary1 Nov 20263 min read