{"id":27819,"date":"2021-08-02T19:49:31","date_gmt":"2021-08-02T19:49:31","guid":{"rendered":"http:\/\/add-branding-watermark-to-video-with-react-and-cloudinary"},"modified":"2025-02-22T15:41:54","modified_gmt":"2025-02-22T23:41:54","slug":"add-branding-watermark-to-video-with-react-and-cloudinary","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/","title":{"rendered":"Add a Branding Watermark to Video With React"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p>When displaying video on your site, adding your logo to the video makes the content look branded and more polished. In this tutorial, we\u2019ll look at how we can automatically add our logo to a video using Cloudinary, and display it in a React component.<\/p>\n<\/div>\n\n\n  <div class=\"wp-block-cloudinary-code-sandbox \">\n    <iframe\n      src=\"https:\/\/codesandbox.io\/embed\/branded-video-react-cloudinary-w9mbz?theme=dark&amp;codemirror=1&amp;highlights=&amp;editorsize=50&amp;fontsize=14&amp;expanddevtools=0&amp;hidedevtools=0&amp;eslint=0&amp;forcerefresh=0&amp;hidenavigation=0&amp;initialpath=%2F&amp;module=%2Fsrc%2FApp.js&amp;moduleview=0&amp;previewwindow=&amp;view=&amp;runonclick=1\"\n      height=\"500\"\n      style=\"width: 100%;\"\n      title=\"Branded Video With React &amp; Cloudinary!\"\n      loading=\"lazy\"\n      allow=\"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking\"\n      sandbox=\"allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts\"\n    ><\/iframe>\n  <\/div>\n\n\n<div class=\"wp-block-cloudinary-markdown \"><h2>Upload your assets to Cloudinary.<\/h2>\n<p>First, upload the video and the logo to Cloudinary. The fastest way to do this is using the <a href=\"https:\/\/cloudinary.com\/console?ap=lwj\">Cloudinary console<\/a>.<\/p>\n<p>For this tutorial, we\u2019ll use the following video:<\/p>\n<video controls>\n  <source src=\"https:\/\/res.cloudinary.com\/jlengstorf\/video\/upload\/q_auto,f_auto,w_600\/mediajams\/disappointed-coffee.mp4\" \/>\n<\/video>\n<pre class=\"js-syntax-highlighted\"><code>https:\/\/res.cloudinary.com\/jlengstorf\/video\/upload\/mediajams\/disappointed-coffee.mp4\n<\/code><\/pre>\n<p>And the following logo:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/jlengstorf\/image\/upload\/c_limit,w_2000\/f_auto\/q_auto\/v1617486999\/mediajams\/logo.png\" alt=\"Learn With Jason logo\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"360\" height=\"186\"\/><\/p>\n<pre class=\"js-syntax-highlighted\"><code>https:\/\/res.cloudinary.com\/jlengstorf\/image\/upload\/mediajams\/logo.png\n<\/code><\/pre>\n<p>By the end of this tutorial, we\u2019ll place the logo image at the bottom right of the video to add branding.<\/p>\n<h2>Create a Video Component in React<\/h2>\n<p>Before we add the logo, let\u2019s create a React component that displays our Cloudinary video.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">Video<\/span>(<span class=\"hljs-params\">{ cloudName, videoId, watermarkId }<\/span>) <\/span>{\n  <span class=\"hljs-comment\">\/\/ set up a Cloudinary URL to use your cloud name and display video<\/span>\n  <span class=\"hljs-keyword\">let<\/span> videoSource = <span class=\"hljs-string\">`https:\/\/res.cloudinary.com\/<span class=\"hljs-subst\">${cloudName}<\/span>\/video\/upload`<\/span>;\n\n  <span class=\"hljs-comment\">\/\/ automatically adjust the quality and set the video to 600px wide<\/span>\n  videoSource += <span class=\"hljs-string\">\"\/q_auto,w_600\"<\/span>;\n\n  <span class=\"hljs-comment\">\/\/ set the publicId to display the video as an MP4<\/span>\n  videoSource += <span class=\"hljs-string\">`\/<span class=\"hljs-subst\">${videoId}<\/span>.mp4`<\/span>;\n\n  <span class=\"hljs-comment\">\/\/ add the full URL to a standard HTML5 video element<\/span>\n  <span class=\"hljs-keyword\">return<\/span> (\n    <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">video<\/span> <span class=\"hljs-attr\">controls<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">source<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">{videoSource}<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"video\/mp4\"<\/span> \/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">video<\/span>&gt;<\/span><\/span>\n  );\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>The component, which we\u2019ve named <code>Video<\/code>, accepts three values as props: <code>cloudName<\/code>, <code>videoId<\/code>, and <code>watermarkId<\/code>.<\/p>\n<p>The <code>cloudName<\/code> should contain our Cloudinary cloud name, which is displayed at the top-right of the console.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/jlengstorf\/image\/upload\/q_auto,f_auto,w_600\/c_limit,w_2000\/f_auto\/q_auto\/v1617499746\/mediajams\/cloud-name.png\" alt=\"The Cloudinary console with an arrow pointing to the location of the cloud name.\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"600\" height=\"413\"\/><\/p>\n<p>The <code>videoId<\/code> will contain the video asset\u2019s public ID, which is the name of the file on Cloudinary, including any folders. Using our example video from above, the public ID is <code>mediajams\/disappointed-coffee<\/code>.<\/p>\n<p>Finally, the <code>watermarkId<\/code> will contain the public ID of the logo asset. In the logo file above, the public ID is <code>mediajams\/logo<\/code>.<\/p>\n<p>To set up our video, we build a Cloudinary URL that contains:<\/p>\n<ol>\n<li>The public Cloudinary URL, <code>https:\/\/res.cloudinary.com\/<\/code>\n<\/li>\n<li>Our cloud name<\/li>\n<li>The asset type, <code>\/video\/upload\/<\/code>\n<\/li>\n<li>Transformations to adjust the quality automatically, and resize to 600px wide: <code>q_auto,w_600<\/code>\n<\/li>\n<li>The public ID of our video<\/li>\n<li>A file type of MP4 using a file extension<\/li>\n<\/ol>\n<p>Once we have the URL, we can add it as the <code>src<\/code> value in a video element, and return it from our component.<\/p>\n<h2>Add the logo to the bottom-right corner<\/h2>\n<p>Right now, we\u2019re not using the <a href=\"https:\/\/cloudinary.com\/glossary\/image-watermarking\">watermark<\/a>. To add that in, we need to include an <a href=\"https:\/\/cloudinary.com\/documentation\/video_manipulation_and_delivery?ap=lwj#adding_image_overlays\">overlay<\/a> to the video.<\/p>\n<p>Overlays in URLs are created by setting the public ID of the asset to overlay prefixed with <code>l_<\/code>. Cloudinary uses the <code>\/<\/code> character to denote groups of effects, so we need to replace all <code>\/<\/code> characters in the public ID with a colon (<code>:<\/code>).<\/p>\n<p>Then, using the <a href=\"https:\/\/cloudinary.com\/documentation\/transformation_reference?ap=lwj#g_gravity\">gravity transformation<\/a>, we move the image to the bottom-right corner, set its width to 100px, and nudge it 20px away from the right and bottom edges.<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">  <span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">Video<\/span>(<span class=\"hljs-params\">{ cloudName, videoId, watermarkId }<\/span>) <\/span>{\n    <span class=\"hljs-comment\">\/\/ set up a Cloudinary URL to use your cloud name, and display video<\/span>\n    <span class=\"hljs-keyword\">let<\/span> videoSource = <span class=\"hljs-string\">`https:\/\/res.cloudinary.com\/<span class=\"hljs-subst\">${cloudName}<\/span>\/video\/upload`<\/span>;\n\n    <span class=\"hljs-comment\">\/\/ automatically adjust the quality, and set the video to 600px wide<\/span>\n    videoSource += <span class=\"hljs-string\">\"\/q_auto,w_600\"<\/span>;\n\n    <span class=\"hljs-comment\">\/\/ for watermarks, replace folder slashes with colons<\/span>\n    <span class=\"hljs-keyword\">const<\/span> watermark = <span class=\"hljs-string\">`l_<span class=\"hljs-subst\">${watermarkId.replace(<span class=\"hljs-string\">\"\/\"<\/span>, <span class=\"hljs-string\">\":\"<\/span>)}<\/span>`<\/span>;\n\n+   <span class=\"hljs-comment\">\/\/ add the watermark to the bottom-right of the video,<\/span>\n+   <span class=\"hljs-comment\">\/\/ and set it to 100px wide, offset 20px from the edges<\/span>\n+   videoSource += <span class=\"hljs-string\">`\/<span class=\"hljs-subst\">${watermark}<\/span>,g_south_east,w_100,x_20,y_20`<\/span>;\n+\n+   <span class=\"hljs-comment\">\/\/ set the publicId to display the video as an MP4<\/span>\n+   videoSource += <span class=\"hljs-string\">`\/<span class=\"hljs-subst\">${videoId}<\/span>.mp4`<\/span>;\n\n    <span class=\"hljs-comment\">\/\/ add the full URL to a standard HTML5 video element<\/span>\n    <span class=\"hljs-keyword\">return<\/span> (\n      <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">video<\/span> <span class=\"hljs-attr\">controls<\/span>&gt;<\/span>\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">source<\/span> <span class=\"hljs-attr\">src<\/span>=<span class=\"hljs-string\">{videoSource}<\/span> <span class=\"hljs-attr\">type<\/span>=<span class=\"hljs-string\">\"video\/mp4\"<\/span> \/&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">video<\/span>&gt;<\/span><\/span>\n    );\n  }\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<h2>Display the branded video in a React component on screen.<\/h2>\n<p>Now that we have our <code>Video<\/code> component ready to add a logo watermark to our videos, we can render it on screen.<\/p>\n<p>In any React app, we can use the component like this:<\/p>\n<pre class=\"js-syntax-highlighted\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">App<\/span>(<span class=\"hljs-params\"><\/span>) <\/span>{\n  <span class=\"hljs-keyword\">return<\/span> (\n    <span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">main<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h1<\/span>&gt;<\/span>Branded Video With React &amp; Cloudinary!<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">h1<\/span>&gt;<\/span>\n      <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Video<\/span>\n        <span class=\"hljs-attr\">cloudName<\/span>=<span class=\"hljs-string\">\"jlengstorf\"<\/span>\n        <span class=\"hljs-attr\">videoId<\/span>=<span class=\"hljs-string\">\"mediajams\/disappointed-coffee\"<\/span>\n        <span class=\"hljs-attr\">watermarkId<\/span>=<span class=\"hljs-string\">\"mediajams\/logo\"<\/span>\n      \/&gt;<\/span>\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">main<\/span>&gt;<\/span><\/span>\n  );\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n<p>Setting the cloud name, video public ID, and logo public ID will render a branded video on screen!<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":27820,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[134,246,371,303],"class_list":["post-27819","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-guest-post","tag-react","tag-under-review","tag-video"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Add a Branding Watermark to Video With React<\/title>\n<meta name=\"description\" content=\"When displaying video on your site, adding your logo to the video makes the content look branded and more polished. In this tutorial, we\u2019ll look at how we can automatically add our logo to a video using Cloudinary, and display it in a React component.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Add a Branding Watermark to Video With React\" \/>\n<meta property=\"og:description\" content=\"When displaying video on your site, adding your logo to the video makes the content look branded and more polished. In this tutorial, we\u2019ll look at how we can automatically add our logo to a video using Cloudinary, and display it in a React component.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-02T19:49:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-22T23:41:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1681924094\/Web_Assets\/blog\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba-png?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1158\" \/>\n\t<meta property=\"og:image:height\" content=\"656\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Add a Branding Watermark to Video With React\",\"datePublished\":\"2021-08-02T19:49:31+00:00\",\"dateModified\":\"2025-02-22T23:41:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/\"},\"wordCount\":8,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924094\/Web_Assets\/blog\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba.png?_i=AA\",\"keywords\":[\"Guest Post\",\"React\",\"Under Review\",\"Video\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2021\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/\",\"url\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/\",\"name\":\"Add a Branding Watermark to Video With React\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924094\/Web_Assets\/blog\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba.png?_i=AA\",\"datePublished\":\"2021-08-02T19:49:31+00:00\",\"dateModified\":\"2025-02-22T23:41:54+00:00\",\"description\":\"When displaying video on your site, adding your logo to the video makes the content look branded and more polished. In this tutorial, we\u2019ll look at how we can automatically add our logo to a video using Cloudinary, and display it in a React component.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924094\/Web_Assets\/blog\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924094\/Web_Assets\/blog\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba.png?_i=AA\",\"width\":1158,\"height\":656},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Add a Branding Watermark to Video With React\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Add a Branding Watermark to Video With React","description":"When displaying video on your site, adding your logo to the video makes the content look branded and more polished. In this tutorial, we\u2019ll look at how we can automatically add our logo to a video using Cloudinary, and display it in a React component.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/","og_locale":"en_US","og_type":"article","og_title":"Add a Branding Watermark to Video With React","og_description":"When displaying video on your site, adding your logo to the video makes the content look branded and more polished. In this tutorial, we\u2019ll look at how we can automatically add our logo to a video using Cloudinary, and display it in a React component.","og_url":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/","og_site_name":"Cloudinary Blog","article_published_time":"2021-08-02T19:49:31+00:00","article_modified_time":"2025-02-22T23:41:54+00:00","og_image":[{"width":1158,"height":656,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1681924094\/Web_Assets\/blog\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba-png?_i=AA","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/"},"author":{"name":"","@id":""},"headline":"Add a Branding Watermark to Video With React","datePublished":"2021-08-02T19:49:31+00:00","dateModified":"2025-02-22T23:41:54+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/"},"wordCount":8,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924094\/Web_Assets\/blog\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba.png?_i=AA","keywords":["Guest Post","React","Under Review","Video"],"inLanguage":"en-US","copyrightYear":"2021","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/","url":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/","name":"Add a Branding Watermark to Video With React","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924094\/Web_Assets\/blog\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba.png?_i=AA","datePublished":"2021-08-02T19:49:31+00:00","dateModified":"2025-02-22T23:41:54+00:00","description":"When displaying video on your site, adding your logo to the video makes the content look branded and more polished. In this tutorial, we\u2019ll look at how we can automatically add our logo to a video using Cloudinary, and display it in a React component.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924094\/Web_Assets\/blog\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924094\/Web_Assets\/blog\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba.png?_i=AA","width":1158,"height":656},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/guest_post\/add-branding-watermark-to-video-with-react-and-cloudinary\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Add a Branding Watermark to Video With React"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1681924094\/Web_Assets\/blog\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba\/79f7a48db64ddda7b7f9682e18eaa92fe733c5c4-1158x656-1_278208beba.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/27819","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=27819"}],"version-history":[{"count":3,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/27819\/revisions"}],"predecessor-version":[{"id":36967,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/27819\/revisions\/36967"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/27820"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=27819"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=27819"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=27819"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}