{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/huggingface-co/2025-09-15-visible-watermarking-with-gradio/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "[![image/webp](https://cdn-uploads.huggingface.co/production/uploads/60c757ea5f9a76ab3f844f12/DM6_nlPtgsfRytok2F1Ib.webp)](https://cdn-uploads.huggingface.co/production/uploads/60c757ea5f9a76ab3f844f12/DM6_nlPtgsfRytok2F1Ib.webp)\n\nLast year, we shared a [blogpost on watermarking](https://huggingface.co/blog/watermarking), explaining what it means to watermark generative AI content, and why it's important. The need for watermarking has become even more critical as people all over the world have begun to generate and share AI-generated images, video, audio, and text. Images and video have become so realistic that they’re nearly impossible to distinguish from what you’d see captured by a real camera. Addressing this issue is multi-faceted, but there is one, clear, low-hanging fruit 🍇:\n\n> ### *In order for people to know what's real and what's synthetic, use visible watermarks.*\n\nTo help out, we at Hugging Face have made visible watermarking trivially easy: Whenever you [create a Space like an app or a demo](https://huggingface.co/new-space), you can use our in-house app-building library Gradio to display watermarks with a single command.\n\nFor images and video, simply add the `watermark` parameter, like so:\n\n```\ngr.Image(my_generated_image, watermark=my_watermark_image)\n```\n\n```\ngr.Video(my_generated_video, watermark=my_watermark_image)\n```\n\n> ### See a demonstration of this in action: [check out our example image and video watermarking Space](https://huggingface.co/spaces/meg/watermark_demo).\n\nWatermarks can be specified as filenames, and for images we additionally support open images or even numpy arrays, to work best with how you want to set up your interface. One option I particularly like is QR watermarks, which can be used to get much more information about the content, [and can even be matched to the style of your image or video](https://huggingface.co/spaces/huggingface-projects/QR-code-AI-art-generator).\n\nYou can also add custom visible watermarks for AI-generated text, so that whenever it is copied, the watermark will appear. Like so:\n\n```\ngr.Chatbot(label=my_model_name, watermark=my_watermark_text, type=\"messages\", show_copy_button=True, show_copy_all_button=True)\n```\n\n> ### See a demonstration of this in action: [check out our example chatbot watermarking Space](https://huggingface.co/spaces/meg/chatbot_watermark_demo).\n\nThis automatically adds attribution when users copy text from AI responses, further aiding in AI transparency and disclosure for text generation.\n\nTry it all out today, build your own watermark, have fun!\n\nHappy Coding!\n\n*Acknowledgements: [Abubakar Abid](https://huggingface.co/abidlabs) and [Yuvraj Sharma](https://huggingface.co/ysharma) collaborated on this work and blog post.*\n",
  "authors": [],
  "captured_at": "2026-10-04T12:50:30.804479567+00:00",
  "category": "ai",
  "content_html": "<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://cdn-uploads.huggingface.co/production/uploads/60c757ea5f9a76ab3f844f12/DM6_nlPtgsfRytok2F1Ib.webp\"><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cdn-uploads.huggingface.co/production/uploads/60c757ea5f9a76ab3f844f12/DM6_nlPtgsfRytok2F1Ib.webp\" alt=\"image/webp\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></a></p>\n<p>Last year, we shared a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/blog/watermarking\">blogpost on watermarking</a>, explaining what it means to watermark generative AI content, and why it's important. The need for watermarking has become even more critical as people all over the world have begun to generate and share AI-generated images, video, audio, and text. Images and video have become so realistic that they’re nearly impossible to distinguish from what you’d see captured by a real camera. Addressing this issue is multi-faceted, but there is one, clear, low-hanging fruit 🍇:</p>\n<blockquote>\n<h3><em>In order for people to know what's real and what's synthetic, use visible watermarks.</em></h3>\n</blockquote>\n<p>To help out, we at Hugging Face have made visible watermarking trivially easy: Whenever you <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/new-space\">create a Space like an app or a demo</a>, you can use our in-house app-building library Gradio to display watermarks with a single command.</p>\n<p>For images and video, simply add the <code>watermark</code> parameter, like so:</p>\n<pre><code><span class=\"code-snippet\">gr.Image(my_generated_image, watermark=my_watermark_image)\n</span></code></pre>\n<pre><code><span class=\"code-snippet\">gr.Video(my_generated_video, watermark=my_watermark_image)\n</span></code></pre>\n<blockquote>\n<h3>See a demonstration of this in action: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/spaces/meg/watermark_demo\">check out our example image and video watermarking Space</a>.</h3>\n</blockquote>\n<p>Watermarks can be specified as filenames, and for images we additionally support open images or even numpy arrays, to work best with how you want to set up your interface. One option I particularly like is QR watermarks, which can be used to get much more information about the content, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/spaces/huggingface-projects/QR-code-AI-art-generator\">and can even be matched to the style of your image or video</a>.</p>\n<p>You can also add custom visible watermarks for AI-generated text, so that whenever it is copied, the watermark will appear. Like so:</p>\n<pre><code><span class=\"code-snippet\">gr.Chatbot(label=my_model_name, watermark=my_watermark_text, type=&quot;messages&quot;, show_copy_button=True, show_copy_all_button=True)\n</span></code></pre>\n<blockquote>\n<h3>See a demonstration of this in action: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/spaces/meg/chatbot_watermark_demo\">check out our example chatbot watermarking Space</a>.</h3>\n</blockquote>\n<p>This automatically adds attribution when users copy text from AI responses, further aiding in AI transparency and disclosure for text generation.</p>\n<p>Try it all out today, build your own watermark, have fun!</p>\n<p>Happy Coding!</p>\n<p><em>Acknowledgements: <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/abidlabs\">Abubakar Abid</a> and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://huggingface.co/ysharma\">Yuvraj Sharma</a> collaborated on this work and blog post.</em></p>\n",
  "content_markdown": "[![image/webp](https://cdn-uploads.huggingface.co/production/uploads/60c757ea5f9a76ab3f844f12/DM6_nlPtgsfRytok2F1Ib.webp)](https://cdn-uploads.huggingface.co/production/uploads/60c757ea5f9a76ab3f844f12/DM6_nlPtgsfRytok2F1Ib.webp)\n\nLast year, we shared a [blogpost on watermarking](https://huggingface.co/blog/watermarking), explaining what it means to watermark generative AI content, and why it's important. The need for watermarking has become even more critical as people all over the world have begun to generate and share AI-generated images, video, audio, and text. Images and video have become so realistic that they’re nearly impossible to distinguish from what you’d see captured by a real camera. Addressing this issue is multi-faceted, but there is one, clear, low-hanging fruit 🍇:\n\n> ### *In order for people to know what's real and what's synthetic, use visible watermarks.*\n\nTo help out, we at Hugging Face have made visible watermarking trivially easy: Whenever you [create a Space like an app or a demo](https://huggingface.co/new-space), you can use our in-house app-building library Gradio to display watermarks with a single command.\n\nFor images and video, simply add the `watermark` parameter, like so:\n\n```\ngr.Image(my_generated_image, watermark=my_watermark_image)\n```\n\n```\ngr.Video(my_generated_video, watermark=my_watermark_image)\n```\n\n> ### See a demonstration of this in action: [check out our example image and video watermarking Space](https://huggingface.co/spaces/meg/watermark_demo).\n\nWatermarks can be specified as filenames, and for images we additionally support open images or even numpy arrays, to work best with how you want to set up your interface. One option I particularly like is QR watermarks, which can be used to get much more information about the content, [and can even be matched to the style of your image or video](https://huggingface.co/spaces/huggingface-projects/QR-code-AI-art-generator).\n\nYou can also add custom visible watermarks for AI-generated text, so that whenever it is copied, the watermark will appear. Like so:\n\n```\ngr.Chatbot(label=my_model_name, watermark=my_watermark_text, type=\"messages\", show_copy_button=True, show_copy_all_button=True)\n```\n\n> ### See a demonstration of this in action: [check out our example chatbot watermarking Space](https://huggingface.co/spaces/meg/chatbot_watermark_demo).\n\nThis automatically adds attribution when users copy text from AI responses, further aiding in AI transparency and disclosure for text generation.\n\nTry it all out today, build your own watermark, have fun!\n\nHappy Coding!\n\n*Acknowledgements: [Abubakar Abid](https://huggingface.co/abidlabs) and [Yuvraj Sharma](https://huggingface.co/ysharma) collaborated on this work and blog post.*\n",
  "dateCreated": "2026-10-04T12:50:30.804479567+00:00",
  "date_created": "2025-09-15T00:00:00+00:00",
  "date_modified": "2025-09-15T00:00:00+00:00",
  "date_published": "2025-09-15T00:00:00+00:00",
  "description": "Last year, we shared a blogpost on watermarking, explaining what it means to watermark generative AI content, and why it's important. The need for watermarking has become even more critical as people all over the world have begun to…",
  "external_url": "https://huggingface.co/blog/watermarking-with-gradio",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/huggingface-co/2025/09/2025-09-15-visible-watermarking-with-gradio.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/huggingface-co/2025/09/2025-09-15-visible-watermarking-with-gradio.md"
  },
  "id": "urn:aggr:item:1cd03277f56780acb05ba94fd54cda76e4baef4e",
  "isBasedOn": {
    "@id": "https://huggingface.co/blog/watermarking-with-gradio"
  },
  "mainEntity": {
    "@id": "https://huggingface.co/blog/watermarking-with-gradio",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/huggingface-co/2025-09-15-visible-watermarking-with-gradio/#webpage"
    },
    "dateModified": "2025-09-15T00:00:00+00:00",
    "datePublished": "2025-09-15T00:00:00+00:00",
    "headline": "Visible Watermarking with Gradio",
    "timeRequired": "PT2M",
    "url": "https://huggingface.co/blog/watermarking-with-gradio",
    "wordCount": 333
  },
  "name": "Archived snapshot: Visible Watermarking with Gradio",
  "preview": null,
  "reading_minutes": 2,
  "replicated_at": null,
  "source": "huggingface-co",
  "source_name": "Hugging Face - Blog",
  "summary": null,
  "tags": [],
  "temporalCoverage": "2026-10-04T12:50:30.804479567+00:00",
  "title": "Visible Watermarking with Gradio",
  "url": "https://aggr.aymericbeaumet.com/items/huggingface-co/2025-09-15-visible-watermarking-with-gradio/",
  "word_count": 333
}