What is RDFa (Resource Description Framework in Attributes)?
RDFa (Resource Description Framework in Attributes) is a W3C specification for writing structured data with attributes inside the HTML itself, such as vocab, typeof and property, so that the visible text of the page is also the data machines read. Google supports it alongside JSON-LD and microdata, though it recommends JSON-LD.
Key takeaways
- RDFa writes structured data in attributes on the same tags the visitor sees, like microdata and unlike JSON-LD.
- Its light version, RDFa Lite 1.1, gets by with five attributes: vocab, typeof, property, resource and prefix.
- Google still reads RDFa and the Rich Results Test validates it, though it recommends JSON-LD as easier to maintain at scale.
- The og: tags of Open Graph, the ones many stores carry in the head, were born from RDFa.
- What is distinctive about RDFa is mixing vocabularies on a single page thanks to the prefix attribute.
Open a store's source code and look for property="og:title" in the head: that way of writing metadata comes from RDFa. RDFa is one of the three formats in which a page's structured data can be written, the least known of the three, and it is alive in more places than it seems. It matters for two reasons: Google reads it like any other format, and if your theme or an old app uses it, it coexists with the markup you add later.
How it works
The W3C published the current version, RDFa Core 1.1 in its third edition, as a recommendation on March 17, 2015. It defines it as a specification of attributes for expressing structured data in any markup language; the name comes from RDF in Attributes, the RDF data model written in attributes. Its idea is to reuse what the document already contains instead of repeating it somewhere else, and it defines thirteen attributes to do so.[1]W3C (Recommendation of March 17, 2015). RDFa Core 1.1, Third Edition
In practice almost nobody needs all thirteen. The same day, the W3C published RDFa Lite 1.1, a minimal subset for expressing machine-readable data in documents such as HTML, SVG or XML, with just five attributes:[2]W3C (Recommendation of March 17, 2015). RDFa Lite 1.1, Second Edition
| Attribute | What it does |
|---|---|
vocab |
Says which vocabulary is used to describe what is on the page |
typeof |
Says what type the thing being described is |
property |
Names each property of that thing |
resource |
Gives a unique identifier to each thing on the page |
prefix |
Allows other vocabularies to be used when the main one lacks the term |
The most common vocabulary is Schema.org. RDFa Lite's own example describes a person with vocab="http://schema.org/" on a paragraph and marks their name and phone number with property on the visible text, so that the sentence the visitor reads is the same one the search engine reads.[2]W3C (Recommendation of March 17, 2015). RDFa Lite 1.1, Second Edition
Google supports three structured data formats. It describes RDFa as an HTML5 extension that adds attributes to the tags that correspond to visible content, and recommends JSON-LD if your site allows it, because it is the easiest solution to implement and to maintain at scale.[3]Google Search Central (updated December 10, 2025). Introduction to structured data markup in Google Search Recommending one is not the same as ignoring the others: well-done RDFa markup works for qualifying for rich results, and the Rich Results Test validates JSON-LD, RDFa and microdata alike.[4]Search Console Help. Rich Results Test
The inheritance you will actually see: Open Graph
The Open Graph protocol, the one behind the og: tags, was based on RDFa from its first version, which is why it is written with meta tags that use the property attribute in the page's head. It asks for four basic properties, og:title, og:type, og:image and og:url, and declares its vocabulary with the prefix attribute, the same one RDFa Lite defines.[5]ogp.me. The Open Graph protocol[2]W3C (Recommendation of March 17, 2015). RDFa Lite 1.1, Second Edition Its goal is to turn any page into an object in a social graph.[5]ogp.me. The Open Graph protocol It is page metadata, not the product markup Google reads for its rich results.
In a store
A tripod's offer marked up with RDFa Lite and the Schema.org vocabulary. Fictitious example: the store, the product, the reference and the price are invented.
<div vocab="https://schema.org/" typeof="Product">
<h1 property="name">TV-200 travel tripod</h1>
<p>Reference: <span property="sku">STORE-0457</span></p>
<div property="offers" typeof="Offer">
<span>$129.00</span>
<meta property="price" content="129.00" />
<meta property="priceCurrency" content="USD" />
<link property="availability" href="https://schema.org/InStock" />In stock
</div>
</div>
If you have read the entry on microdata, the resemblance is obvious. Where microdata uses itemscope and itemtype, RDFa uses vocab once and typeof on each element; where microdata uses itemprop, RDFa uses property.[2]W3C (Recommendation of March 17, 2015). RDFa Lite 1.1, Second Edition The product is a Product and carries its offer inside, an Offer, declared with property and typeof at once: that is how types nest in this format. The name and the SKU come from the visible text; the price for machines goes in a meta, because the visitor sees "$129.00" and the vocabulary asks for the number and the currency separately.
What RDFa does and microdata does not is mix vocabularies on the same page: with prefix you can declare, for example, Open Graph's in the html tag and keep using Schema.org in the body.[2]W3C (Recommendation of March 17, 2015). RDFa Lite 1.1, Second Edition[5]ogp.me. The Open Graph protocol The cost is the same as with microdata: the markup lives inside the template, and changing themes can take it out without anyone deciding to.
What people often get wrong
That RDFa is an abandoned format that Google no longer reads, and that it has to be removed or redone for that reason alone. Google still names it among the three formats it supports, even though it recommends JSON-LD,[3]Google Search Central (updated December 10, 2025). Introduction to structured data markup in Google Search and its Rich Results Test validates it just like the other two.[4]Search Console Help. Rich Results Test The problem is not the format, but that it says something different from what the page says or from what another markup of the same product says.
How to check it
- Open the source code of a product page and search for
vocab=andtypeof=. If they appear in the body of the page, your theme or an app writes structured data in RDFa.[2]W3C (Recommendation of March 17, 2015). RDFa Lite 1.1, Second Edition - Set aside what is Open Graph. The
metatags withproperty="og:in the head are Open Graph metadata, not product markup.[5]ogp.me. The Open Graph protocol - Run the URL through the Rich Results Test. It reads all three formats, tells you what it detects and with what errors, and also accepts a pasted code snippet.[4]Search Console Help. Rich Results Test
- If the page carries RDFa and JSON-LD at the same time, compare them: the same name, the same price, the same availability.
- If you are going to redo the markup, decide the format once. Google recommends JSON-LD because it is the easiest to maintain when you have many pages.[3]Google Search Central (updated December 10, 2025). Introduction to structured data markup in Google Search
Related concept: microdata
Microdata and RDFa are cousins: Google describes the first as a way of nesting structured data inside HTML content, and the second as attributes on the tags that correspond to visible content.[3]Google Search Central (updated December 10, 2025). Introduction to structured data markup in Google Search The practical difference is one of scope. RDFa is a W3C specification meant for any markup language, not just HTML,[1]W3C (Recommendation of March 17, 2015). RDFa Core 1.1, Third Edition and with prefix it supports several vocabularies at once on the same page.[2]W3C (Recommendation of March 17, 2015). RDFa Lite 1.1, Second Edition For a product page with Schema.org, the two say the same thing; the useful question is not which is better, but whether the one your store has matches what it shows.
To go further, the structured data reading path orders the rest of the terms, and the JSON-LD entry explains the format Google recommends.
Synonyms
- English
- RDFa, RDF in Attributes
- Español
- marcado RDFa
Sources
- [1] W3C (Recommendation of March 17, 2015). RDFa Core 1.1, Third Edition. Accessed . ↑ ↑
- [2] W3C (Recommendation of March 17, 2015). RDFa Lite 1.1, Second Edition. Accessed . ↑ ↑ ↑ ↑ ↑ ↑ ↑
- [3] Google Search Central (updated December 10, 2025). Introduction to structured data markup in Google Search. Accessed . ↑ ↑ ↑ ↑
- [4] Search Console Help. Rich Results Test. Accessed . ↑ ↑ ↑
- [5] ogp.me. The Open Graph protocol. Accessed . ↑ ↑ ↑ ↑
Change history
- First English version.
This definition is published under CC BY 4.0. Reuse this definition freely, crediting Clione with a link to this page.
Related terms
Microdata
What HTML microdata is, how it is written with itemscope, itemtype and itemprop, what Google says compared with JSON-LD and how to check it in your store.
JSON-LD
What JSON-LD is, what @context, @type, @id and @graph mean, why Google recommends it and how to find and check the block on your product page.
Structured data
What structured data is, which pieces make it up, what a store gets from it according to Google, and how to check it matches the product page.
Schema.org
What Schema.org is, who maintains it, how its types and properties are organized, and why it is not the same as the format or as what Google requires.
SKU
What a product SKU is, how it differs from a GTIN and an MPN, how to create one per variant on Shopify or BigCommerce, and where Google asks for it.
WebSite and SearchAction
What WebSite and SearchAction are in Schema.org, why Google retired the sitelinks search box in 2024 and how it uses WebSite for your site name today.
Make your catalog easy for bots to read
Clione fills every product page with what bots read best: the JSON-LD graph with its structured data, the meta description and the FAQs. You review and press Push; then we check your live store so it all stays published.