October 08, 2026
Foundry Virtual Tabletop - Version 14 - Stable 11 Release Notes
We are excited to announce another update, Foundry VTT Version 14 Stable 11! This release is on the larger side, and in addition to containing numerous small bugfixes it also brings some new and interesting features!
The biggest of these new features is the automatic generation of SSL certificates, taking something that previously required some technical know-how to setup and smoothing out the process considerably. See the Update Highlights section below for more information.
While this is categorized as a stable release there is always a possibility of unexpected bugs or compatibility issues. As with any time you update the core software, be sure to perform a complete backup of your user data to minimize any risk of data loss.
Update Highlights
While some nice quality of life and API improvements are also included in this patch, native HTTPS support is by far the biggest new feature.
Automatic certificate generation
These days, more and more newer browser features and APIs require a secure context. The built-in A/V functionality of Foundry VTT runs on one of these APIs, for example. Configuring your Foundry VTT instance to run in this secure context has typically required some technical knowledge or following somewhat lengthy guides. With this release, a simple one-click workflow handles that whole process for you.
This process still comes with various networking challenges and limitations, but it is now possible for the software to automatically provision a certificate signed by a trusted third-party, non-profit organization, LetsEncrypt. Even if that fails, Foundry VTT will still automatically provision a self-signed certificate for you which offers the same secure context benefits, only without the same level of automatic browser trust.
Foundry VTT has offered the ability to provide your own SSL certificates for many years now, but this can be a rather inconvenient process and was often a significant barrier.
In Version 14 Stable 11, you now have the ability to conveniently generate an SSL certificate right within Foundry VTT, making it much easier to add (optional) native HTTPS support for your games. When this is properly configured, the invitation links that you send to your players will start with HTTPS instead of HTTP and their connections to your server will be encrypted.
To host connections via HTTPS anywhere on the web, an SSL certificate is needed for security. Foundry VTT is no different, but it can now attempt to automatically set one up for you for free by requesting a "signed bare-IP certificate" from a trusted certificate authority (courtesy of a non-profit organization called LetsEncrypt). If this is not successful, Foundry VTT then creates a "self-signed" certificate as a fallback, which works but has some drawbacks.
Known Limitations
This new feature automatically creates your SSL certificate for you which makes things much easier, but there are some limitations based your network and you will likely need to do some additional https://foundryvtt.com/article/port-forwarding. You can use the LetsEncrypt external certificate in the following circumstances:
- IPv4 and UPnP
- Most users (especially in the US) have IPv4 internet, and UPnP is a common form of automatic networking but it may not be available to you. In ideal circumstances, if your router supports UPnP, your instance will be automatically provisioned with a LetsEncrypt certificate with no further work required from you.
- IPv4 and Port Forwarding(most US users)
- In this case, you can generate an SSL certificate from within Foundry VTT, then add an additional explicit port forwarding rule for port 80. You will be required to open port 80 in your firewall as well.
- IPv6 and Port Forwarding
- You can use the external certificate if your ISP provides IPv6 and you have opened port
80&30000in both your router and your operating system's firewall (like WIndows Defender).
Note: As when self-hosting, port forwarding is not possible if your ISP is using something called CGNAT.
If you cannot use the external certificate, Foundry VTT will still automatically create a "self-signed certificate" that will allow HTTPS connections, but your players will see a somewhat scary "back to safety" message when they try to connect which may be undesirable, but can be safely ignored.
Creating the SSL Certificate
First, please remember that it is absolutely not necessary to enable HTTPS and you can continue to run your games exactly like you always have. If you do decide to check it out, though, please read through the information here carefully.
To host your games using HTTPS, you will need to configure the new SSL Certificate settings in the Configuration menu of the Setup screen.
A full Knowledge base article on how to set up this feature is coming soon, so keep an eye out.
New Features
Architecture and Infrastructure
- Consider providing HTTPS natively with both self-signed and CA-provided certificates. (12702)
Applications and User Interface
- Like their more privileged brethren, limited-ownership users are now permitted to use the Draw Result button in roll tables (but only when drawing with replacement). (14214)
- Added a new filter to the Placeable tab that filters out locked or hidden objects. (14460)
- Fixed a bug where the (Un)Locked status of a Region was not accessible in its configuration menu. (14518)
- In the Placeable tab, changed the filters for boolean values (such as Restricts Light/Weather, Is Darkness Source, etc.) from checkboxes to select menus that have the values
Any/Yes/No. This change allows the filters to hide Placeables with negative values. (14791) - Improved the tooltip text for disabled Upload controls in certain contexts. (13100)
- Added the ability to toggle the locked state of popped-out compendiums. (12497)
- Improved invitation links by automatically checking for IPv6 reachability and explicitly labelling the IPv4 link. (14714)
- Improved the logic for determining the IP address/interface so that invitation links now contain a better guess at the local IP. (6555)
Package Development
API Improvements
Applications and User Interface
- Added support to
ContextMenuso that it can now set a configured CSS class. (12854)
Bug Fixes
Documents and Data
- Fixed a bug where Placeables objects were not correctly repositioned when the Scene was resized. (14159)
- Prevented errors that were thrown during
ModifyMovementCostRegionBehaviorTypepreparation in/streamview because movement actions were not initialized. (14778) - Fixed a bug where
RollTableSheet's table-element styling polluted the table elements of drawn results. (13356) - Fixed a bug where
getSubFoldersproduced incorrect result when called on a Compendium Pack's Folder instance. (13397) - Restored the conditional assignment of
Combat#previousso that it can provide better tracking when prior turns have combat events dispatched. (14775) - Fixed a bug where Region shapes were not properly scaled when the Scene was resized. (14158)
- Fixed a bug where
NumberField#_castChangeDeltaalways coercednullto0, even if field was nullable. (14794) - Prevented a race condition involving
[.pageId#anchor]links. (14755) - Fixed a bug where changes to roll-table descriptions could not be saved using the in-editor Save button. (13756)
- Fixed various misspelled icon file names and deleted duplicated icons. (14802)
- Fixed a bug where
ObjectField#cleandid not migrate legacy deletion/replacement keys. (14806) - Fixed a bug where
ForcedReplacementproxy did not trapdeleteProperty. (14808) - Fixed a bug where updating any field in
_statsreset the_stats.createdTimeto the current time. (14812) - Fixed a bug where
ArrayField/SetField#_castChangeDeltadid not castArraydeltas correctly. (14813) - Fixed a bug where attempting to edit a document in a locked Compendium Pack caused the error to be logged twice in the console. (14814)
- Fixed a bug where
ForcedReplacementdid not always fully replace embedded collections as expected. (14373)
Applications and User Interface
- Fixed a bug where the
document-tagselement threw an error when attempting to add an embedded document from within a Compendium Pack. (13395) - Fixed a bug where the Force Snap To Grid Vertices toggle did not affect translation handles. (14708)
- Fixed a bug where
TableResultConfigdid not save the range for the result. (14750) - Fixed a bug where
<range-picker>did not retain focus after rendering (with handlebars andAppV2). (13553) - Fixed a bug where
AudioBufferCache#expireunlinked entries but never deleted them from the Map. (14723) - Fixed a bug in
Dialogs where an input of typefilewas stripped of themultipleattribute. (13409) - Fixed a bug where context menus attached to buttons were always automatically disabled because of a core CSS rule that blocked pointer events. (12786)
- Fixed a bug where the Video page type did not provide a scrollbar when one was needed. (14774)
- Fixed a bug where Players were incorrectly able to (un)lock and hide their Tokens via the Tokens tab. (14780)
- Fixed a bug where OS/Browser theme changes overrode the configured theme. (12265)
- Fixed a bug where camera controls were cut-off for un-docked cameras when their nameplates were hidden. (13396)
- Embedded document sheets don't get re-rendered when the pack their parent document is in changes lock state. (11972)
- Fixed a bug where Esc also closed un-docked camera views. (13399)
- Deleting messages from the chat log does not trigger loading previous batches of messages. (11510)
- Fixed a bug where the order of Combats in the Combat Tracker could change after reloading. (14541)
- Fixed a bug with Scene Navigation where the viewed level was not automatically scrolled into view when the Scene was viewed. (14692)
- Fixed a bug where
FilterMenusbecame permanently displayed in certain circumstances. (13884) - Fixed a bug where Active Effects in Compendium Packs do not have the Apply Effect to Actor option available in their configuration dialog. (14817)
The Game Canvas
- Fixed a bug where Token movement waypoint positioning could incorrectly toggle door states. (14737)
- Fixed a bug with the Canvas where the current view position and initial view position were not adjusted when the Scene was resized. (14533)
- Fixed a bug where Token visibility was not updated immediately after changing th Actor's permission to Observer. (14766)
- Prevented
CanvasDocument#_onDeleteOperationfrom throwing an error when the canvas was disabled and consequently thedocuments[0].layerwasnull. (14663) - Fixed a bug where Ambient Light sources emitting darkness did not render in Chromium browsers and could freeze Firefox browsers if they touched a Wall. (14767)
- Fixed a bug that occurred when a player controlled no Tokens where only their Owned Tokens were listeners. Now the Tokens they can Observe are also listeners (14790)
- Fixed a bug where Token bars did not refresh after updating after they were changed via code. (14730)
- Fixed a bug that occurred with Token Vision was enabled where players were incorrectly able to perceive sounds from the perspective of Tokens that did not have vision enabled. (14803)
- Fixed a bug where attempting to import a simple Scene with at least one Wall threw an error and prevented the Scene from rendering until manually refreshed. (14810)
- Fixed a bug where the Teleport Token transition animation played again when the canvas was re-drawn. (14811)
- Fixed a bug where
Actor#getDependentTokenswas incorrectly still returning the Tokens of ephemeral/unpersisted Scenes when called with{concreteOnly: true}. (14830)
Package Development
- Fixed a bug where Compendium Packs did not appear in the declared order when the sorting for
packFolderswas set tomanual. (10542) - Reloaded module with pack folders load unfoldered when root folder deleted . (11800)
- Fixed a bug where a World still loaded incompatible related modules without warning or immediate issue. (13525)
- Fixed a bug where updates to a module or system could leave its set of
documentTypesstale and cached. (14796) - Fixed a bug that occurred while editing modules where users were unable to delete relationships. (13709)
Dice and Cards
- Fixed a bug where deterministic
PoolTerms always incorrectly returned a result equal to the sum of all terms in the pool. (11599)
Localization and Accessibility
- Added missing localization for the text displayed when clicking the “Return to Setup” button. (14666)
- Fixed an incorrect error notification that displayed when the confirmation code of a Restore Backup/Snapshot request was invalid. (14772)
- Fixed localization for
DOCUMENT.TokenPrototypeTokenConfig#_canRender. (14679)
Other Changes
- Prevented the Display Scrolling Text Behavior from throwing an error when it was configured to only fire once. (14742)
- 1ms future chat timestamp renders as “11m 364d ago”. (14664)
- Fixed a bug where
AdventureExportercould silently duplicate an Adventure under a new ID. (14765) - Fixed a bug where menu entries passed incorrect click targets to
_onClickAction. (14315) - Fixed a bug where
registerSheetorunregisterSheetcould create invalid entries that may fail later when it was called with requested types that were not defined in the World. (14798) - Fixed a bug (again) where the same user could log in twice without disconnecting the first session and without displaying a warning message. (14728)
- Fixed a bug with
ContextMenuwhereeventListeners were non-functional when an empty string was passed as the selector. (13781) - Fixed a bug where Application bounds clamping was calculated incorrectly for Applications with a scale value set. (13885)
- Fixed a bug where
setProperty(object, key, undefined)did not set the property if thekeydid not already exist in theobject. Fixed a bug where entries withundefinedvalues in flattened objects disappeared afterexpandObject/expandObjectInPlace. (14809) - Fixed a bug where the Allow Choice option of Regions with the Teleport Token behavior prevented players from teleporting across multiple scenes. (14816)
- Fixed a bug where errors during database operations could put the server document cache into an invalid state. (14820)
- Fixed a bug where
RegionBehavior#activewas still true whenBEHAVIOR_DEACTIVATEDwas triggered during Scene deletion. (14829)
Documentation Improvements
The Game Canvas
- Fixed a bug where
VisionMode#animatewas a property of type(this: PointVisionSource, dt: number) => voidinstead of an instance method. (13227)