diff --git a/app/helpers/topics_helper.rb b/app/helpers/topics_helper.rb
index 48306aee5bb..4f4a56b6e7c 100644
--- a/app/helpers/topics_helper.rb
+++ b/app/helpers/topics_helper.rb
@@ -9,13 +9,13 @@ module TopicsHelper
 
   def categories_breadcrumb(topic)
     breadcrumb = []
-
     category = topic.category
+
     if category && !category.uncategorized?
-      if (parent = category.parent_category)
-        breadcrumb.push url: parent.url, name: parent.name
+      breadcrumb.push(url: category.url, name: category.name)
+      while category = category.parent_category
+        breadcrumb.prepend(url: category.url, name: category.name)
       end
-      breadcrumb.push url: category.url, name: category.name
     end
 
     Plugin::Filter.apply(:topic_categories_breadcrumb, topic, breadcrumb)
diff --git a/app/views/topics/show.html.erb b/app/views/topics/show.html.erb
index 5315bddaf67..c5187769bef 100644
--- a/app/views/topics/show.html.erb
+++ b/app/views/topics/show.html.erb
@@ -3,18 +3,16 @@
     <%= render_topic_title(@topic_view.topic) %>
   </h1>
 
-  <% @breadcrumbs = categories_breadcrumb(@topic_view.topic)
-      if @breadcrumbs.present? %>
-  <div id='breadcrumbs'>
-    <% @breadcrumbs.each_with_index do |c,i| %>
-      <div id="breadcrumb-<%=i%>" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"
-        <%-if (i+1) < @breadcrumbs.length%>
-          itemref="breadcrumb-<%=(i+1)%>"
-        <%-end%>>
-        <a href="<%=c[:url]%>" itemprop="url" class='badge-wrapper bullet'>
+  <% @breadcrumbs = categories_breadcrumb(@topic_view.topic) %>
+  <% if @breadcrumbs.present? %>
+  <div id="breadcrumbs" itemscope itemtype="http://schema.org/BreadcrumbList">
+    <% @breadcrumbs.each_with_index do |c, i| %>
+      <div itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
+        <a href="<%= Discourse.base_url %><%= c[:url] %>" class="badge-wrapper bullet" itemprop="item">
           <span class="badge-category-bg"></span>
-          <span itemprop="title" class='category-title'><%=c[:name]%></span>
+          <span class="category-title" itemprop="name"><%= c[:name] %></span>
         </a>
+        <meta itemprop="position" content="<%= i + 1 %>" />
       </div>
     <% end %>
   </div>
@@ -26,7 +24,7 @@
       <div class='crawler-tags-list' itemscope itemtype='http://schema.org/DiscussionForumPosting'>
         <% @tags.each_with_index do |tag, i| %>
           <div itemprop='keywords'>
-            <a  href='<%= "#{Discourse.base_url}/tag/#{tag.name}" %>' rel="tag">
+            <a href='<%= "#{Discourse.base_url}/tag/#{tag.name}" %>' rel="tag">
               <span itemprop='headline'><%= tag.name -%></span>
             </a>
           </div>
@@ -44,7 +42,7 @@
       <% if (u = post.user) %>
         <div class='crawler-post-meta'>
           <span class="creator" itemprop="author" itemscope itemtype="http://schema.org/Person">
-            <a itemprop="url" href='<%= Discourse.base_uri %>/u/<%= u.username %>'><span itemprop='name'><%= u.username %></span></a>
+            <a itemprop="url" href='<%= Discourse.base_url %>/u/<%= u.username %>'><span itemprop='name'><%= u.username %></span></a>
             <%= "(#{u.name})" if (SiteSetting.display_name_on_posts && SiteSetting.enable_names? && !u.name.blank?) %>
             <%
               post_custom_fields = @topic_view.post_custom_fields[post.id] || {}