This past May, we shared our vision for the future of Firefox. Starting today, you can try out the next design evolution of Firefox in Nightly.
It’s still Firefox, now with a more cohesive look and feel across tabs, menus, panels, and other browser surfaces. You’ll notice softer tab shapes, a warmer color palette, updated icons, and – after hearing from many of you – the return of Compact Mode and new theme options to make Firefox your own.
Many of you have already spotted pieces of the new design in Nightly over the past few months. Now they’re coming together into one complete experience.
You’ll continue to see updates over the coming weeks as we polish the new Firefox design before it reaches Firefox users more broadly later this year. As you browse, we’re especially interested in any visual or functional issues you encounter.
Keep an eye out for things like:
Icons, spacing, and alignment
Themes and personalization
Different window sizes and display scaling
Keyboard navigation
Screen readers and other accessibility features
Different languages and layouts
Found a bug?
If something doesn’t look or behave as expected, please file a bug in Bugzilla.
When possible, include:
Steps to reproduce the issue
Screenshots or screen recordings
Your operating system and Nightly version
If you have broader thoughts or questions about your experience, join the discussion on Mozilla Connect.
Thanks for using Nightly and helping us improve Firefox. Every bug report helps us identify issues and continue refining the new Firefox design before it reaches Firefox users more broadly later this year.
Morgan added a new accessibility-specific, front-end review skill to mozilla central! 🎉 You can read about it, and learn how to use it in the accessibility review source docs.
Add-ons / Web Extensions
Addon Manager & about:addons
Migrated addon-page-header and addon-card action buttons to the reusable moz-button web component as part of the ongoing Nova restyling of about:addons – Bug 2042200 / Bug 2042204
Extended moz-page-nav-button with a forwarded title property to fix an accessibility issue where the component lacked a label in collapsed state; Landed in Firefox 153, and uplifted to Firefox 152 for about:settings which was already riding the 152 release train – Bug 2040971
Fixed a shutdown-timing bug where a pending GMP update-check timer could fire after XPCOMShutdownThreads started, causing a pref write assertion; Fixed in Firefox 153 – Bug 2043803
WebExtensions Framework
Fixed MV2 content scripts incorrectly injecting into guarded hosts because MozDocumentMatcher::MatchesURI was not consulting CheckGuarded when mCheckPermissions was false; Fixed in Firefox 153 – Bug 2041393
Added support for accessing ObservableArray attributes (such as adoptedStyleSheets) from XrayWrappers and extension content scripts, unblocking extensions that rely on this Web API; Fixed in Firefox 153 – Bug 1751346
Wired runtime_blocked_hosts and runtime_allowed_hosts enterprise policy settings through ExtensionSettings to allow administrators to restrict extension host permissions on managed devices, starting in Firefox 153 – Bug 1805205
Thanks to Mike Kaply for implementing this enterprise policy enhancement.
WebExtension APIs
Fixed promiseTabWhenReady blocking indefinitely on discarded tabs, preventing cleanup of associated resources and potentially causing memory leaks; Fixed in Firefox 153 – Bug 1653876
Fixed webNavigation.onCommitted being dispatched twice for cross-origin iframes loaded under Fission, caused by a redundant OnStateChange trigger firing in addition to OnLocationChange; Fixed in Firefox 153 – Bug 1750196
Julian Descottes [:jdescottes] migrated the markup view to HTML (from XHTML) to fix an issue when editing the markup (CodeMirror 6 does not support XHTML) (#2028058)
Harshit enabled video overlay detection in Nightly 153, allowing you to use the context menu to control videos on more pages! We plan on letting this ride out in Firefox 153.
As part of the work for the Project Nova about:addons page restyling, the about:addons sidebar has been migrated to the moz-page-nav and moz-page-nav-button reusable components, improving accessibility and visual consistency with the Firefox Desktop about:settings page – Bug 1881767
WebExtensions Framework
Implemented WebExtensions negative permissions infrastructure, providing the foundations for enterprise policy “blocked host permissions” features – Bug 1745823
Restricted host permission changes for MV3 extensions force-installed via enterprise policy (matching similar behaviors provided by Chrome enterprise policy behaviors) – Bug 1904054
Thanks to Mike Kaply for the implementation of this enterprise policy enforcement feature.
WebExtension APIs
Fixed handling of <all_urls> as an API permission in Manifest V3, ensuring the permission is correctly initialized on extension install – Bug 1758306
Sameem updated the “Take Element Screenshot” command from WebDriver Classic to crop screenshots of elements which exceed the viewport. This aligns with the specification and avoids errors when attempting to capture huge elements.
Much has happened in the last 2 weeks! Here’s a full bug list, and here are some highlights.
Dre fixed the List widget that was creating a new list too eagerly on the New Tab Page (2033592) — prevents accidental list creation and improves the Lists UI reliability.
Reem Hamoui added key dates state to the Sports widget, enabling the Sports card to surface event deadlines/key-date highlights on New Tab so sports users see timely date info.
Scott Downe added a reusable Newtab widget base component to centralize lifecycle, focus/keyboard handling, DOM templates, and telemetry hooks, reducing duplication and making widget behavior more consistent; see Newtab widget base component.
Dre converted per-widget expansion handling to a shared widget expansion handler to unify expand/collapse state management and prevent widgets from incorrectly retaining or losing expanded state; see Convert widget expansion handling to shared widget expansion.
Scott Downe moved widget menu items within New Tab widgets to standardize menu ordering and action grouping, so users find Add/Remove/Configure entries in expected positions across platforms.
Dre fixed a World Clock city search bug for the word clocks widget, restoring expected search filtering/matching so city lookups return correct results.
Scott Downe fixed an issue where the New Tab small weather widget size change didn’t always apply by correcting the widget size update path (JS/CSS layout interactions), improving consistent rendering for small-tile weather across responsive breakpoints and platforms; see Newtab small weather widget size change doesn’t always work.
Nina Pypchenko [:nina-py] added a group stage section to match highlights in the sports widget on New Tab so users now see stage-aware grouping and stage labels on match highlight cards, making tournament context (group vs knockout) visible while browsing highlights.
Maxx Crawford added WCW OMC message strings so World Cup widget messaging flows on New Tab now display the correct copy (localized where available) instead of falling back to missing-text behavior.
Maxx Crawford removed the persistent browser logo when all new-tab features (Top Sites, widgets, content feed) are disabled by adding a conditional render guard in the New Tab component, preventing an orphaned logo (2041033).
Irene Ni shipped multiple visual fixes for the Sports widget Sports widget – various visual fixes (spacing, truncation, icon alignment, clipping) to improve readability and layout on constrained viewports.
Firefox Profiler now has a CLI! We also added a profiler-analysis skill to the Firefox codebase. Once you capture a performance profile, you can ask Claude or an AI to analyze it by providing a link or local path. You can use it to analyze a performance regression or debug an issue if you have a profile at hand.
Drew landed several Suggest improvements: realtime suggestions colors, sports suggestions received World Cup tweaks, and online Suggest via OHTTP was enabled for eligible users in Firefox 153.
James fixed soft-block counting to track autofill dismisses, rather than consecutive backspaces on the same autofill, and added telemetry to measure URLs reintegration after blocking.
Moritz continued refactoring the urlbar code: converted some of the js modules to not be system modules, fixed dynamic results templates, incorrect reuse of result rows, and keyboard shortcuts on the unified search button panel.
Marco removed some unnecessary database transactions, fixed the bookmarks panel folder dropdown on Windows, and resolved several intermittent test failures.
Thanks to Sam Johnson who fixed the bookmark edit panel showing “mobile” instead of “Mobile Bookmarks”.
We’ve disabled the CSS filter implicitly applied to WebExtension pageAction SVG icons across all release channels starting in Firefox 152, completing the deprecation
NOTE: The blog post published at WebExtensions API changes in Firefox 149-152 provides to extensions developers more details about this deprecation and links to the related MDN docs.
Fixed long-standing regression on the autocomplete and datalist popups for extension inline options pages on about:addons (introduced in Firefox 68 by Bug 1532724, fix shipping in Firefox 152) – Bug 1595158
WebExtensions Framework
Fixed access to web-accessible resources declared with <all_urls> from sandboxed documents (null-principal URLs), restoring extension redirects from the context-menu search flow, starting in Firefox 152 – Bug 2033905
WebExtension APIs
Added exhaustive test coverage for tabs.move() against additional edge cases related to split-view tabs – Bug 2029092
DevTools
Andreas Farre improved the Session History tab in the Application panel (still behind devtools.application.sessionHistory.enabled)
made sure that calls to History.replaceState are reflected in the UI (#2037359)
Julian Descottes [:jdescottes] fixed the most frequent DevTools crash we were observing in Telemetry, adding a guard against IDBTransaction errors when retrieving breakpoints in the Debugger (#2030260)
Julian Descottes [:jdescottes] reduced the overhead we had because of network requests monitoring by only decoding response content when the user actually want to see the response (#2026228)
Sylvestre ported some linters (e.g. file-whitespace, test-manifest-toml, license, file-perm, rejected-words & more) to Rust to help improve the runtime of the code review bot.
We did our first region-specific trainhop on May 11th (just 15% of the US), and turned on HNT Nova (and sometimes Widgets) for those clients to get some advance-data of its behaviour in the wild! A note that HNT Nova gets turned on for everybody when Firefox 151 ships on May 19th.
We’ll be launching a similar experiment in the DE, probably on May 12th, also at 15% population.
Most of the team is heads down building out a sports-tracking widget, attempting to get that ready in time to be generally available for the upcoming World Cup event.
Dre landed a new world clock widget, which is currently off by default, but pretty snazzy!
The profile backup mechanism has been enabled by default for all desktop platforms in Nightly, as well as Beta! The current plan is to have this ride out to Firefox 151 for Windows, macOS and Linux on May 18th!
This feature, when enabled, will create a copy of your profile data in the background and store it in a single file on your file system that you can restore from.
You will be able to manage this feature in Settings under Sync (for now)
As followups to the recent addition to the WebExtension tabs API to support the new SplitView tabs feature, tabs.group() and tabs.ungroup() have been fixed to work correctly with split view tabs, and fixed split views being prepended instead of appended to tab groups when adopted into a new window – Bug 2029099 / Bug 2029534
Adaptive autofill has been enabled on Nightly.
Previously, autofill only completed domains (e.g. typing red autofilled reddit.com). Now it can also complete full URLs for pages you visit often (e.g. red → reddit.com/r/firefox), learning from what you actually click in the address bar. If a suggestion isn’t helpful, you can now dismiss it so autofill learns what not to show you too.
Markus Stange [:mstange] implemented dynamic toolbar on top in RDM (#1978145), but also implemented some static skeleton UI so it’s closer to what we actually have in Firefox for Android
dynamic toolbar is behind a pref: devtools.responsive.dynamicToolbar.enabled
it can be put on top by setting devtools.responsive.dynamicToolbar.onTop, otherwise it’s at the bottom
In preparation for the Project Nova restyling of the about:addons page, we have refactored about:addons into separate per-component ES modules, splitting the monolithic aboutaddons.js and aboutaddons.html into 16 dedicated component files under components/ (with no behavior or UI changes) – Bug 2032014
NOTE: if you have working on patches with changes to about:addons internals it is very likely you’ll need to rebase and solve merge conflicts hit on top of this refactoring, the internals are still largely the same as before but don’t hesitate to reach out to the Addons team if you have doubts / questions or need help to figure out how to adapt your patch of top of these changes
WebExtensions Framework
Fixed exportFunction to preserve the constructibility of the wrapped function instead of unconditionally making all exported functions implicitly as constructors – Bug 2033173
Thanks to Gregory Pappas for contributing this improvement to the Content Scripts’ Xray Wrappers helpers!
Fixed a Firefox 151 regression where extension content scripts accessing location.ancestorOrigins caused subsequent page script reads of the same property to fail with “Permission denied”, breaking sites like Gmail – Bug 2034329
Thanks to Simon Farre for promptly investigating and fixing this recent regression!
WebExtension APIs
Updated sessions.getRecentlyClosed() to remove the hardcoded cap when maxResults is omitted – Bug 1392125
Shoutout to Amine Zroual for contributing this enhancement to the sessions WebExtensions API!
DevTools
Artem Manushenkov fixed an issue where autosuggestion popup was removing overridden indicators from properties in the Inspector (#1983408)
Andrea Marchesini [:baku] fix DevTools cookie header serialization for long cookies, which could lead to cookies not being visible in Netmonitor (#2031299)
Julian Descottes [:jdescottes] fixed a toolbox crash that was happening we couldn’t find a localization file (e.g. when using a language pack on Nightly) (#2028930)
Nicolas Chevobbe [:nchevobbe] improved @container tooltip so it show the value of variables used in style()(#2030239), has enough contrast in dark mode (#2033782) and contains a link to select the container (#2031688)
Thanks to volunteer contributor Anthony Mclamb for his patch that disables the legacy EdgeHTML Edge migrator! Once that finishes rolling out, presuming no surprises, we’ll go ahead and remove the migrator entirely.
New Tab Page
Nova for New Tab has ridden the trains to Beta! It will be enabled by default, globally, when Firefox 151 goes out to release on May 19th
It’s possible that we’ll do a train-hop coupled with an experiment to enable HNT Nova for a few clients a bit earlier.
Maxx Crawford enabled Nova designs for New Tab, rolling out the updated layout, widgets, and customization panel behind HNT Nova flags.
Marco has fixed a couple of issues with the places databases to try and improve stability. This should help with avoiding users losing bookmarks or favicons.
Work continues on the new separate search bar to improve the functionality, e.g. allowing middle click to perform a search in a new tab, avoiding performing a search when adding a search engine.
Work also continues on the new Nova layouts.
Smart Window
uplifted 10 bugs to 150.0.1 dot release addressing initial user feedback from diary study and Connect
The error pages shown when a server sends back an invalid response header or an unsupported content encoding now display accurate, context-specific messages. The invalid response header page also gained a helpful list of next steps. – 2027209
In progress: The error page illustrations are being replaced with new artwork, and the system now supports per-illustration size configuration, giving each image the ability to define its own appropriate dimensions. – 2031837
The redesign of Firefox Settings is now enabled by default in Nightly! With this change, we are making it easier for people to customize Firefox and discover the controls that matter most to them. The redesign improves navigation and organization, updates labels and descriptions, and uses a new underlying architecture that will make Settings easier to update over time.
Firefox Settings have grown a lot over the years. Our research showed that some areas had become crowded and more difficult to navigate, and that important controls could be hard to discover. Some terminology and layouts had also become inconsistent over time. Internally, the existing structure also made Settings harder to maintain and evolve over time.
Here are some of the changes you’ll notice:
More pages within Settings, with less content per page
Clearer grouping and better flow between related controls
Improved labels and helper text
Consistent use of our design system throughout
The new Settings navigation and layout
While the organization of Settings has changed, all your existing choices and preferences remain in place. You can always use the search bar to jump straight to what you’re looking for.
We plan to ship the redesign to the Release channel in Firefox 152. You will continue to see changes in Nightly, and we welcome feedback, especially in Mozilla Connect.
Customization has long been a core part of Firefox, and this redesign is intended to continue improving how people discover and manage their browser settings. We appreciate all of the feedback from the community so far on this project and look forward to refining the experience with your input!
Removed obsolete migration logic that forced distribution language packs to be reinstalled when upgrading from Firefox versions older than 67 – Bug 2000797
Thanks to Aloys for contributing the changes needed to cleanup this old XPIProvider migration logic
WebExtensions Framework
Fixed a regression where WebRTC permission popups were queued and suppressed while an extension popup was open – Bug 1982832
WebExtension APIs
Fixed an edge case where tabs.move would revert splitview tabs order while moving splitview tab to a new window – Bug 2028832
Fixed windows API reporting window type normal instead of popup for windows opened via window.open() – Bug 2030631
Thanks to Brandon Lucier for contributing this small but very much appreciated fix to the windows WebExtensions API!
Henrik Skupin landed support for browser.setClientWindowState, originally started by Dan and continued by Liam DeBeasi, with final fixes and improvements completed after earlier contributors were unable to continue.
This also updated some global styling for card, message bar, text input border radiuses/colors and the moz-promo component got a refactor with better support for image styling by default
Jules Simplicio has been updating variable names in the Figma Nova Components/Styles files so our design token naming is consistent between Figma and central (so we can run our import script for more Nova automation)
UX Fundamentals
Felt Privacy error pages now support more NSS errors instead of falling through to the legacy page. Updated introductory text for the denied-port-access error. – 2024150
Fixed a test in browser_aboutCertError.js that was failing on Linux opt standalone and removed the platform skip. – 2028651
Added clock skew detection to the Felt Privacy error pages. When a certificate error is caused by a wrong system clock, the Felt Privacy error pages now show the same dedicated clock-skew message that the legacy error pages had, and helps guide users to correct their system time. – 2025049
Fixed misaligned bullet points in the “What can you do?” section of Felt Privacy network error pages, restoring correct visual indentation for that list. – 2028632
Improvements to tabs.move() split views support: extensions can now swap tabs within a split view, and passing a list of tabs that explicitly separates split-view members will properly unsplit the view to honor the requested ordering – Bug 2016762 / Bug 2022549
Alexandre Poirot [:ochameau] improved performance of the Inspector Rules view by supporting incremental updates, making some perf test 2 times faster (#2018538)
The Tab Notes feature is now live in Firefox 149 in Firefox Labs! We have a few tweaks and fixes coming in Firefox 150 and 151, but we’re mostly collecting feedback from users.
Fixed a long-standing issue where extension paths stored in extensions.json (and addonStartup.json.lz4) became incorrect after restoring a Firefox profile to a different location and causing all previously installed add-ons to fail to load – Bug 1429838
DevTools
geppy renamed some of our CSS variables to be more explicit (#1767617)
Sebastian Zartner [:sebo] move the :visited pseudo-class to element-specific section in the Inspector pseudo-class (:hov) panel (#2017985)
Ben improved the RDM “Add Custom Device” form by making sure it worked for any kind of locale (#1705177)
Nicolas Chevobbe [:nchevobbe] added a <global> node on objects which are not from the top-level debugged page (it’s always visible in the browser console/browser toolbox) (#1962343)
Nicolas Chevobbe [:nchevobbe] added proper autocomplete (including things like interpolation/color space) for linear-gradient() (and repeating-linear-gradient()) (#2025761)
The main impact of this is that when changing globals in head.js files, VS Code’S ESLint reporting will see the changes when you have the test files open that use the head.js file.
Thanks to overholt, macOS Nightly now has support for sharing the current tab’s URL via QR Code (Right-click tab, Share > Generate QR Code). This is held to Nightly for now.
Fixed a structuredClone regression in the MV2 userScripts sandbox, bringing it in line with the fix already applied to content scripts and MV3 userScripts sandboxes, fix applied in Nightly 150 and uplifted to Beta 149 – Bug 2020773
Fixed a tab crash triggered by calling Document.parseHTMLUnsafe() from a browser extension content script (due to an assertion failure hit because parseHTMLUnsafe was wrongly trying to create a document that belongs to the expanded privileged principal that originated the call). The changes applied is now making sure parseHTMLUnsafe will use the webpage document’s principal (and prevent the crash as a side effect of that) – Bug 1912587
Fixed a regression where the load event on about:blank iframes would not fire when a content script injected a style element (regressed in Firefox 148 as a side effect of the changes applied by Bug 543435, fix landed in Nightly 140 and uplifted to Beta 149 and Release 148) – Bug 2020300
Thanks to Vincent Villa for promptly investigating and fixing this regression!
WebExtension APIs
As part of followups related to the work to allow action.openPopup calls without user activation, action.openPopup() will reject the requests when another panel, context menu, doorhanger, or notification is already open in the window – Bug 2022281
As part of followups to the work in support of the splitView mode support introduced in the tabs API, tabs.move() has been tweaked to correctly return all specified tabs moved in a split view – Bug 2022372
Addon Manager & about:addons
Fixed a rendering regression where the context menu on about:addons cards would appear with a transparent background at non-default zoom levels – Bug 2006926
Thanks to Botond Ballo for investigating and fixing this small rendering regression!
Sebastian Zartner [:sebo] added a new Element-specific pseudo-classes section in the pseudo-class panel and added support for the new :open pseudo class (#2014442)
Luca Greco fixed an issue where the new tab page was broken for users who had moved their profile to a new directory. Special shout-out to Scott for driving that one over the line and getting the fix uplifted to Beta!
Maxx Crawford added the first version of a refined grid system for Nova, introducing column-based container queries and CSS tokens for more consistent responsive New Tab layouts. This is currently off by default.
Mike Conley enabled the pref to communicate with MARS over OHTTP by default so New Tab network calls use OHTTP by default, reducing IP exposure for all channels. This was already enabled on Beta and Release via Nimbus, but this patch is the pref flip that will ride the trains.
Nathan Barrett landed sections layout support for Nova, to refine section spacing and ordering using the new grid for a cleaner, denser above-the-fold.
Dustin Whisman updated some design token names for consistency (Bug 2013342):
–font-size-heading-* now a font-size variant (was –heading-font-size)
–card-border-color, –card-box-shadow, –card-box-shadow-hover, –popup-box-shadow, –tab-box-shadow (were nested as variants previously and now are under their component name)
UX Fundamentals
Added keyboard autofocus to the “Try Again” button in Felt Privacy error pages so users who land on an error page can immediately press enter to retry. (2021447)
Added keyboard access keys to the three primary error page buttons: G (Go Back), T (Try Again), and P (Proceed to Site). (404501)
In progress: refactoring net error illustrations into a shared object and adding alt text so assistive technology can read out meaningful descriptions. (2022033)
In progress: adding improved messaging to the file-not-found error page. (2018850)
In progress: restoring the error page for Work Offline mode so users see messaging that accurately reflects that they’re in Offline mode, not that there’s a network problem. (
Starting with Firefox 150, Firefox Desktop’s theming internals have improved, allowing custom background images provided by built-in and custom themes to extend over the sidebar UI background – Bug 1952602.
Thanks to Emilio for his work on these Firefox theme improvements!
Alpenglow theme – current (left, Firefox = 150) behavior.
We deprecated the built-in CSS filter for WebExtensions and changed how we theme extension icons – Bug 2001318.
If you spot any issues with extension icons, please file a bug here.
The built-in CSS filter was implicitly applied to all extensions’ page action SVG icons in dark mode. It did not provide an official opt-out mechanism, resulting in poor contrast for some extension icons.
As part of the work for the SmartWindow mode, a new dismissible info messagebar will be shown in about:addons themes list view to users opting into SmartWindow that Firefox windows, the SmartWindow theming notice will be highlighting for the user that the SmartWindow mode will use their own custom theming – Bug 2010685
Special thanks to Maile Lucks and Chloe Zhou for gathering the clarifications needed and working with the SmartWindow team to reach the final agreement on the desired behaviors.
Fixed “Available Updates” about:addons view not refreshing automatically when the “Check for updates” action is clicked while the “Available updates” is already selected until manually switching about:addons view or reloading the about:addons tab – Bug 1578182
WebExtensions Framework
As part of hardening work on the WebExtensions internals, a new option has been added to Cu.Sandbox constructor to opt-in/opt-out from freezing all the built-ins available in the Sandbox global – Bug 2017957
WebExtension APIs
As part of the work to support Firefox Split View, additional changes have been applied to make sure that Split View mode is preserved when extensions are moving all tabs part of a Split View into a new window – Bug 2017148 / Bug 2017768 / Bug 2016754
Fixed a regression (introduced in Firefox 149 by Bug 2013389 changes) which was reported to be breaking the Clipboard2File extension. The fix has been landed in Nightly 150 and uplifted to 149 – Bug 2017797
DevTools
Sebastian Zartner [:sebo] added a button in the Storage panel to delete all the items of a given storage type (Local Storage, Cookies, …) (#1349533)
Nicolas Chevobbe [:nchevobbe] made position-area marked as inactive when the element is not absolutely positioned or doesn’t have a default anchor (#1895185)
Alexandra Borovova implemented the “browser.setDownloadBehavior” command, which allows clients to allow or prohibit the downloads and also set a custom download folder. This behavior can be configured per session or per user contexts.
FYI to developers that stylelint changes now go to #desktop-theme-reviewers
Search
Drew Willcoxon finished his work on Online Suggest over OHTTP. It has been enabled by default in Nightly since the 149 cycle, improving privacy for remote suggestions while we validate quality and latency at scale.
Daisuke Akatsuka changed sponsored suggestions to no longer display the destination URL, reducing visual clutter and emphasizing brand/title. Can be tuned via remote config as we watch CTR and trust metrics.
Voice Control users can once again focus the URL bar via “click” or numbered commands — fixed by Morgan Rae Reschenberg.
Dale Harvey continued his work on the unified trust button and panel. The HTTP-only “Not Secure” shield now consistently shows the red slash even when tracking protection is off, avoiding misleading site trust signals.
Justin Peter contributed a bunch of fixes:
Unit conversion in the URL bar now handles the degree symbol (°) so temperature math returns results as expected.
Imperial unit conversion precision is improved (e.g., inches/feet/miles rounding), yielding more accurate answers.
Added more units and abbreviations to conversion, broadening coverage of everyday queries.
Update messaging on file:// not-found error pages. The intro will show the actual file path instead of “local file”, and the “What can you do?” section gives file-oriented advice rather than website-oriented advice.
In today's blog, we are excited to show you a new gameplay feature that will come to American Truck Simulator with the arrival of Road Trip. Let's take a closer look at Atlas!
We know many of you have been wondering what new gameplay experiences Road Trip will bring, and today we're excited to introduce Atlas. Designed around exploration, Atlas encourages players to discover, visit, and learn about selected locations across the world of American Truck Simulator. Along the way, you may come across famous landmarks or hidden gems you may have overlooked before - and even learn something about them!
You can access the Atlas interface from your in-game desktop under the Navigation tab. At the heart of this feature are Tourist Boards scattered across the map. By selecting a Tourist Board in the Atlas interface, you'll be directed to the board via your GPS. Once you arrive, several exploration locations will be revealed. These locations are typically spread throughout the surrounding region and showcase some of its most notable highlights.
Your objective will be to visit every exploration location associated with the Tourist Board. These include Points of Interest, Viewpoints, and Photo Trophies.
Points of Interest are a new type of discoverable location. Unlike Viewpoints or Photo Trophies, there's no need to stop or activate a trigger - simply driving through the designated area is enough to mark it as explored. The game also lets you revisit each explored Point of Interest through the Atlas or Gallery, where you can view a live camera feed of the location. If your vehicle is parked there, you'll see it in the live view.
Whenever you've explored a new location, you'll be notified by a new on-screen widget, which can be enabled or disabled in the widget settings. A short celebratory sound effect will play, and the location will be marked as explored. You'll also unlock a brief description with interesting information about the place, which you can revisit at any time through the Atlas interface.
Once you've explored every location connected to a Tourist Board, the board itself will be marked as completed. As a reward, you'll receive a postcard with a unique design inspired by the region you've just explored, which you can display on your vehicle's dashboard. You can also return to the Atlas interface at any time to review the locations you've discovered, read their descriptions, or replay any unlocked cutscenes.
This feature will become available to players owning any Road Trip DLC, so either the Ford Car Pack or the RAM & Dodge Car Pack. However, Atlas is not limited to only cars, as you will also be able to enjoy this feature behind the wheel of a truck!
With the introduction of Atlas, you will be able to find Tourist Boards in California, and in the Oregon, Washington, Idaho, Montana, Wyoming, and South Dakota DLCs. We will then be gradually adding them to all the other states as well.
We hope you are excited about this new gameplay feature! If you are, make sure to add the Ford Car Pack and the RAM & Dodge Car Pack to your Steam wishlist.
It’s happening, v100 is here. Yay! It contains nothing overly drastic, but it’s still a nice assortment of enhancements & bug fixes for users of all OS.
A big thanks to all the contributors over the years, but especially for the people who have contributed over the last three months. This yielded continued macOS builds and several bug fixes that I hadn’t gotten around to tackling myself.
can download the source code or one of the packages. The Windows packages as well as the Linux AppImage are available already. The other Linux packages & the macOS disk image are still being built and will be available over the course of the next couple of hours.
Version 100.0 “Do Hot Girls Like Chords” 2026-07-05
New features and enhancements
all: added new scalable (SVG) application icons for all applications, replacing the existing pixmap (PNG, ICO) icons. Icons from Sarreq Teryx. Implements #6253.
mkvmerge: MP4 reader: track names are now read from the track’s user-data atoms (trak → udta → name) if present. Implements #6274.
MKVToolNix GUI: executing actions configuration, type “play audio file”: added a slider to make configuration more intuitive. Implemented by #6267.
MKVToolNix GUI: executing actions: macOS only: the GUI will now use bundled audio files for “play audio file” actions that Qt can play instead of using macOS’s system sounds. Implemented by #6268. Fixes #6264.
MKVToolNix GUI: executing actions: Windows only: added a new type: executing a PowerShell script. Either an existing script file can be selected or custom PowerShell script code entered in a small editor. The executed script has access to all MTX_… variables through the environment, e.g. $env:MTX_DESTINATION_FILE_BASE_NAME. Workaround for the problems talked about in #6254.
MKVToolNix GUI: job queue: added a context menu for opening copies of the selected queue jobs in the multiplexer as new settings there without removing the queue jobs. Implements #6255.
MKVToolNix GUI: job queue: added a search functionality for jobs that searches in job descriptions, outputs, warnings & errors. Implements #6256.
Bug fixes
command-line tools: Windows: switched to Boost’s UTF-8 code-conversion facet (boost::locale::utf8_codecvt) from std::utf8_codecvt included in MingW. This seems to fix an issue with converting certain high code point from wchar_t to char (from UTF-32/16 to UTF-8), preventing interesting exceptions from being thrown. Fixes #6257.
mkvmerge: AAC: fixed mis-detection of ADTS streams not starting on a frame boundary. Fixes regression starting with v87 when fixing AAC LATM config not being parsed if it wasn’t present in the first AAC frame. Patch by Corticalcode. Fixes #6196.
mkvmerge: MPEG TS reader: under certain rare conditions mkvmerge was skipping a certain amount of content at the start of the main M2TS file when reading MPLS playlists. The amount of content skipped proportional to the probe range percentage. This only happened when the source Blu-ray contains HDMV TextST subtitles. Fixes #6269.
MKVToolNix GUI: executing actions configuration, type “play audio file”: fixed audio volume not working since switching to Qt 6 due to its interface taking a float in range 0.0–1.0 instead of the old interface taking an int in range 0–100. Implemented by #6267. Fixes #6266.
MKVToolNix GUI: executing actions: fix backslash handling when parsing a Unix-shell escaped string into separate arguments. The user-visible fix is that the command-line in the “executing actions” dialog will not have the quoting changed in wrong ways by the GUI when the GUI adds another variable upon user request, a regression introduced in v99. Fixes #6253.
Build system changes
all: when building for Windows the programs ImageMagick (executable magick) & Inkscape (executable inkscape) are required in order to build ICOs from SVGs.
macOS: include the app’s supported platform(s) in Info.plist to correctly resolve the app’s Kind as Apple Silicon in System Information. Detected during discussion of #6260.
macOS: updated Qt to 6.11.1. The patch that made building Qt from source possible on macOS 26.4 (by Touchstone64) has been removed as Qt 6.11.1 includes the fix upstream. See #6276.
Here’s MKVToolNix v99. There are a couple of bug fixes & improvements in the GUI & in mkvmerge among with a huge amount of fixes/changes/improvements to the macOS build system. Yes, that’s right, macOS binaries are back.
Thanks to the huge amount of work by two community members, corticalcode & touchstone64 (Graham Thompson), we will once again provide macOS binaries (DMGs) for releases v98 (already available for download) and newer (such as this one, v99). Both have improved the macOS build system significantly, implemented building ARM binaries in addition to Intel binaries (this includes a Universal DMG) and fixing bugs they come across while doing so. I’m very grateful for their work, and the MKVToolNix community as a whole is better off.
The macOS DMGs I’ll host on the project’s home page will be built by aforementioned Graham Thompson, not by me. They’re signed & all the good stuff. You can find details about the certificate used on the authenticity page.
You can download the source code or one of the packages. The Windows packages as well as the Linux AppImage are available already. The other Linux packages & the macOS disk image are still being built and will be available over the course of the next couple of hours.
MKVToolNix GUI: the GUI will now remember the last used directory for selecting audio files for playback in “play audio file” program runners separately from any other “open file”-type situations. This directory will also default to /System/Library/Sounds on macOS now. Implemented by #6213.
MKVToolNix GUI: executing actions → running programs: added new variables: MTX_DESTINATION_FILE_BASE_NAME (the name without the drive letter, path or the suffix; e.b. /movies/A.new.hope.mkv → A.new.hope) and MTX_DESTINATION_FILE_SUFFIX (only the letters after the last ., e.g. /movies/A.new.hope.mkv → mkv). Added examples to all the destination file variables in the popup menu when adding variables in the preferences. Implements parts of #6220.
MKVToolNix GUI: executing actions → running programs: the command-line input widget will now receive focus again after using the popup menu for adding a variable. Implements parts of #6220.
MKVToolNix GUI: executing actions → running programs: the variables will now also be set as environment variables when running a program after a job completes.
MKVToolNix GUI: executing actions → running programs: when using the “Execute now” button for testing the MTX_… variables will be set to the current multiplexer tab’s values for easier testing. Implements parts of #6220.
Bug fixes
mkvmerge: if using legacy font MIME types is off mkvmerge will now remap legacy font MIME types present in source files into the current ones. Patch by corticalcode via #6249.
mkvmerge, mkvpropedit, MKVToolNix GUI’s multiplexer & header editor: on Windows & macOS the MIME type detection will now use the FreeDesktop.org MIME database instead of falling back to file extension-based guesses. This matches how it works on other operating systems. This fixes e.g. OpenType fonts being detected as the legacy type application/vnd.ms-opentype instead of the current IETF RFC, font/otf, no matter what the “use legacy font MIME types” settings in the preferences was set to. Fixes #6240 for Windows; fixes #6248 for macOS. Implemented by corticalcode for macOS in #6250.
MKVToolNix GUI: update checker: fixed a potential attempt to read from an invalid memory address if an error occurred when parsing the XML file retrieved from the official MKVToolNix server.
macOS: GUI: the default audio file for program runners of type “play audio file” has been changed to an AIFF file as Qt’s Multimedia backend routes through Core Audio which doesn’t support WebM/VP8/Vorbis/Opus. Existing configurations will be updated if they point to the prior default WebM audio file. Fixes #6209.
Build system changes
macOS: build.sh: the Qt installation is now done via cmake --install instead of using classic make as the classic Makefiles produced by Qt’s build system are incomplete. Patch by corticalcode. Fixes #6205.
macOS: build.sh: the binaries in the DMG are now stripped of debug symbols. Patch by corticalcode. Fixes #6206.
macOS: build.sh: enabled release build optimizations for dependencies. Patch by corticalcode. Fixes #6207.
macOS: build.sh: disabled use of pkg-config for Qt to prevent linking against installed non-OS libraries such as from Homebrew. Patch by corticalcode. Fixes #6208.
macOS: added support for notarization of a macOS disk image by an Apple developer account. Implementation of #6212 by Touchstone64.
macOS: patch added to make building Qt 6.11 from source possible on macOS 26.4. Patch by Touchstone64.
macOS: additions to DMG package naming including the machine type it targets (arm64 or x86_64) and a revision number (to support re-packaging of an existing MKVToolnix release). For example, MKVToolNix-98.0-1-arm64.dmg would represent the first revision of a DMG package for an Apple Silicon Mac, containing MKVToolNix release 98.0. Implementation by Touchstone64.
macOS: the packaging process now verifies the MKVToolNix source release using the author’s GPG key before packaging. Implementation by Touchstone64.
macOS: the app bundle name has been standardised by removing the version number, so DMG packages will contain ‘MKVToolNix.app’. Implementation by Touchstone64.
macOS: Qt is now built without printing support, reducing the size of the resulting DMG slightly. Implementation by Corticalcode. Implements #6230.
macOS binaries: Thanks to the huge amount of work by two community members, corticalcode & touchstone64 (Graham Thompson), we will once again provide macOS binaries (DMGs) for releases 98 and newer. Both have improved the macOS build system significantly, implemented building ARM binaries in addition to Intel binaries (this includes a Universal DMG) and fixing bugs they come across while doing so. I'm very grateful for their work, and the MKVToolNix community as a whole is better off.
Even though I’ve just released v98.0 & written about dropping macOS support in the second half of 2026 (like
before), this was before I realized that my macOS build environment is currently completely broken. I’ve unsuccessfully tried to fix it for several hours
yesterday, and have been seriously considering giving up for good & letting the previous release be the last one for which I provided macOS builds.
After sleeping over it this is indeed my decision: I will no longer provide macOS binaries starting with yesterday’s release, v98.0.
I’m sorry for the shortened timeline. This was obviously not the plan.
MKVToolNix v98 is now out, again just a pretty small release with just a handful of changes — but why hold off even longer? Who knows when things will pick up again. So here we are!
An important reminder for macOS users: I will stop providing macOS binaries and any kind of support for macOS in the second half of 2026 due to Apple discontinuing support for the Rosetta x86-to-ARM translation system. As my current build process only works on x86 (Intel) macs this will be the end of the line for any kind of mac support for me. There is some community support in the form of third-party builds over on the MKVToolNix forum.
You can download the source code or one of the packages. The Windows packages as well as the Linux AppImage are available already. The other Linux packages & the macOS disk image are still being built and will be available over the course of the next couple of hours.
all: huge update to the Japanese translations which had been not worked on for several years. The program translation is now complete again, the man page translation has been extended as well. Both were reworked in most places. Translations by coolvitto.
GUI: chapter editor: added an option in the “additional modifications” dialog that toggles applying the selected modifications to all currently open chapter editor tabs. Implements #6189.
GUI: macOS: added dock icon progress bar for job queue. Patch by Miklos Juhasz.
Bug fixes
GUI: chapter editor: when renumbering chapters limiting the number of chapters to renumber did not work. Fixes #6199.
GUI: macOS: fixed refreshing widgets after system switches between dark & light modes. Patch by Miklos Juhasz.
Build system changes
The bundled fmt library was updated to v12.1.0, fixing a build issue on FreeBSD. Fixes #6191.
Happy new year everyone. Here’s v97.0 of MKVToolNix, probably the smallest release I’ve ever done with just two NEWS.md entries. But I like to keep up with my ususal schedule, so here we are. Feel free to skip this release if the feature mentioned below is irrelevant for you.
An important note for macOS users: I will stop providing macOS binaries and any kind of support for macOS in the second half of 2026 due to Apple discontinuing support for the Rosetta x86-to-ARM translation system. As my current build process only works on x86 (Intel) macs this will be the end of the line for any kind of mac support for me.
You can download the source code or one of the packages. The Windows packages as well as the Linux AppImage are available already. The other Linux packages & the macOS disk image are still being built and will be available over the course of the next couple of hours.
macOS binaries: I will stop providing macOS binaries and any kind of support for macOS in the second half of 2026 duej to Apple discontinuing support for the Rosetta x86-to-ARM translation system.
Here’s the latest, the greatest (maybe?) release of MKVtoolNix, v96.0. Business as usual: couple of enhancements, couple of bug fixes.
You can download the source code or one of the packages. The Windows packages as well as the Linux AppImage are available already. The other Linux packages & the macOS disk image are still being built and will be available over the course of the next couple of hours.
all programs: added a command-line parameter --no-bom that disables writing byte order marks to text files encoded with one of the UTF variants. Implements #6166.
MKVToolNix GUI: multiplexer: added variable <MTX_CHAPTERS_FILE_NAME> to the “run program after job completion” mechanism containing the absolute path to the chapters file name. Implements #6172.
Bug fixes
mkvmerge: OBU reader: fixed probing files in which the first frame ends after the 1MB mark, which is how big the memory buffer used for probing content is. Fixes #6165.
mkvmerge: VobSub reader: VobSub .idx files that start with a byte-order mark (BOM) are now read again correctly. Fixes #6162.
mkvextract: AV1/IVF: fixed inserting a temporal delimiter OBU at the start of each frame if there is none. Mostly fixes #6120.
mkvextract: AV1/IVF: fixed a potential calculation error when deriving frame rate numerator & denominator from Matroska’s default duration. Part of the fix of #6120.
mkvextract: AV1/IVF: fixed calculation of IVF frame number calculation from Matroska’s frame timestamps by rounding instead of truncating. Part of the fix of #6120.