This page describes how to copy YouTube annotations across videos. It essentially helps you liberate your annotations data, modify it at will, and upload it again to multiple videos. Everything is done with client-side JavaScript.

Created by Stefan Sundin. Read blog post. Last modified 2014-01-13.

Leave feedback in the comments to the blog post.

1. Use Firefox! Chrome is too strict about cross-origin requests.
   There is a userscript for Chrome made by ZSleyerLP, adapted from the code on this website. This script also automates getting the XML and auth_token.
   Watch this video for a walkthrough how to use the tool.
2. Fetch annotations from a video.
   Right click, view page source, and copy.
   Note: If you have ampersands in a text or if you use urls, make sure the ampersands are escaped!
   This means all & should be escaped like &. If you copy using view page source in Firefox, this will happen automatically!
3. (Optional) This is your chance to do things the YouTube developers did not think of.
   A few examples:
   If you want the annotations to last the whole video, you can edit the end time to something like t="1:00:00.0".
   You can change the width and height of the annotations to sizes that the normal editor will not allow.
   Let me know if you find a nice trick!
4. Paste the XML into the box below.
5. Fetch one auth_token to give this script the ability to update your videos, and put it in the auth_token box below.
   I have made a Greasemonkey script to simplify getting the auth_token. Install the script here.
   A text field with the auth_token will appear in the lower right corner of the "edit annotations" page.
   A download link for the annotations will also appear.
6. Put a list of destination video ids or urls in the box below.
7. Click the Update button. This will submit the XML.
   Verify that the annotations were copied by looking at the draft version of the annotations on the 'edit annotations' page (they haven't been published yet).
   If it didn't work and the annotations weren't copied, use Firebug and check the Net console and see if the result was anything other than "200 Ok".
   Note that "InVideo Programming" annotations are automatically removed since they otherwise will cause the copy to fail. You can try to remove them manually if you encounter problems (they have ids that start with channel:).
   If it did not work, please make sure you are not trying to copy annotations that were created a very long time ago.
8. Click the Publish button if you also want to publish the annotations.
9. ???
11.Give something back. Donate!
   Donating is the best way to get issues fixed.

Look at the source code of this page to read a more technical description of how it works.

Warning: Your XML code contains unescaped ampersands (&), please see note above!

This button will delete the annotations from the video you fetched the XML.