Hypothesis is simply awesome and my favorite web annotation tool. Their killer feature is that it embeds a bit of JS in the page to provide an in-browser overlay, so you don't have to leave the page you were reading and can highlight and add comments natively. They use something cool called fuzzy anchoring to achieve this. That also makes annotations resilient to document markup changes, and if they can't locate your annotations it would be still shown in metadata as 'orphaned', so you never lose your notes.

Another cool feature is that you can choose to make your annotations public and see other people's annotations or create a private group if you want to share them among specific people only.

To get a sense of it you can skim through tutorial which has plenty of screenshots, and I also strongly recommend you checking it out in action here: Annotation Is Now a Web Standard, or try the very page you're reading now.

You don't have to install anything or register, it's just a widget embedded in the page, but do make sure to allow JS. You should see yellow highlights and the sidebar on the right.

It's open source, can be selfhosted and they provide their own service for free (but please consider donating them!).

Since Hypothesis powered by javascript, it actually works well in modern Android browsers via bookmarklet. It's somewhat not obvious in terms of browser UI how to actually use them though:

for mobile Firefox, once you added a bookmarklet, to invoke it you need to tap on the address bar and click the bookmarklet.

for mobile Chrome, it's a bit more tedious but also possible.

One downside of this service is that you won't be able to annotate while offline. I feel it's actually more of mobile browser's problem in general rather than Hypothesis though. While you potentially can annotate offline without querying API and preserving data in localStorage , if you can't load the page in the first place, it doesn't matter. Perhaps that can be given better support in browsers.

Hypothesis got JSON API which gives access to your and other people's public annotations. I'm using judell/Hypothesis python wrapper to access and back up this data.