- 1 rel-tag
- 1.1 Draft Specification 2005-01-10
- 1.2 Abstract
- 1.3 Scope
- 1.4 XMDP profile
- 1.5 Tag Spaces
- 1.6 Encoding issues
- 1.7 Tags Are Visible Metadata
- 1.8 Examples in the Wild
- 1.9 Implementations
- 1.10 References
- 1.11 Discussions
- 1.12 Related pages
Draft Specification 2005-01-10
- Derek Powazek
This specification is (C) 2004-2021 by the authors. However, the authors intend to submit (or already have submitted, see details in the spec) this specification to a standards body with a liberal copyright/licensing policy such as the GMPG, IETF, and/or W3C. Anyone wishing to contribute should read their copyright principles, policies and licenses (e.g. the GMPG Principles) and agree to them, including licensing of all contributions under all required licenses (e.g. CC-by 1.0 and later), before contributing.
- Tantek: I release all my contributions to this specification into the public domain and I encourage the other authors to do so as well.
- When all authors/editors have done so, we can remove the MicroFormatCopyrightStatement template reference and replace it with the MicroFormatPublicDomainContributionStatement.
rel="tag" is one of several microformats. By adding
rel="tag" to a hyperlink, a page indicates that the destination of that hyperlink is an author-designated "tag" (or keyword/subject) for the current page. Note that a tag may just refer to a major portion of the current page (i.e. a blog post). e.g. by placing this link on a page,
<a href="http://technorati.com/tag/tech" rel="tag">tech</a>
the author indicates that the page (or some portion of the page) has the tag "tech".
The linked page SHOULD exist, and it is the linked page, rather than the link text, that defines the tag. The last path component of the URL is the text of the tag, so
<a href="http://technorati.com/tag/tech" rel="tag">fish</a>
would indicate the tag "tech" rather than "fish".
rel="tag" is specifically designed for "tagging" content, typically web pages (or portions thereof, like blog posts).
rel="tag" is NOT designed for "tagging" arbitrary URLs or external content. There is demand for a general decentralized syntax for tagging URLs external to the current page, but this is not meant for that. See xFolk and hReview for ways to tag arbitrary URLs.
<dl class="profile"> <dt id="rel">rel</dt> <dd><p> <a rel="help" href="http://www.w3.org/TR/html401/struct/links.html#adef-rel"> HTML4 definition of the 'rel' attribute.</a> Here is an additional value.</p> <dl> <dt id="tag">tag</dt> <dd>Indicates that the referred resource serves as a "tag", or keyword/subject, for the referring page.</dd> </dl> </dd> </dl>
Tags are embedded in HTTP URIs in a well-defined manner so that the tag embedded in an HTTP URI can be mechanically extracted from that URI. Specifically, the last segment of the path portion of the URI (after the final "/" character) contains the tag value. For example, the URI
contains the tag "foo".
Thus, for the purposes of comparing two HTTP URIs as tags, the last segment of the path portion should be extracted and only that value (that value of the tag) should be compared.
Need more formal language about comparison and extraction process.
The destination of a rel="tag" hyperlink is required to be a tag space (a place that collates or defines tags), where the last segment of the path of the URL is the tag, e.g.
is a URL for the tag "tech".
Tags may only be placed in the URL path, and only in the last segment of the path. Tags may not be placed in query parameters or fragment identifiers. e.g.
is still a URL for the tag "tech", not "fish" or "emu".
Since the only part of a tag space URL of which any structure is required is the last path segment, a tag space URL can be hosted at any domain. Authors may choose to link to a tag at a particular tag space in order to provide a specific meaning. E.g. a tag for technology could link to:
Trailing slashes in tag URLs are ignored, that is:
as a rel-tag URL is treated as:
Spaces can be encoded either as
%20. Unicode characters are encoded as specified in RFC 3986. For example:
<a href="http://technorati.com/tag/Sant%C3%A9+et+bien-%C3%AAtre" rel="tag">Santé et bien-être</a>
Note that if using Wikipedia as a tagspace, as discussed above, you should use
%20 as they remap '+' to
%2B, causing a page with a plus sign in the title (which usually does not exist) to appear.
Tags Are Visible Metadata
rel="tag" hyperlinks are intended to be visible links on pages and posts. This is in stark contrast to meta keywords (which were invisible and typically never revealed to readers), and thus is at least somewhat more resilient to the problems which plagued meta keywords.
Making tag hyperlinks visible has the additional benefit of making it more obvious to readers if a page is abusing tag links, and thus providing more peer pressure for better behavior. It also makes it more obvious to authors, who may not always be aware what invisible metadata is being generated on their behalf.
As a result the invisible tag link syntax variant:
<link rel="tag" href="..." /> SHOULD NOT be supported by implementations.
Examples in the Wild
This section is informative.
The following sites have implemented rel-tag, and thus are a great place to start for anyone looking for examples "in the wild" to try parsing, indexing, organizing etc. If your site marked up with rel-tag, feel free to add it to the top of this list. Once the list grows too big, we'll make a separate wiki page.
- the my-Warehouse shopsystem implements rel-tags in box headings and categories links.
- Joseph Bergantine uses tags to categorize wallpapers and blog posts
- Codesignville uses rel-tag to indicate content categories.
- BossaLive uses rel-tag for tagging music. Publishes rel-tags for album, artist and genre.
- Also uses hCard on user profile pages.
- qmpeople Uses rel-tag for translated tags into english, french and italian to meet new friends in different countries.
- Keevu.com uses rel-tag to indicate content categories on most pages, like venues
- Amazing Incredible uses rel-tag on content pages
- AuctionLink uses rel-tag on Auction Sales Listings tags.
- Christian Hess uses rel-tag on his homepage blog and several other pages of his site.
- Spacedust uses rel-tag to mark up gallery pages.
- My Opera uses rel-tag for tags on all user's blog entries.
- Dev Opera uses rel-tag on all article tags.
- UNT International uses rel-tag to indicate content categories on most pages
- Yedda - Yedda publishes rel-tags for all of the tags the people entered on themselves as well as on all tags entered on questions asked on Yedda.
- Lingr publishes rel-tags for all user entered tags.
- ODEO publishes rel-tags for user entered tags.
- Eventful publishes rel-tags for user entered tags.
- Spinn3r implements rel-tag as well as RSS and Atom subject and categories.
This section is informative.
The following implementations have been developed which either generate or parse rel-tag links. If you have a rel-tag implementation, feel free to add it to the top of this list. Once the list grows too big, we'll make a separate wiki page.
- Textcube.org makes a blogging tool, Textcube which generates rel-tag for tags on blog posts.
- HashTags tags Twitter posts, converting "#example" into a tag of "example"
- ikiwiki generates rel-tag for all tagged pages (as of version 2.6)
- HubTag helps users find a unique tag across the web for their event - eg. JohnAndBettysWeddingWimbledonMarch07
- Necctar is a search engine exclusively based on tag microformat parsing and processing. Necctar uses tags entered by bloggers to index the world wide web
- Nutch has a rel="tag" parser committed to their svn repository.
- Dreamweaver Extension suite from the Web Standards Project enables rel-tagging from within Dreamweaver 8.
- Scooch slide show creator allows authors to generate rel-tags and group slide shows by rel-tag via a list or cloud with tag usage count.
- The Freetag plugin for the Serendipity blog software supports rel-tags on a per-entry basis, as well as inside of its tag clouds. (The Freetag plugin is available inside of SPARTACUS)
- pnh_mf is a plugin for Textpattern that supports embedding rel-tags and other microformats in templates and blog posts. Written by Chris Casciano.
- tru_tags is a plugin for Textpattern that supports rel-tagging blog posts via the Keywords field.
- LiveJournal - see also their FAQ regarding their tags support
- TagsLinks Turn each tag into links that let you find related content on tagging services.
- Tag plugin for WordPress
- Note that some sites using WordPress (http://microformatique.com/ for instance) are getting incorrect tags. The tag is ?cat=12 instead of the actual tag value.
- Tag plugin for Blosxom
- Technorati first implemented rel-tag in its Technorati Tags service. Technorati indexes rel-tag tags.
- Greasemonkey script for Firefox that generates tags for Blogger
- rel-lint is a validation tool by Drew McLellan that will validate existence of rel-tag attributes.
- HTML 4
- XHTML 1
- RFC 3986 specifies URL syntax. Section 3.3 specifies URL paths and path segments.
- hReview uses rel-tag for tags and scalar tags
- xFolk uses rel-tag to build a distributed remote resource tagging construct
- Attention.XML uses rel-tag for reader tagging of pages, posts, feeds
- hCard can use rel-tag for categories
- hCalendar can use rel-tag for categories
- Using Technorati Tags
- Contributed from http://developers.technorati.com/wiki/RelTag
- Know your rel-tag at microformatique.com
- Feedback is encouraged on the rel-tag-feedback page.
- See also blogs discussing this page.
- History: How Tags Happened at Technorati by Derek Powazek
- If you have any questions about rel-tag, check the rel FAQ first for general rel attribute questions, then check the rel-tag FAQ, and then if you don't find answers, ask your question on the microformats-discuss mailing list.
- See also rel-faq
- rel-tag advocacy - encourage others to use rel-tag.
- rel-tag-spaces - sites suitable as using as targets for rel-tag links.
The rel-tag specification is a work in progress. As additional aspects are discussed, understood, and written, they will be added. These thoughts, issues, and questions are kept in separate pages.