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-09-04.
Leave feedback in the comments to the blog post.

Alternatives to this website: (if you can't get this working)
1. There is a website called that can copy annotations. This works in conjunction with an extension you install to your browser. It should work with both Chrome and Firefox.
2. There used to be a userscript for Chrome made by ZSleyerLP, adapted from the code on this website. But it appears this website is no longer working.
   You can get the source code here and maybe get it working on your own. This script also automates getting the XML and auth_token.

1. Use Firefox! Chrome is too strict about cross-origin requests.
   Watch this video for a walkthrough how to use the tool.
2. Fetch annotations from a video.
   Note: All this input box does is redirect you to YouTube. You don't need to use this box if you have hundreds of videos, you can simply go directly to the url.
   Once you see the XML, right click, view page source, and copy everything.
   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!
   You can donate without a PayPal account, you just need a credit card.
   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.