diff --git a/docs/reference/scripting-languages/painless/how-painless-dispatches-function.md b/docs/reference/scripting-languages/painless/how-painless-dispatches-function.md
index 9dc2c3697610d..70a2c7f54e9be 100644
--- a/docs/reference/scripting-languages/painless/how-painless-dispatches-function.md
+++ b/docs/reference/scripting-languages/painless/how-painless-dispatches-function.md
@@ -23,15 +23,9 @@ Before diving into the dispatch process, here a brief definition of the main con
* **Arity:** The number of parameters the method accepts. In `s.foo(a, b)` the arity is 2
* **Dispatch:** The process of determining which method implementation to execute based on the receiver, name, and arity
-:::{image} images/painless-method-dispatching.png
-:alt: Flowchart showing five steps: s.foo, receiver, name, arity, and execute method
-:width: 250px
-:::
-
- B[Receiver: type of 's']
+ A[s.foo(a, b)] --> B[Receiver: type of 's']
B --> C[Name: method 'foo']
C --> D[Arity: 2 parameters]
D --> E[Execute method]
@@ -41,9 +35,7 @@ flowchart TD
style C fill:#F5F7FA,stroke:#101C3F,color:#101C3F
style D fill:#F5F7FA,stroke:#101C3F,color:#101C3F
style E fill:#02BCB7,color:#fff
-:::
--->
-
+```
## Why method dispatch matters
diff --git a/docs/reference/scripting-languages/painless/images/painless-compilation-process.png b/docs/reference/scripting-languages/painless/images/painless-compilation-process.png
deleted file mode 100644
index f0d3e86ca4002..0000000000000
Binary files a/docs/reference/scripting-languages/painless/images/painless-compilation-process.png and /dev/null differ
diff --git a/docs/reference/scripting-languages/painless/images/painless-integration-points.png b/docs/reference/scripting-languages/painless/images/painless-integration-points.png
deleted file mode 100644
index 64f5e831486ff..0000000000000
Binary files a/docs/reference/scripting-languages/painless/images/painless-integration-points.png and /dev/null differ
diff --git a/docs/reference/scripting-languages/painless/images/painless-method-dispatching.png b/docs/reference/scripting-languages/painless/images/painless-method-dispatching.png
deleted file mode 100644
index c7464a239f8fe..0000000000000
Binary files a/docs/reference/scripting-languages/painless/images/painless-method-dispatching.png and /dev/null differ
diff --git a/docs/reference/scripting-languages/painless/images/painless-operator-categories.png b/docs/reference/scripting-languages/painless/images/painless-operator-categories.png
deleted file mode 100644
index 8795d875606b1..0000000000000
Binary files a/docs/reference/scripting-languages/painless/images/painless-operator-categories.png and /dev/null differ
diff --git a/docs/reference/scripting-languages/painless/painless-language-specification.md b/docs/reference/scripting-languages/painless/painless-language-specification.md
index dd29b12df4e6a..fdd71b34bddbf 100644
--- a/docs/reference/scripting-languages/painless/painless-language-specification.md
+++ b/docs/reference/scripting-languages/painless/painless-language-specification.md
@@ -28,12 +28,7 @@ For information about basic constructs that Painless and Java share, refer to co
Painless scripts are parsed and compiled using the [ANTLR4](https://www.antlr.org/) and [ASM](https://asm.ow2.org/) libraries. Scripts are compiled directly into Java Virtual Machine (JVM) bytecode and executed against a standard JVM.
-:::{image} images/painless-compilation-process.png
-:alt: Painless compilation process
-:::
-
- B[ANTLR4 & ASM
parsing & compilation]
B --> C[JVM Bytecode]
@@ -48,8 +43,7 @@ flowchart LR
class B lightTeal
class C lightPoppy
class D pink
-:::
--->
+```
### Step breakdown:
@@ -73,16 +67,12 @@ This context-aware design allows Painless to optimize performance and security f
Understanding context-syntax relationships is essential for effective Painless development. For detailed information about context-syntax patterns and practical examples, refer to [Painless syntax-context bridge](docs-content://explore-analyze/scripting/painless-syntax-context-bridge.md).
-:::{image} images/painless-integration-points.png
-:alt: Painless integration-points
-:::
-Double-click to expand the image.
-
- B[Dev Tools Console]
+ A[Painless Scripts] --> B[Dev Tools Console test link]
+ link B "docs-content://explore-analyze/query-filter/tools/console.md" _blank
A --> C[Ingest Pipelines]
+ link C "https://www.elastic.co/docs/manage-data/ingest/transform-enrich/ingest-pipelines" "Elasticsearch Ingest Pipelines"
A --> D[Update API]
A --> E[Search Queries]
A --> F[Runtime Fields]
@@ -115,9 +105,7 @@ flowchart TD
style G1 fill:#F990C6,color:#000
style H1 fill:#7DD3D0,color:#000
style I1 fill:#A1D1FF,color:#000
-:::
--->
-
+```
### Where to write Painless scripts:
diff --git a/docs/reference/scripting-languages/painless/painless-operators.md b/docs/reference/scripting-languages/painless/painless-operators.md
index 852f1d3b38a6a..b0ba6defeae15 100644
--- a/docs/reference/scripting-languages/painless/painless-operators.md
+++ b/docs/reference/scripting-languages/painless/painless-operators.md
@@ -20,13 +20,7 @@ Painless operators use Java-like syntax with {{es}} specific enhancements such a
Painless organizes operators into five functional categories based on their purpose.
-:::{image} images/painless-operator-categories.png
-:alt: Painless operator categories
-:::
-Double-click to expand the image.
-
-
-
+```
### General operators