diff --git a/source/core-developers/action-file-upload-interceptor.md b/source/core-developers/action-file-upload-interceptor.md
index 1c89024..0096c07 100644
--- a/source/core-developers/action-file-upload-interceptor.md
+++ b/source/core-developers/action-file-upload-interceptor.md
@@ -7,8 +7,13 @@
 ---
 
 # Action File Upload Interceptor
+{:.no_toc}
 
-> Available since Struts 6.4.0 as replacement for [File Upload Interceptor](file-upload-interceptor)
+* Will be replaced with the ToC, excluding a header
+{:toc}
+
+Available since Struts 6.4.0 as replacement for [File Upload Interceptor](file-upload-interceptor)
+{:.alert .alert-info}
 
 See [this page](action-file-upload) for more examples and advanced configuration.
 
diff --git a/source/core-developers/file-upload-interceptor.md b/source/core-developers/file-upload-interceptor.md
index cc0dd8a..da96ae1 100644
--- a/source/core-developers/file-upload-interceptor.md
+++ b/source/core-developers/file-upload-interceptor.md
@@ -7,6 +7,10 @@
 ---
 
 # File Upload Interceptor
+{:.no_toc}
+
+* Will be replaced with the ToC, excluding a header
+{:toc}
 
 Since Struts 6.4.0 this interceptor is deprecated, please use [Action File Upload Interceptor](action-file-upload-interceptor) instead!
 {:.alert .alert-warning}
diff --git a/source/core-developers/interceptors.md b/source/core-developers/interceptors.md
index a1d0b52..4145c99 100644
--- a/source/core-developers/interceptors.md
+++ b/source/core-developers/interceptors.md
@@ -111,47 +111,47 @@
 package, then you can use the names below. Otherwise, they must be defined in your package with a name-class pair
 specified in the `<interceptors/>` tag.
 
-| Interceptor                                                                        | Name                      | Description                                                                                                                                                                                                                                                                                    |
-|------------------------------------------------------------------------------------|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| [Action File Upload Interceptor](action-file-upload-interceptor)                   | actionFileUpload          | Available since Struts 6.4.0: an Interceptor that adds easy access to file upload support.                                                                                                                                                                                                     |
-| [Alias Interceptor](alias-interceptor)                                             | alias                     | Converts similar parameters that may be named differently between requests.                                                                                                                                                                                                                    |
-| [Annotation Parameter Filter Interceptor](annotation-parameter-filter-interceptor) | annotationParameterFilter | Annotation based version of [Parameter Filter Interceptor](parameter-filter-interceptor).                                                                                                                                                                                                      |
-| [Annotation Workflow Interceptor](annotation-workflow-interceptor)                 | annotationWorkflow        | Invokes any annotated methods on the action.                                                                                                                                                                                                                                                   |
-| [Chaining Interceptor](chaining-interceptor)                                       | chain                     | Makes the previous Action's properties available to the current Action. Commonly used together with <result type="chain"> (in the previous Action).                                                                                                                                            |
+| Interceptor                                                                        | Name                      | Description                                                                                                                                                                                                                                                                                   |
+|------------------------------------------------------------------------------------|---------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [Action File Upload Interceptor](action-file-upload-interceptor)                   | actionFileUpload          | Available since Struts 6.4.0: an Interceptor that adds easy access to file upload support.                                                                                                                                                                                                    |
+| [Alias Interceptor](alias-interceptor)                                             | alias                     | Converts similar parameters that may be named differently between requests.                                                                                                                                                                                                                   |
+| [Annotation Parameter Filter Interceptor](annotation-parameter-filter-interceptor) | annotationParameterFilter | Annotation based version of [Parameter Filter Interceptor](parameter-filter-interceptor).                                                                                                                                                                                                     |
+| [Annotation Workflow Interceptor](annotation-workflow-interceptor)                 | annotationWorkflow        | Invokes any annotated methods on the action.                                                                                                                                                                                                                                                  |
+| [Chaining Interceptor](chaining-interceptor)                                       | chain                     | Makes the previous Action's properties available to the current Action. Commonly used together with <result type="chain"> (in the previous Action).                                                                                                                                           |
 | [Checckbox Interceptor](checkbox-interceptor)                                      | checkbox                  | Adds automatic checkbox handling code that detect an unchecked checkbox and add it as a parameter with a default (usually 'false') value. Uses a specially named hidden field to detect unsubmitted checkboxes. The default unchecked value is overridable for non-boolean value'd checkboxes. |
-| [Cross-Origin Embedder Policy Interceptor](coep-interceptor)                       | coep                      | Implements the Cross-Origin Embedder Policy on incoming requests used to protect a document from loading any non-same-origin resources which don't explicitly grant the document permission to be loaded.                                                                                      |
-| [Conversion Error Interceptor](conversion-error-interceptor)                       | conversionError           | Adds conversion errors from the ActionContext to the Action's field errors                                                                                                                                                                                                                     |
-| [Cookie Interceptor](cookie-interceptor)                                           | cookie                    | Inject cookie with a certain configurable name / value into action. (Since 2.0.7.)                                                                                                                                                                                                             |
-| [Cookie Provider Interceptor](cookie-provider-interceptor)                         | cookieProvider            | Transfer cookies from action to response (Since 2.3.15.)                                                                                                                                                                                                                                       |
-| [Cross-Origin Opener Policy Interceptor](coop-interceptor)                         | coop                      | Implements the Cross-Origin Opener Policy on incoming requests used to isolate resources against side-channel attacks and information leaks.                                                                                                                                                   |
-| [Create Session Interceptor](create-session-interceptor)                           | createSession             | Create an HttpSession automatically, useful with certain Interceptors that require a HttpSession to work properly (like the TokenInterceptor)                                                                                                                                                  |
-| [Clear Session Interceptor](clear-session-interceptor)                             | clearSession              | This interceptor clears the HttpSession.                                                                                                                                                                                                                                                       |
-| [Content Security Policy Interceptor](csp-interceptor)                             | csp                       | Adds support for Content Security policy.                                                                                                                                                                                                                                                      |
-| [Debugging Interceptor](debugging-interceptor)                                     | debugging                 | Provides several different debugging screens to provide insight into the data behind the page.                                                                                                                                                                                                 |
-| [Default Workflow Interceptor](default-workflow-interceptor)                       | workflow                  | Calls the validate method in your Action class. If Action errors are created then it returns the INPUT view.                                                                                                                                                                                   |
-| [Exception Interceptor](exception-interceptor)                                     | exception                 | Maps exceptions to a result.                                                                                                                                                                                                                                                                   |
-| [Execute and Wait Interceptor](execute-and-wait-interceptor)                       | execAndWait               | Executes the Action in the background and then sends the user off to an intermediate waiting page.                                                                                                                                                                                             |
-| [Fetch Metadata Interceptor](fetch-metadata-interceptor)                           | fetchMetadata             | Implements the Resource Isolation Policies on incoming requests used to protect against CSRF, XSSI, and cross-origin information leaks.                                                                                                                                                        |
-| [File Upload Interceptor](file-upload-interceptor)                                 | fileUpload                | **DEPERECTED** since Struts 6.4.0: an Interceptor that adds easy access to file upload support.                                                                                                                                                                                                |
-| [I18n Interceptor](i18n-interceptor)                                               | i18n                      | Remembers the locale selected for a user's session.                                                                                                                                                                                                                                            |
-| [Logging Interceptor](logging-interceptor)                                         | logger                    | Outputs the name of the Action.                                                                                                                                                                                                                                                                |
-| [Message Store Interceptor](message-store-interceptor)                             | store                     | Store and retrieve action messages / errors / field errors for action that implements ValidationAware interface into session.                                                                                                                                                                  |
-| [Model Driven Interceptor](model-driven-interceptor)                               | modelDriven               | If the Action implements ModelDriven, pushes the getModel Result onto the Value Stack.                                                                                                                                                                                                         |
-| [Multiselect Interceptor](multiselect-interceptor)                                 | multiselect               | Like the checkbox interceptor detects that no value was selected for a field with multiple values (like a select) and adds an empty parameter                                                                                                                                                  |
-| [NoOp Interceptor](no-op-interceptor)                                              | noop                      | Does nothing, just passes invocation further, used in empty stack                                                                                                                                                                                                                              |
-| [Parameter Filter Interceptor](parameter-filter-interceptor)                       | parameterFilter           | Removes parameters from the list of those available to Actions                                                                                                                                                                                                                                 |
-| [Parameters Interceptor](parameters-interceptor)                                   | params                    | Sets the request parameters onto the Action.                                                                                                                                                                                                                                                   |
-| [Parameter Remover Interceptor](parameter-remover-interceptor)                     | paramRemover              | Removes a parameter from parameters map.                                                                                                                                                                                                                                                       |
-| [Prepare Interceptor](prepare-interceptor)                                         | prepare                   | If the Action implements Preparable, calls its prepare method.                                                                                                                                                                                                                                 |
-| [Roles Interceptor](roles-interceptor)                                             | roles                     | Action will only be executed if the user has the correct JAAS role.                                                                                                                                                                                                                            |
-| [Scope Interceptor](scope-interceptor)                                             | scope                     | Simple mechanism for storing Action state in the session or application scope.                                                                                                                                                                                                                 |
-| [Scoped Model Driven Interceptor](scoped-model-driven-interceptor)                 | scopedModelDriven         | If the Action implements ScopedModelDriven, the interceptor retrieves and stores the model from a scope and sets it on the action calling setModel.                                                                                                                                            |
-| [Servlet Config Interceptor](servlet-config-interceptor)                           | servletConfig             | Provide access to Maps representing HttpServletRequest and HttpServletResponse.                                                                                                                                                                                                                |
-| [Static Parameters Interceptor](static-parameters-interceptor)                     | staticParams              | Sets the struts.xml defined parameters onto the action. These are the <param> tags that are direct children of the <action> tag.                                                                                                                                                               |
-| [Timer Interceptor](timer-interceptor)                                             | timer                     | Outputs how long the Action takes to execute (including nested Interceptors and View)                                                                                                                                                                                                          |
-| [Token Interceptor](token-interceptor)                                             | token                     | Checks for valid token presence in Action, prevents duplicate form submission.                                                                                                                                                                                                                 |
-| [Token Session Interceptor](token-session-interceptor)                             | tokenSession              | Same as Token Interceptor, but stores the submitted data in session when handed an invalid token                                                                                                                                                                                               |
-| [Validation Interceptor](validation-interceptor)                                   | validation                | Performs validation using the validators defined in _action_ -validation.xml                                                                                                                                                                                                                   |
+| [Cross-Origin Embedder Policy Interceptor](coep-interceptor)                       | coep                      | Implements the Cross-Origin Embedder Policy on incoming requests used to protect a document from loading any non-same-origin resources which don't explicitly grant the document permission to be loaded.                                                                                     |
+| [Conversion Error Interceptor](conversion-error-interceptor)                       | conversionError           | Adds conversion errors from the ActionContext to the Action's field errors                                                                                                                                                                                                                    |
+| [Cookie Interceptor](cookie-interceptor)                                           | cookie                    | Inject cookie with a certain configurable name / value into action. (Since 2.0.7.)                                                                                                                                                                                                            |
+| [Cookie Provider Interceptor](cookie-provider-interceptor)                         | cookieProvider            | Transfer cookies from action to response (Since 2.3.15.)                                                                                                                                                                                                                                      |
+| [Cross-Origin Opener Policy Interceptor](coop-interceptor)                         | coop                      | Implements the Cross-Origin Opener Policy on incoming requests used to isolate resources against side-channel attacks and information leaks.                                                                                                                                                  |
+| [Create Session Interceptor](create-session-interceptor)                           | createSession             | Create an HttpSession automatically, useful with certain Interceptors that require a HttpSession to work properly (like the TokenInterceptor)                                                                                                                                                 |
+| [Clear Session Interceptor](clear-session-interceptor)                             | clearSession              | This interceptor clears the HttpSession.                                                                                                                                                                                                                                                      |
+| [Content Security Policy Interceptor](csp-interceptor)                             | csp                       | Adds support for Content Security policy.                                                                                                                                                                                                                                                     |
+| [Debugging Interceptor](debugging-interceptor)                                     | debugging                 | Provides several different debugging screens to provide insight into the data behind the page.                                                                                                                                                                                                |
+| [Default Workflow Interceptor](default-workflow-interceptor)                       | workflow                  | Calls the validate method in your Action class. If Action errors are created then it returns the INPUT view.                                                                                                                                                                                  |
+| [Exception Interceptor](exception-interceptor)                                     | exception                 | Maps exceptions to a result.                                                                                                                                                                                                                                                                  |
+| [Execute and Wait Interceptor](execute-and-wait-interceptor)                       | execAndWait               | Executes the Action in the background and then sends the user off to an intermediate waiting page.                                                                                                                                                                                            |
+| [Fetch Metadata Interceptor](fetch-metadata-interceptor)                           | fetchMetadata             | Implements the Resource Isolation Policies on incoming requests used to protect against CSRF, XSSI, and cross-origin information leaks.                                                                                                                                                       |
+| [File Upload Interceptor](file-upload-interceptor)                                 | fileUpload                | **DEPRECTED** since Struts 6.4.0: an Interceptor that adds easy access to file upload support.                                                                                                                                                                                                |
+| [I18n Interceptor](i18n-interceptor)                                               | i18n                      | Remembers the locale selected for a user's session.                                                                                                                                                                                                                                           |
+| [Logging Interceptor](logging-interceptor)                                         | logger                    | Outputs the name of the Action.                                                                                                                                                                                                                                                               |
+| [Message Store Interceptor](message-store-interceptor)                             | store                     | Store and retrieve action messages / errors / field errors for action that implements ValidationAware interface into session.                                                                                                                                                                 |
+| [Model Driven Interceptor](model-driven-interceptor)                               | modelDriven               | If the Action implements ModelDriven, pushes the getModel Result onto the Value Stack.                                                                                                                                                                                                        |
+| [Multiselect Interceptor](multiselect-interceptor)                                 | multiselect               | Like the checkbox interceptor detects that no value was selected for a field with multiple values (like a select) and adds an empty parameter                                                                                                                                                 |
+| [NoOp Interceptor](no-op-interceptor)                                              | noop                      | Does nothing, just passes invocation further, used in empty stack                                                                                                                                                                                                                             |
+| [Parameter Filter Interceptor](parameter-filter-interceptor)                       | parameterFilter           | Removes parameters from the list of those available to Actions                                                                                                                                                                                                                                |
+| [Parameters Interceptor](parameters-interceptor)                                   | params                    | Sets the request parameters onto the Action.                                                                                                                                                                                                                                                  |
+| [Parameter Remover Interceptor](parameter-remover-interceptor)                     | paramRemover              | Removes a parameter from parameters map.                                                                                                                                                                                                                                                      |
+| [Prepare Interceptor](prepare-interceptor)                                         | prepare                   | If the Action implements Preparable, calls its prepare method.                                                                                                                                                                                                                                |
+| [Roles Interceptor](roles-interceptor)                                             | roles                     | Action will only be executed if the user has the correct JAAS role.                                                                                                                                                                                                                           |
+| [Scope Interceptor](scope-interceptor)                                             | scope                     | Simple mechanism for storing Action state in the session or application scope.                                                                                                                                                                                                                |
+| [Scoped Model Driven Interceptor](scoped-model-driven-interceptor)                 | scopedModelDriven         | If the Action implements ScopedModelDriven, the interceptor retrieves and stores the model from a scope and sets it on the action calling setModel.                                                                                                                                           |
+| [Servlet Config Interceptor](servlet-config-interceptor)                           | servletConfig             | Provide access to Maps representing HttpServletRequest and HttpServletResponse.                                                                                                                                                                                                               |
+| [Static Parameters Interceptor](static-parameters-interceptor)                     | staticParams              | Sets the struts.xml defined parameters onto the action. These are the <param> tags that are direct children of the <action> tag.                                                                                                                                                              |
+| [Timer Interceptor](timer-interceptor)                                             | timer                     | Outputs how long the Action takes to execute (including nested Interceptors and View)                                                                                                                                                                                                         |
+| [Token Interceptor](token-interceptor)                                             | token                     | Checks for valid token presence in Action, prevents duplicate form submission.                                                                                                                                                                                                                |
+| [Token Session Interceptor](token-session-interceptor)                             | tokenSession              | Same as Token Interceptor, but stores the submitted data in session when handed an invalid token                                                                                                                                                                                              |
+| [Validation Interceptor](validation-interceptor)                                   | validation                | Performs validation using the validators defined in _action_ -validation.xml                                                                                                                                                                                                                  |
 
 Since 2.0.7, Interceptors and Results with hyphenated names were converted to camelCase. (The former model-driven is
 now modelDriven.) The original hyphenated names are retained as "aliases" until Struts 2.1.0. For clarity,
