Personally, I like sidecar XMP approach, and I do not use any other tagging method.
Should something go wrong online, all my tags are already there together with images on an offline location.
And I can edit XMP in any text editor (using Notepad++ with XML syntax highlighting).
This is template that I use. It's very simple, tags go in "<rdf:li></rdf:li>" and picture description in "<photoshop:Headline></photoshop:Headline>":
`
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 8.09'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<rdf

escription rdf:about=''
xmlns:dc='http://purl.org/dc/elements/1.1/'>
<dc

ubject>
<rdf:Bag>
<rdf:li></rdf:li>
<rdf:li></rdf:li>
<rdf:li></rdf:li>
</rdf:Bag>
</dc

ubject>
</rdf

escription>
<rdf

escription rdf:about=''
xmlns:photoshop='http://ns.adobe.com/photoshop/1.0/'>
<photoshop:Headline></photoshop:Headline>
</rdf

escription>
</rdf:RDF>
</x:xmpmeta>
`