{"id":82352,"date":"2025-11-05T07:41:58","date_gmt":"2025-11-05T15:41:58","guid":{"rendered":"https:\/\/blog.mozilla.org\/?p=82352"},"modified":"2025-11-13T09:05:56","modified_gmt":"2025-11-13T17:05:56","slug":"ai-tab-groups","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/","title":{"rendered":"Under the hood: How Firefox suggests tab groups with local AI"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"576\" src=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs-1024x576.png\" alt=\"Browser popup showing the \u201cCreate tab group\u201d menu with color options and AI tab suggestions button.\" class=\"wp-image-82462\" srcset=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs-1024x576.png 1024w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs-300x169.png 300w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs-768x432.png 768w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs-1536x864.png 1536w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs-1000x563.png 1000w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs-1280x720.png 1280w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs.png 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Background<\/strong><\/h2>\n\n\n\n<p>Mozilla launched <a href=\"https:\/\/blog.mozilla.org\/en\/firefox\/firefox-tab-groups\/\">Tab Grouping<\/a> in early 2025, allowing tabs to be arranged and grouped with persistent labels. It was the <a href=\"https:\/\/blog.mozilla.org\/en\/firefox\/tab-groups-community\/\">most requested feature<\/a> in the history of <a href=\"https:\/\/connect.mozilla.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Mozilla Connect<\/a>. While tab grouping provides a great way to manage tabs and reduce tab overload, it can be a challenge to locate which tabs to group when you have many open.<\/p>\n\n\n\n<p>We sought to improve the workflows by providing an <a href=\"https:\/\/support.mozilla.org\/en-US\/kb\/how-use-ai-enhanced-tab-groups\" target=\"_blank\" rel=\"noreferrer noopener\">AI tab grouping feature<\/a> that enables two key capabilities:<\/p>\n\n\n\n<ul>\n<li>Suggesting a title for a tab group when it is created by the user.<\/li>\n\n\n\n<li>Suggesting tabs from the current window to be added to a tab group.<\/li>\n<\/ul>\n\n\n\n<p>Of course, we wanted this to work without you needing to send any data of yours to Mozilla, so we used our local <a href=\"https:\/\/blog.mozilla.org\/en\/firefox\/firefox-ai\/speeding-up-firefox-local-ai-runtime\/\">Firefox AI runtime<\/a> and built an efficient model that delivers the features entirely on your own device. The feature is opt-in and downloads two small ML models when the user clicks to run it the first time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Group title suggestion<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Understanding the problem<\/strong><\/h3>\n\n\n\n<p>Suggesting titles for grouped tabs is a challenge because it is hard to understand user intent when tabs are first grouped. Based on our interviews when we started the project, we found that while tab groups are sometimes generic terms like &#8216;Shopping&#8217; or &#8216;Travel&#8217;, over half the time users&#8217; tabs were specific terms such as name of a video game, friend or town. We also found tab names to be extremely short \u2013 1 or 2 words.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"220\" src=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/1-1024x220.png\" alt=\"Diagram showing Firefox tab information processed by a generative AI model to label topics like Boston Travel\" class=\"wp-image-82355\" style=\"width:650px\" srcset=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/1-1024x220.png 1024w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/1-300x64.png 300w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/1-768x165.png 768w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/1-1000x214.png 1000w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/1.png 1110w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\"><strong>Generating a digest of the group<\/strong><\/h3>\n\n\n\n<p>To address these challenges, we adopt a hybrid methodology that combines a modified TF-IDF\u2013based textual analysis with keyword extraction. We identify terms that are statistically distinctive to the titles of pages within a tab group compared to those outside it. The three most prominent keywords, along with the full titles of three randomly selected pages, are then combined to produce a concise digest representing the group, which is used as input for the subsequent stage of processing using a language model.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Generating the label<\/strong><\/h3>\n\n\n\n<p>The digest string is used as an input to a generative model that returns the final label. We used a T5 based encoder-decoder model (flan-t5-base) that was fine tuned on over 10,000 example situations and labels.&nbsp;&nbsp;<\/p>\n\n\n\n<p>One of the key challenges in developing the model was generating the training data samples to tune the model without any user data. To do this, we defined a set of user archetypes and used an LLM API (OpenAI GPT-4) to create sample pages for a user performing various tasks. This was augmented by real page titles from the publicly available <a href=\"https:\/\/commoncrawl.org\/\">common crawl dataset<\/a>. We then used the LLM to suggest short titles for those use cases. The process was first done at a small scale of several hundred group names. These were manually corrected and curated, adjusting for brevity and consistency. As the process scaled up, the initial 300 group names were used as examples passed to the LLM so that the additional examples created would meet those standards.&nbsp;&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Shrinking things down<\/strong><\/h3>\n\n\n\n<p>We need to get the model small enough to run on most computers. Once the initial model was trained, it was sampled to a smaller model using a process known as knowledge distillation. For distillation, we tuned a t5-efficient-tiny model from the token probability outputs of our teacher flan-t5-base model.&nbsp; Midway through the distillation process we also removed two encoder transformer layers and two decoder layers to further reduce the number of parameters.<\/p>\n\n\n\n<p>Finally, the model parameters were quantized from floating point (4 bytes per parameter) to integer 8 bit. In the end this entire reduction process reduced the model from 1GB to 57 MB, with only a modest reduction in accuracy.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Suggesting tabs&nbsp;<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Understanding the problem<\/strong><\/h3>\n\n\n\n<p>For tab suggestions, we identified a couple of approaches on how people prefer grouping their tabs. Some people prefer grouping by domain to easily access all documents for work for instance. Others might prefer grouping all their tabs together when they are planning a trip. Others still might prefer separating their \u201cwork\u201d and \u201cpersonal\u201d tabs.<\/p>\n\n\n\n<p>Our initial approach on suggesting tabs was based on semantic similarity. Tabs that are topically similar are suggested.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><img decoding=\"async\" loading=\"lazy\" width=\"248\" height=\"300\" src=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/2-248x300.png\" alt=\"Browser pop-up suggesting related tabs for a Boston trip using AI-based grouping\" class=\"wp-image-82365\" srcset=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/2-248x300.png 248w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/2.png 668w\" sizes=\"(max-width: 248px) 100vw, 248px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\"><strong>Identifying topically similar tabs<\/strong><\/h3>\n\n\n\n<p>We first convert tab titles to a feature vector locally using a <em>MiniLM<\/em> embedding model. Embedding models are trained so that similar content produces vectors that are close together in embedding space. Using a similarity measure such as cosine similarity, we\u2019re able to assign how closely similar a tab title or url is to another.<\/p>\n\n\n\n<p>The similarity score between an anchor tab chosen by the user and another tab is a linear combination of the candidate tab with the group title (if present) of the anchor tab, the anchor tab title and the anchor url. Using these values, we generate a similarity probability and tabs that have a high probability threshold are suggested to be part of the group.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"81\" src=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/5-1024x81.png\" alt=\"Mathematical formula showing conditional probability using weighted similarity and sigmoid function\" class=\"wp-image-82395\" style=\"width:650px\" srcset=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/5-1024x81.png 1024w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/5-300x24.png 300w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/5-768x61.png 768w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/5-1000x79.png 1000w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/5.png 1186w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>where,<br>w is the weight,<br>t_i is the candidate tab,<br>t_a is the anchor tab,<br>g_a is the anchor group title,<br>u_i is the candidate url<br>u_a is the anchor url, and,<br>\u03c3 is the sigmoid function<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Optimizing the weights<\/strong><\/h3>\n\n\n\n<p>In order to find the weights, we framed the problem as a classification task, where we calculate the precision and recall based on the tabs that were correctly classified given an anchor tab. We used synthetic data generated by OpenAI based on the user archetypes above.<\/p>\n\n\n\n<p>We initially used a clustering approach to establish a baseline and switched to a logistic regression when we realized that treating the group, title and url features with varying importances improved our metrics.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" width=\"512\" height=\"337\" src=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/3.png\" alt=\"Bar chart comparing DBScan and Logistic Regression by precision, recall, and F1 performance metrics\" class=\"wp-image-82375\" style=\"aspect-ratio:1.5192878338278932;width:512px;height:auto\" srcset=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/3.png 512w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/3-300x197.png 300w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/figure><\/div>\n\n\n<p>Using logistic regression, there was an 18% improvement against the baseline.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Performance<\/strong><\/h3>\n\n\n\n<p>While the median number of tabs for people using the feature is relatively small (~25), there are some \u201cpower\u201d users whose tab count reaches the thousands. This would cause the tab grouping feature to take uncomfortably long.&nbsp;<\/p>\n\n\n\n<p>This was part of the reason why we switched from a clustering based approach to a linear model.&nbsp;<\/p>\n\n\n\n<p>Using our performance framework, we found that the p99 of running logistic regression compared to a clustering based method such as KMeans improved by 33%.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"512\" height=\"337\" src=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/4.png\" alt=\"Bar chart comparing KMeans and Logistic Regression using percentile metrics p50, p95, and p99\" class=\"wp-image-82385\" srcset=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/4.png 512w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/10\/4-300x197.png 300w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/figure><\/div>\n\n\n<p>Future work here would involve improving F1 score. These could be by adding a time-related component as part of the inference (we are more likely to group tabs together that we\u2019ve opened at the same time) or using a fine-tuned embedding model for our use case.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Thanks for reading<\/strong><\/h2>\n\n\n\n<p>All of our work is open source. If you are a developer feel free to <a href=\"https:\/\/github.com\/mozilla\/smart-tab-grouping\" target=\"_blank\" rel=\"noreferrer noopener\">peruse our source code<\/a> on our model training, or view our <a href=\"https:\/\/huggingface.co\/Mozilla\/smart-tab-topic\" target=\"_blank\" rel=\"noreferrer noopener\">topic model on Huggingface<\/a>.<\/p>\n\n\n\n<p>Feel free to <a href=\"https:\/\/support.mozilla.org\/en-US\/kb\/how-use-ai-enhanced-tab-groups\" target=\"_blank\" rel=\"noreferrer noopener\">try the feature<\/a> and let us know what you think!<\/p>\n\n\n\n<a class=\"ft-c-inline-cta\" href=\" https:\/\/www.firefox.com\/browsers\/mobile\/app\/?product=firefox&#038;campaign=fx146blog\">\n  <div class=\"ft-c-inline-cta__media\">\n  <img loading=\"lazy\" width=\"800\" height=\"800\" src=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2021\/10\/Visual-Guidelines-800x800.png\" class=\"attachment-1x1 size-1x1\" alt=\"\" decoding=\"async\" srcset=\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2021\/10\/Visual-Guidelines-800x800.png 800w, https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2021\/10\/Visual-Guidelines-150x150.png 150w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>  <\/div>\n  <div class=\"ft-c-inline-cta__content\">\n     <h3>Take Firefox with you<\/h3>      <span>Download Firefox Mobile<\/span>   <\/div>\n<\/a>\n","protected":false},"excerpt":{"rendered":"<p>Background Mozilla launched Tab Grouping in early 2025, allowing tabs to be arranged and grouped with persistent labels. It was the most requested feature in the history of Mozilla Connect. While tab grouping provides a great way to manage tabs and reduce tab overload, it can be a challenge to locate which tabs to group [&hellip;]<\/p>\n","protected":false},"author":2012,"featured_media":82462,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30,464303],"tags":[],"coauthors":[464362,464291],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Under the hood: How Firefox suggests tab groups with local AI<\/title>\n<meta name=\"description\" content=\"Mozilla\u2019s tab grouping feature uses AI to automatically organize and label browser tabs, making it easier to manage and find open pages.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/\",\"url\":\"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/\",\"name\":\"Under the hood: How Firefox suggests tab groups with local AI\",\"isPartOf\":{\"@id\":\"https:\/\/blog.mozilla.org\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs.png\",\"datePublished\":\"2025-11-05T15:41:58+00:00\",\"dateModified\":\"2025-11-13T17:05:56+00:00\",\"author\":{\"@id\":\"https:\/\/blog.mozilla.org\/en\/#\/schema\/person\/933dd0696eabb333dc88e8f7bd78375c\"},\"description\":\"Mozilla\u2019s tab grouping feature uses AI to automatically organize and label browser tabs, making it easier to manage and find open pages.\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/#primaryimage\",\"url\":\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs.png\",\"contentUrl\":\"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs.png\",\"width\":1920,\"height\":1080,\"caption\":\"Browser popup showing the \u201cCreate tab group\u201d menu with color options and AI tab suggestions button.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.mozilla.org\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Under the hood: How Firefox suggests tab groups with local AI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.mozilla.org\/en\/#website\",\"url\":\"https:\/\/blog.mozilla.org\/en\/\",\"name\":\"The Mozilla Blog\",\"description\":\"News and Updates about Mozilla\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.mozilla.org\/en\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.mozilla.org\/en\/#\/schema\/person\/933dd0696eabb333dc88e8f7bd78375c\",\"name\":\"Vasish Baungally\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.mozilla.org\/en\/#\/schema\/person\/image\/a1ae45856c4b6e3b680475fbb01e0d57\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0d16df40bbaf34541837f41d08d34810?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0d16df40bbaf34541837f41d08d34810?s=96&d=mm&r=g\",\"caption\":\"Vasish Baungally\"},\"url\":\"https:\/\/blog.mozilla.org\/en\/author\/vbaungallymozillacom\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Under the hood: How Firefox suggests tab groups with local AI","description":"Mozilla\u2019s tab grouping feature uses AI to automatically organize and label browser tabs, making it easier to manage and find open pages.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/","url":"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/","name":"Under the hood: How Firefox suggests tab groups with local AI","isPartOf":{"@id":"https:\/\/blog.mozilla.org\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/#primaryimage"},"image":{"@id":"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs.png","datePublished":"2025-11-05T15:41:58+00:00","dateModified":"2025-11-13T17:05:56+00:00","author":{"@id":"https:\/\/blog.mozilla.org\/en\/#\/schema\/person\/933dd0696eabb333dc88e8f7bd78375c"},"description":"Mozilla\u2019s tab grouping feature uses AI to automatically organize and label browser tabs, making it easier to manage and find open pages.","breadcrumb":{"@id":"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/#primaryimage","url":"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs.png","contentUrl":"https:\/\/blog.mozilla.org\/wp-content\/blogs.dir\/278\/files\/2025\/11\/Distilled-Header_AI-Tabs.png","width":1920,"height":1080,"caption":"Browser popup showing the \u201cCreate tab group\u201d menu with color options and AI tab suggestions button."},{"@type":"BreadcrumbList","@id":"https:\/\/blog.mozilla.org\/en\/firefox\/ai-tab-groups\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.mozilla.org\/en\/"},{"@type":"ListItem","position":2,"name":"Under the hood: How Firefox suggests tab groups with local AI"}]},{"@type":"WebSite","@id":"https:\/\/blog.mozilla.org\/en\/#website","url":"https:\/\/blog.mozilla.org\/en\/","name":"The Mozilla Blog","description":"News and Updates about Mozilla","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.mozilla.org\/en\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.mozilla.org\/en\/#\/schema\/person\/933dd0696eabb333dc88e8f7bd78375c","name":"Vasish Baungally","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.mozilla.org\/en\/#\/schema\/person\/image\/a1ae45856c4b6e3b680475fbb01e0d57","url":"https:\/\/secure.gravatar.com\/avatar\/0d16df40bbaf34541837f41d08d34810?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0d16df40bbaf34541837f41d08d34810?s=96&d=mm&r=g","caption":"Vasish Baungally"},"url":"https:\/\/blog.mozilla.org\/en\/author\/vbaungallymozillacom\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/en\/wp-json\/wp\/v2\/posts\/82352"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/en\/wp-json\/wp\/v2\/users\/2012"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/en\/wp-json\/wp\/v2\/comments?post=82352"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/en\/wp-json\/wp\/v2\/posts\/82352\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/en\/wp-json\/wp\/v2\/media\/82462"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/en\/wp-json\/wp\/v2\/media?parent=82352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/en\/wp-json\/wp\/v2\/categories?post=82352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/en\/wp-json\/wp\/v2\/tags?post=82352"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mozilla.org\/en\/wp-json\/wp\/v2\/coauthors?post=82352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}