diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index ef1a64748..db104a87d 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,5 +1,11 @@
# Changelog
+## [Unreleased]
+
+### Removed
+* Remove `docs/Dockerfile` (used for mybinder.org Binder integration) and mybinder badge links from documentation pages. The Binder integration relied on a deprecated .NET 7 SDK image and a deprecated `Microsoft.dotnet-interactive` version; mybinder.org support is discontinued.
+* Remove `.ipynb` (Jupyter Notebook) "run in notebook" badge links from all documentation pages and delete `docs/img/badge-notebook.svg`. The links linked to `.ipynb` outputs generated by fsdocs, but .NET Interactive (which powered those notebooks) is deprecated and has no current replacement. The `.ipynb` output format itself is unchanged.
+
## [22.1.0] - 2026-05-22
### Changed
diff --git a/docs/Dockerfile b/docs/Dockerfile
deleted file mode 100644
index 989c9abb2..000000000
--- a/docs/Dockerfile
+++ /dev/null
@@ -1,29 +0,0 @@
-FROM mcr.microsoft.com/dotnet/sdk:7.0
-
-RUN apt-get update \
- && apt-get -y upgrade \
- && apt-get -y install python3 python3-pip python3-dev ipython3
-
-RUN python3 -m pip install --no-cache-dir notebook jupyterlab
-
-ARG NB_USER=fsdocs-user
-ARG NB_UID=1000
-ENV USER ${NB_USER}
-ENV NB_UID ${NB_UID}
-ENV HOME /home/${NB_USER}
-
-RUN adduser --disabled-password \
- --gecos "Default user" \
- --uid ${NB_UID} \
- ${NB_USER}
-
-COPY . ${HOME}
-USER root
-RUN chown -R ${NB_UID} ${HOME}
-USER ${NB_USER}
-
-ENV PATH="${PATH}:$HOME/.dotnet/tools/"
-
-RUN dotnet tool install --global Microsoft.dotnet-interactive --version 1.0.410202
-
-RUN dotnet-interactive jupyter install
diff --git a/docs/apidocs.fsx b/docs/apidocs.fsx
index e2fc1636c..4ec506723 100644
--- a/docs/apidocs.fsx
+++ b/docs/apidocs.fsx
@@ -27,9 +27,7 @@ index: 7
let root = "C:\\"
(**
-[](https://mybinder.org/v2/gh/fsprojects/fsharp.formatting/gh-pages?filepath={{fsdocs-source-basename}}.ipynb)
-[]({{root}}/{{fsdocs-source-basename}}.fsx)
-[]({{root}}/{{fsdocs-source-basename}}.ipynb)
+[]({{root}}/{{fsdocs-source-basename}}.fsx)
API Documentation Generation
====================================
@@ -194,7 +192,6 @@ module Forest =
///
let findSquirrels (limit : int) = []
-
(** You can find the correct value for `cref` in the generated `.xml` documentation file (this will be generated alongside the assembly's `.dll``).
You can also omit the `cref`'s arguments, and `fsdocs` will make an attempt to find the first member that matches.
@@ -207,7 +204,6 @@ For example:
If the member cannot be found, a link to the containing module/type will be used instead.
*)
-
(**
### Classic XMl Doc Comments: Excluding APIs from the docs
@@ -363,7 +359,6 @@ module Bar2 =
(**
-
## Building library documentation programmatically
You can build library documentation programmatically using the functionality
diff --git a/docs/codeformat.fsx b/docs/codeformat.fsx
index fe55d5274..23361d528 100644
--- a/docs/codeformat.fsx
+++ b/docs/codeformat.fsx
@@ -22,9 +22,7 @@ index: 1
#endif // IPYNB
(**
-[](https://mybinder.org/v2/gh/fsprojects/fsharp.formatting/gh-pages?filepath={{fsdocs-source-basename}}.ipynb)
-[]({{root}}/{{fsdocs-source-basename}}.fsx)
-[]({{root}}/{{fsdocs-source-basename}}.ipynb)
+[]({{root}}/{{fsdocs-source-basename}}.fsx)
Code formatting
==============================
@@ -77,7 +75,6 @@ A single source file can include multiple snippets using the same formatting tag
as those used on [fssnip.net](http://www.fssnip.net) as documented in the
[about page](http://www.fssnip.net/pages/About).
-
Working with returned tokens
----------------------------
diff --git a/docs/content.fsx b/docs/content.fsx
index 3b682e069..e3f8af45f 100644
--- a/docs/content.fsx
+++ b/docs/content.fsx
@@ -21,11 +21,8 @@ index: 6
#r "nuget: FSharp.Formatting,{{fsdocs-package-version}}"
#endif // IPYNB
-
(**
-[](https://mybinder.org/v2/gh/fsprojects/fsharp.formatting/gh-pages?filepath={{fsdocs-source-basename}}.ipynb)
-[]({{root}}/{{fsdocs-source-basename}}.fsx)
-[]({{root}}/{{fsdocs-source-basename}}.ipynb)
+[]({{root}}/{{fsdocs-source-basename}}.fsx)
Creating Content
===================================
@@ -225,11 +222,6 @@ of the document is placed.
To generate .ipynb output for each script and markdown file, add a `_template.ipynb`, usually empty. Substitutions are
applied to this template.
-To add a `mybinder` badge to your generated notebook, ensure you have a `Dockerfile` and `NuGet.config`
-in your `docs` directory and use text like this:
-
- [](https://mybinder.org/v2/gh/fsprojects/FSharp.Formatting/gh-pages?filepath=literate.ipynb)
-
## Generating Script outputs
To generate .fsx output for each script and markdown file, add a `_template.fsx`, usually empty. Substitutions are
diff --git a/docs/evaluation.fsx b/docs/evaluation.fsx
index 34895aee7..a55483f21 100644
--- a/docs/evaluation.fsx
+++ b/docs/evaluation.fsx
@@ -22,13 +22,10 @@ index: 8
#endif // IPYNB
(**
-[](https://mybinder.org/v2/gh/fsprojects/fsharp.formatting/gh-pages?filepath={{fsdocs-source-basename}}.ipynb)
-[]({{root}}/{{fsdocs-source-basename}}.fsx)
-[]({{root}}/{{fsdocs-source-basename}}.ipynb)
+[]({{root}}/{{fsdocs-source-basename}}.fsx)
# Embedding script output
-
For literate F# scripts, you may embed the result of running the script as part of the literate output.
This is a feature of the functions discussed in [literate programming](literate.html) and
it is implemented using the [F# Compiler service](http://fsharp.github.io/FSharp.Compiler.Service/).
@@ -51,7 +48,6 @@ To include the a formatted value use ``include-it``:
(*** include-it ***)
-
To include the meta output of F# Interactive processing such as type signatures use `(*** include-fsi-output ***)`:
let test = 40 + 3
diff --git a/docs/img/badge-binder.svg b/docs/img/badge-binder.svg
deleted file mode 100644
index 8df9f49a7..000000000
--- a/docs/img/badge-binder.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/img/badge-notebook.svg b/docs/img/badge-notebook.svg
deleted file mode 100644
index a001b5449..000000000
--- a/docs/img/badge-notebook.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/literate.fsx b/docs/literate.fsx
index f456d0d00..a22907a23 100644
--- a/docs/literate.fsx
+++ b/docs/literate.fsx
@@ -21,11 +21,8 @@ index: 4
#r "nuget: FSharp.Formatting,{{fsdocs-package-version}}"
#endif // IPYNB
-
(**
-[](https://mybinder.org/v2/gh/fsprojects/fsharp.formatting/gh-pages?filepath={{fsdocs-source-basename}}.ipynb)
-[]({{root}}/{{fsdocs-source-basename}}.fsx)
-[]({{root}}/{{fsdocs-source-basename}}.ipynb)
+[]({{root}}/{{fsdocs-source-basename}}.fsx)
Literate Scripts
================
diff --git a/docs/markdown.fsx b/docs/markdown.fsx
index 13953676b..7a80ab73e 100644
--- a/docs/markdown.fsx
+++ b/docs/markdown.fsx
@@ -18,11 +18,8 @@ index: 2
#r "nuget: FSharp.Formatting,{{fsdocs-package-version}}"
#endif // IPYNB
-
(**
-[](https://mybinder.org/v2/gh/fsprojects/fsharp.formatting/gh-pages?filepath={{fsdocs-source-basename}}.ipynb)
-[]({{root}}/{{fsdocs-source-basename}}.fsx)
-[]({{root}}/{{fsdocs-source-basename}}.ipynb)
+[]({{root}}/{{fsdocs-source-basename}}.fsx)
Markdown parser
==============================
@@ -37,7 +34,6 @@ First, we need to load the assembly and open the necessary namespaces:
open FSharp.Formatting.Markdown
open FSharp.Formatting.Common
-
(**
Parsing documents
-----------------
diff --git a/docs/upgrade.md b/docs/upgrade.md
index c65a4980a..2b110a758 100644
--- a/docs/upgrade.md
+++ b/docs/upgrade.md
@@ -47,9 +47,7 @@ Here are the typical steps to upgrade a repo based on `ProjectScaffold` to use `
7. Consider creating `docs\_template.fsx` and `docs\_template.ipynb` to enable co-generation of F# scripts and F# notebooks.
- If you add support for notebooks and scripts, consider adding mybinder links to each of your literate executable content pages. For example [like this](https://github.com/fsprojects/FSharp.Formatting/blob/master/docs/literate.fsx#L19).
-
- Also add load sections to make sure your notebooks and scripts contain the right content to load packages out of repo. For example [like this](https://github.com/fsprojects/FSharp.Formatting/blob/master/docs/literate.fsx#L1).
+ Add load sections to make sure your notebooks and scripts contain the right content to load packages out of repo. For example [like this](https://github.com/fsprojects/FSharp.Formatting/blob/master/docs/literate.fsx#L1).
Sample commands:
diff --git a/src/fsdocs-tool/fsdocs-tool.fsproj b/src/fsdocs-tool/fsdocs-tool.fsproj
index a95ff4927..e3168ad0b 100644
--- a/src/fsdocs-tool/fsdocs-tool.fsproj
+++ b/src/fsdocs-tool/fsdocs-tool.fsproj
@@ -33,7 +33,6 @@
-